diff --git a/ballisticacore-cmake/.idea/.gitignore b/ballisticacore-cmake/.idea/.gitignore new file mode 100644 index 00000000..0e40fe8f --- /dev/null +++ b/ballisticacore-cmake/.idea/.gitignore @@ -0,0 +1,3 @@ + +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/.name b/ballisticacore-cmake/.idea/.name new file mode 100644 index 00000000..5aa978d3 --- /dev/null +++ b/ballisticacore-cmake/.idea/.name @@ -0,0 +1 @@ +BallisticaCore \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/ballisticacore-cmake.iml b/ballisticacore-cmake/.idea/ballisticacore-cmake.iml new file mode 100644 index 00000000..f08604bb --- /dev/null +++ b/ballisticacore-cmake/.idea/ballisticacore-cmake.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/codeStyles/Project.xml b/ballisticacore-cmake/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..249efa28 --- /dev/null +++ b/ballisticacore-cmake/.idea/codeStyles/Project.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/codeStyles/codeStyleConfig.xml b/ballisticacore-cmake/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/ballisticacore-cmake/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/dictionaries/ericf.xml b/ballisticacore-cmake/.idea/dictionaries/ericf.xml new file mode 100644 index 00000000..ab5debaa --- /dev/null +++ b/ballisticacore-cmake/.idea/dictionaries/ericf.xml @@ -0,0 +1,807 @@ + + + + NOMINMAX + aabb + abcdefghijklmnopqrstuvwxyz + accel + achs + acinstance + ack'ed + acked + acks + aclass + aclass's + addrs + adjoint + adreno + affx + affy + affz + aftx + afty + aftz + aint + airborn + alext + alibaba + allocs + alot + alphaimg + alphapixels + alsa + alsoft + animcurve + aniso + apientry + appconfig + asci + athome + attrobj + automagically + autoselect + avel + avels + axismotion + backgrounded + backgrounding + backtraces + ballistica + ballisticacore + barebones + basetype + basicsize + bastd + bbbb + bbbbb + bbbbbb + bbbbbbb + bcfn + bezanson + bgra + bigendian + bilinear + binpow + bitcount + bitdepth + bitlength + bitmask + bitpos + bitval + blitters + blitting + blockadr + blockheight + blockwidth + bluetooth + blurscale + bodyid + bodypart + bodyptr + bookmarkable + bools + boolval + boostrapping + bootstrappy + bouyancy + bppv + bresult + bridgit + broadcom + bsac + bscfg + bsgaps + bsgdps + bsivu + bsmhi + bsstd + bsuuid + bufs + buildconfig + buildnumber + buttondown + buttonmouse + buttonup + buttonwidget + bwst + calced + calcs + caled + callargs + callbackobj + camalign + camelback + camerashake + capitan + cargs + ccontext + centiseconds + cfgdir + changeme + charn + charnum + charstr + checkboxwidget + chrono + cjief + classdict + clientinfo + cmath + cmds + cmdvals + codewarrior + codewarrior's + cofnodes + collapseable + collidable + columnwidget + connectattr + containerwidget + controlfp + cooldown + coreaudio + coulda + cout + cpel + cpplint + cptr + cpuid + crom + crosswire + crvel + cspr + cstdint + cstdlib + cstring + ctargetref + cubemap + curtime + cutef + cvar + data + datadata + dataout + datas + datav + datavec + dbias + dcol + ddcaps + ddpf + ddpixelformat + ddscaps + ddsd + ddsx + deallocated + deallocation + deek + deinit + demangle + demangled + demangling + denom + dernit + dets + dfff + dfmt + diffbit + dirslash + dlfcn + dlife + dname + dncm + dobell + doraise + dosomething + dout + downsample + dpad + dpads + drpt + dsize + dsound + dstattr + dstnode + dstr + dtest + dummyvalid + dxgi + dynamicdata + echidna + edef + elems + elevenbase + elevenbits + emitfx + emojis + endcall + endl + endline + endtime + entrypoint + ericf + ericsson + erroring + etcdec + etcpack + evals + ewww + ewwww + ewwwww + execinfo + expbool + expl + extrahash + extrascale + exts + facepts + farval + fbos + fdata + fdirx + fdiry + fdirz + fenv + fesetround + ffff + ffffff + fffffff + fffffffffifff + fgets + fifteenbits + fjco + fjcoiwef + flipbit + flopsy + fname + fnode + fnumc + fopen + fourcc + fovs + fovx + fovy + framebuffers + framedef + frameldefs + framerates + fread + freeform + freeifaddrs + freqs + froemling + frompos + frontmost + ftos + ftou + funcname + fval + fvals + gamecenter + gamedata + gamepacket + gamepackets + gameplay + gapless + gasmsg + gbus + gcc's + gearvr + getactivity + getattro + getattrofunc + getbasetime + getbit + getbits + getbitshigh + getcollidemodel + getdata + getifaddrs + getline + getmodel + getnodes + getnodetype + getsession + getsound + gettexture + gettotalrefcount + gles + glext + gpgs + gqualstr + grav + gstate + gthm + guiddef + gusl + gvrrts + hacky + haha + halign + handlemessage + hatmotion + havn't + havnt + healthcare + hexval + highp + highquality + hitchy + hmmm + hostcmd + hostinfo + hotkeys + hotplug + hscrollwidget + htonf + htonl + htons + ibuf + icloud + iconscale + ieeefp + ifaddr + ifaddrs + ifdebug + iiiiisss + ilock + imagewidget + incentivized + inet + initguid + inittab + intercollide + internalformat + interuptions + invote + iserverget + iserverput + isn' + isutf + itemsize + itsclass + itunes + ival + ivals + ized + jacobian + janktastic + janky + jaxis + jcjwf + jmessage + keepalives + keycode + keysyms + keywds + khronos + kickable + kickee + killable + killcount + kmod + kronk + kwds + kxyz + lantinga + largeish + lasti + lastline + leaderboard + leaderboards + lgui + lhalf + libutf + lightshad + linearsize + listobj + llock + logpath + logput + lorient + lowp + lpos + lpsockaddr + lrintf + lscope + lstr + lsync + lvec + lvoid + macos + magoogan + magua + mainmenu + mallocs + maskhigh + maskuv + maximus + maxwidth + mediump + memalign + memchr + memcpy + meshdata + meth + mikirog + millisecs + minelem + minsdl + mipmapcount + mipmaps + mmdevapi + modder + modelview + moduletype + momemtary + msaa + mult + multing + multipass + multisample + mutli + mybuf + mycallback + mynode + mywidget + ndebug + nearval + needwindow + negativex + negativey + negativez + nemanja + ness + netclient + netplay + newchild + newimg + newitem + newnode + nextchar + nitpicky + nlpos + nmemb + nodetype + nominmax + noninfringement + nonlint + noone + nothin + nptr + nsize + ntoa + ntohl + numargs + numc + numentries + nvidia + nyffenegger + objexists + objid + obvs + oculus + oiffsss + oooo + ooooooo + ooooooooo + oooooooooooo + ooooooooooooo + ooooooooooooooo + oooooooooooooooooo + ooooooooooooooooooooooooooooooo + ooooooooooooooooooooooooooooooooooo + ooooooooooooooooooooooooooooooooooooo + openal + opengl + opensl + opmode + ortho + osis + osssssssssss + ostype + ourself + ourstanding + ouya + parameteriv + passcode + pausable + pdst + persp + pflag + pflags + pgmout + pixelformat + playpause + playsound + plen + pname + podcast + podcasts + portaudio + positivex + positivey + positivez + powerup + precalc + predeclare + prefs + preloaded + preloads + premult + printf + printnodes + printobjects + priv + profilers + prog + proj + prolly + psmx + pspec + psps + psrc + pton + ptrs + ptype + pulseaudio + punchmomentumlinear + punchthrough + pushcall + putbits + putbitshigh + pval + pvrtc + pycommand + pyconfig + pycontext + pyhome + pylib + pyobj + pyobjs + qerr + qrcode + qrel + qual + qualcomm + radiusm + raii + rasterizer + reaaaly + readset + realloc + reallocations + realtimers + recalc + recvfrom + redundants + refcounted + refl + rehel + rendererdata + renormalize + rené + reprfunc + resends + resync + retval + rezing + rgui + richcompare + rigth + rootwidget + rowwidget + rresult + rsgc + runnables + rvec + rvel + safecolor + scenetime + screenmessage + scrollwidget + sdl's + sdlk + seqlen + serv + serverget + serverput + sessiondata + sessionglobals + sessiontype + setattro + setattrofunc + setschedparam + sgis + sharedobj + shifthigh + shouldnt + shufflable + signsubscale + simd + sisssssssss + sixteenbits + smoothering + smoothstep + sndio + snorm + sockaddr + soffs + solaris + spaz + spead + sphrand + srcattr + srcsz + sresult + sscanf + ssize + sssi + sssisisis + sssissss + ssss + sssss + sssssi + sssssss + sssssssd + sssssssi + ssssssssssss + standin + startpos + starttime + startx + starty + staticdata + stdint + stephane + stepnum + stepsize + strcasecmp + strchr + strcpy + strdup + stringi + strlen + strtof + subclsssing + subentities + subitems + subplatform + subscale + sval + symbolification + syscalls + talloc + tegra + telefonaktiebolaget + teleported + teleporting + tempvec + texel + texqualstr + textcolor + textwidget + thang + thecommand + theres + threadname + threadtype + tiltage + timedisplay + timeformat + timerlist + timestep + timetype + timetypes + tmpmat + tomer + topos + touchpad + toucs + toutf + trackpad + trackpads + tradeoff + trailcolor + transobj + treturn + trifunovic + trilinear + trimesh + trimeshes + tval + tvos + tweakage + twotimer + twst + typeobj + typestr + uber + uibounds + uiid + uncas + unchecking + underrun + unformatted + unichar + unichars + uninited + unmanaged + unpaused + unplayed + unpremultiply + unsignaled + unstuff + unsynchronized + userspace + uther + uuids + uxxxx + uxxxxxxxx + valign + valobj + vals + valtab + valuedouble + valueint + valuestring + varyings + vbos + vbuf + vdynamic + verts + vidia + vmag + vorbis + vparallel + vprintf + vsync + vsyncing + vtable + vtangential + vulkan + waaah + wack + wakeups + walisser + wasdebug + watte + wdeprecated + weakref + welp + whaaaaaaa + wheee + wheeee + wiimote + wiimotes + windowshade + winmm + winsock + wofocj + wonkiness + worldspace + wunused + xclamped + xdiff + xdist + xinput + xmax + xmin + xmmintrin + xoffset + yclamped + ydiff + ydist + ymax + ymin + yoffs + yooooooo + zmax + zmin + zoffset + zomg + zoomable + zrot + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/inspectionProfiles/Project_Default.xml b/ballisticacore-cmake/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..3f259067 --- /dev/null +++ b/ballisticacore-cmake/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/misc.xml b/ballisticacore-cmake/.idea/misc.xml new file mode 100644 index 00000000..acadce39 --- /dev/null +++ b/ballisticacore-cmake/.idea/misc.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/modules.xml b/ballisticacore-cmake/.idea/modules.xml new file mode 100644 index 00000000..5fb34ea8 --- /dev/null +++ b/ballisticacore-cmake/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/.idea/vcs.xml b/ballisticacore-cmake/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/ballisticacore-cmake/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ballisticacore-cmake/CMakeLists.txt b/ballisticacore-cmake/CMakeLists.txt new file mode 100644 index 00000000..fc1dd9f2 --- /dev/null +++ b/ballisticacore-cmake/CMakeLists.txt @@ -0,0 +1,743 @@ +cmake_minimum_required(VERSION 3.5) +project(BallisticaCore) +include(CheckIncludeFile) +option(HEADLESS "build headless server" OFF) +option(TEST_BUILD "include testing features" OFF) + +# Requiring minimum of C++14 currently. +set(CMAKE_CXX_STANDARD 14) + +# Currently we need to nudge cmake a bit to get it to find homebrew python; +# Sounds like this is a known issue at the moment. +if (APPLE) + # NOTE: after installing mojave, cmake stopped building against homebrew + # stuff correctly (/usr/local/*). Xcode 10 release notes mention /usr/include + # is no longer filled in by the dev tools and perhaps this is related. + # see https://developer.apple.com/documentation + # /xcode_release_notes/xcode_10_release_notes + # anyway, forcing the issue for now; can keep an eye on developments.. + include_directories("/usr/local/include") + link_directories("/usr/local/lib") + + execute_process(COMMAND "python3-config" "--prefix" + OUTPUT_VARIABLE PYPREFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + # running into an oddity where python-libs linking reverts back + # to our system default after a while - trying cache-internal here to fix + set(PYTHON_LIBRARY "${PYPREFIX}/lib/libpython3.7m.dylib" CACHE INTERNAL "") + set(PYTHON_INCLUDE_DIR "${PYPREFIX}/include/python3.7m" CACHE INTERNAL "") +endif () +# NOTE: we technically require 3.7 at this point, but leaving this +# at 3.5 in order to keep build pipeline functioning on things +# like raspberry pi even though the game won't function there until +# 3.7 comes down the pipe. +find_package(PythonLibs 3.5 REQUIRED) + +if (NOT HEADLESS) + find_package(SDL2 QUIET) + if (SDL2_FOUND) + # getting complaint about space at the end of this on ubuntu16 + string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES) + else () + # some cmake systems don't have the SDL2 module; lets + # fall back to quasi-manual search if so.. + # (enough to cover ubuntu 14 and raspbian) + message(STATUS "No SDL2 module present; searching manually") + find_library(SDL2_LIBRARIES SDL2) + if (NOT SDL2_LIBRARIES) + message(FATAL_ERROR "SDL2 library not found") + endif () + set(SDL2_INCLUDE_DIRS "/usr/include/SDL2") + endif () + find_package(OpenGL REQUIRED) + find_package(OpenAL REQUIRED) + if (APPLE) + # on mac this sets an include path that we don't need since + # we're using the system framework... clean it up + set(OPENAL_INCLUDE_DIR "") + endif () + find_library(OGG_LIBRARY ogg) + find_library(VORBISFILE_LIBRARY vorbisfile) + if (NOT OGG_LIBRARY) + message(FATAL_ERROR "ogg library not found") + endif () + if (NOT VORBISFILE_LIBRARY) + message(FATAL_ERROR "vorbisfile library not found") + endif () + set(EXTRA_INCLUDE_DIRS ${OPENGL_INCLUDE_DIRS} + ${OPENAL_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS}) + set(EXTRA_LIBRARIES ogg vorbisfile ${OPENGL_LIBRARIES} ${OPENAL_LIBRARY}) +else () + add_definitions(-DBA_HEADLESS_BUILD=1) +endif () + +if (TEST_BUILD) + add_definitions(-DBA_TEST_BUILD=1) +endif () + +# Currently seeing warnings about parateter order changing in GCC 7.1 +# on Raspberry Pi builds. We never need to care about C++ abi compatability +# so silencing them. Can maybe remove this later if they stop. +if (CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -Wno-psabi") +endif() + +# message("GOT LIBS ${PYTHON_LIBRARIES}") +# message("GOT INC DIRS ${PYTHON_INCLUDE_DIRS}") +# message("GOT SDL INC ${SDL2_INCLUDE_DIRS}") +# message(FATAL_ERROR "SO FAR SO GOOD") + +# get_filename_component(BA_SRC_ROOT ../src ABSOLUTE ) +# include_directories("src") +set(BA_SRC_ROOT src) +include_directories(${BA_SRC_ROOT}) +add_compile_options(-include ballistica/config/config_cmake.h) + +if (CMAKE_BUILD_TYPE MATCHES Debug) + add_definitions(-DBA_DEBUG_BUILD=1) +endif () + +set(ODE_SRC_ROOT ${BA_SRC_ROOT}/external/open_dynamics_engine-ef) + +add_library(ode + ${ODE_SRC_ROOT}/ode/IceAABB.cpp + ${ODE_SRC_ROOT}/ode/IceContainer.cpp + ${ODE_SRC_ROOT}/ode/IceHPoint.cpp + ${ODE_SRC_ROOT}/ode/IceIndexedTriangle.cpp + ${ODE_SRC_ROOT}/ode/IceMatrix3x3.cpp + ${ODE_SRC_ROOT}/ode/IceMatrix4x4.cpp + ${ODE_SRC_ROOT}/ode/IceOBB.cpp + ${ODE_SRC_ROOT}/ode/IcePlane.cpp + ${ODE_SRC_ROOT}/ode/IcePoint.cpp + ${ODE_SRC_ROOT}/ode/IceRandom.cpp + ${ODE_SRC_ROOT}/ode/IceRay.cpp + ${ODE_SRC_ROOT}/ode/IceRevisitedRadix.cpp + ${ODE_SRC_ROOT}/ode/IceSegment.cpp + ${ODE_SRC_ROOT}/ode/IceTriangle.cpp + ${ODE_SRC_ROOT}/ode/IceUtils.cpp + ${ODE_SRC_ROOT}/ode/ode.cpp + ${ODE_SRC_ROOT}/ode/ode_array.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_cylinder_box.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_cylinder_plane.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_cylinder_sphere.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_cylinder_trimesh.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_kernel.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_quadtreespace.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_sapspace.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_space.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_std.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_transform.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_box.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_ccylinder.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_distance.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_plane.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_ray.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_sphere.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_trimesh_trimesh.cpp + ${ODE_SRC_ROOT}/ode/ode_collision_util.cpp + ${ODE_SRC_ROOT}/ode/ode_error.cpp + ${ODE_SRC_ROOT}/ode/ode_export-diff.cpp + ${ODE_SRC_ROOT}/ode/ode_fastdot.cpp + ${ODE_SRC_ROOT}/ode/ode_fastldlt.cpp + ${ODE_SRC_ROOT}/ode/ode_fastlsolve.cpp + ${ODE_SRC_ROOT}/ode/ode_fastltsolve.cpp + ${ODE_SRC_ROOT}/ode/ode_joint.cpp + ${ODE_SRC_ROOT}/ode/ode_lcp.cpp + ${ODE_SRC_ROOT}/ode/ode_mass.cpp + ${ODE_SRC_ROOT}/ode/ode_mat.cpp + ${ODE_SRC_ROOT}/ode/ode_math.cpp + ${ODE_SRC_ROOT}/ode/ode_matrix.cpp + ${ODE_SRC_ROOT}/ode/ode_memory.cpp + ${ODE_SRC_ROOT}/ode/ode_misc.cpp + ${ODE_SRC_ROOT}/ode/ode_obstack.cpp + ${ODE_SRC_ROOT}/ode/ode_quickstep.cpp + ${ODE_SRC_ROOT}/ode/ode_rotation.cpp + ${ODE_SRC_ROOT}/ode/ode_step.cpp + ${ODE_SRC_ROOT}/ode/ode_stepfast.cpp + ${ODE_SRC_ROOT}/ode/ode_timer.cpp + ${ODE_SRC_ROOT}/ode/ode_util.cpp + ${ODE_SRC_ROOT}/ode/OPC_AABBCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_AABBTree.cpp + ${ODE_SRC_ROOT}/ode/OPC_BaseModel.cpp + ${ODE_SRC_ROOT}/ode/OPC_BoxPruning.cpp + ${ODE_SRC_ROOT}/ode/OPC_Collider.cpp + ${ODE_SRC_ROOT}/ode/OPC_HybridModel.cpp + ${ODE_SRC_ROOT}/ode/OPC_LSSCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_MeshInterface.cpp + ${ODE_SRC_ROOT}/ode/OPC_Model.cpp + ${ODE_SRC_ROOT}/ode/OPC_OBBCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_OptimizedTree.cpp + ${ODE_SRC_ROOT}/ode/OPC_PlanesCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_RayCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_SphereCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_SweepAndPrune.cpp + ${ODE_SRC_ROOT}/ode/OPC_TreeBuilders.cpp + ${ODE_SRC_ROOT}/ode/OPC_TreeCollider.cpp + ${ODE_SRC_ROOT}/ode/OPC_VolumeCollider.cpp + ${ODE_SRC_ROOT}/ode/Opcode.cpp + ) +target_include_directories(ode PRIVATE ${ODE_SRC_ROOT}) + +# EWWW; GCC gives us bad mesh collisions with -O3 (and maybe -O2) +# need to finally get to the bottom of this but limiting to -01 for now. +# (-O2 might be safe??... or what about -Os? Should test again.) +if (CMAKE_BUILD_TYPE MATCHES Release) + target_compile_options(ode PRIVATE -O1) +endif () + + +# MakeBob binary. + +add_executable(make_bob + ${BA_SRC_ROOT}/tools/make_bob/make_bob.cc + ${BA_SRC_ROOT}/ballistica/core/exception.cc + ${BA_SRC_ROOT}/tools/make_bob/tri_optimization/ls_vcache_opt.cc + ) +target_include_directories(make_bob PRIVATE + ${BA_SRC_ROOT}/tools/make_bob + ${BA_SRC_ROOT}/external/open_dynamics_engine-ef) + + +# BallisticaCore binary. + +add_executable(ballisticacore + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/bitstream.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/mask.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/mmask.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/mqrspec.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/qrencode.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/qrinput.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/qrspec.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/rscode.c + ${BA_SRC_ROOT}/external/qrencode-3.4.4/qrencode/split.c + #AUTOGENERATED_BEGIN (this section is managed by the "update_project" tool) + ${BA_SRC_ROOT}/ballistica/app/app.cc + ${BA_SRC_ROOT}/ballistica/app/app.h + ${BA_SRC_ROOT}/ballistica/app/app_config.cc + ${BA_SRC_ROOT}/ballistica/app/app_config.h + ${BA_SRC_ROOT}/ballistica/app/app_globals.cc + ${BA_SRC_ROOT}/ballistica/app/app_globals.h + ${BA_SRC_ROOT}/ballistica/app/headless_app.cc + ${BA_SRC_ROOT}/ballistica/app/headless_app.h + ${BA_SRC_ROOT}/ballistica/app/stress_test.cc + ${BA_SRC_ROOT}/ballistica/app/stress_test.h + ${BA_SRC_ROOT}/ballistica/audio/al_sys.cc + ${BA_SRC_ROOT}/ballistica/audio/al_sys.h + ${BA_SRC_ROOT}/ballistica/audio/audio.cc + ${BA_SRC_ROOT}/ballistica/audio/audio.h + ${BA_SRC_ROOT}/ballistica/audio/audio_server.cc + ${BA_SRC_ROOT}/ballistica/audio/audio_server.h + ${BA_SRC_ROOT}/ballistica/audio/audio_source.cc + ${BA_SRC_ROOT}/ballistica/audio/audio_source.h + ${BA_SRC_ROOT}/ballistica/audio/audio_streamer.cc + ${BA_SRC_ROOT}/ballistica/audio/audio_streamer.h + ${BA_SRC_ROOT}/ballistica/audio/ogg_stream.cc + ${BA_SRC_ROOT}/ballistica/audio/ogg_stream.h + ${BA_SRC_ROOT}/ballistica/ballistica.cc + ${BA_SRC_ROOT}/ballistica/ballistica.h + ${BA_SRC_ROOT}/ballistica/config/config_android_amazon.h + ${BA_SRC_ROOT}/ballistica/config/config_android_cardboard.h + ${BA_SRC_ROOT}/ballistica/config/config_android_common.h + ${BA_SRC_ROOT}/ballistica/config/config_android_demo.h + ${BA_SRC_ROOT}/ballistica/config/config_android_generic.h + ${BA_SRC_ROOT}/ballistica/config/config_android_google.h + ${BA_SRC_ROOT}/ballistica/config/config_android_oculus.h + ${BA_SRC_ROOT}/ballistica/config/config_android_template.h + ${BA_SRC_ROOT}/ballistica/config/config_cmake.h + ${BA_SRC_ROOT}/ballistica/config/config_common.h + ${BA_SRC_ROOT}/ballistica/config/config_windows_common.h + ${BA_SRC_ROOT}/ballistica/config/config_windows_generic.h + ${BA_SRC_ROOT}/ballistica/config/config_windows_headless.h + ${BA_SRC_ROOT}/ballistica/config/config_windows_oculus.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_common.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_ios.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_ios_legacy.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_mac.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_mac_headless_legacy.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_mac_legacy.h + ${BA_SRC_ROOT}/ballistica/config/config_xcode_tvos.h + ${BA_SRC_ROOT}/ballistica/core/context.cc + ${BA_SRC_ROOT}/ballistica/core/context.h + ${BA_SRC_ROOT}/ballistica/core/exception.cc + ${BA_SRC_ROOT}/ballistica/core/exception.h + ${BA_SRC_ROOT}/ballistica/core/inline.cc + ${BA_SRC_ROOT}/ballistica/core/inline.h + ${BA_SRC_ROOT}/ballistica/core/logging.cc + ${BA_SRC_ROOT}/ballistica/core/logging.h + ${BA_SRC_ROOT}/ballistica/core/macros.cc + ${BA_SRC_ROOT}/ballistica/core/macros.h + ${BA_SRC_ROOT}/ballistica/core/module.cc + ${BA_SRC_ROOT}/ballistica/core/module.h + ${BA_SRC_ROOT}/ballistica/core/object.cc + ${BA_SRC_ROOT}/ballistica/core/object.h + ${BA_SRC_ROOT}/ballistica/core/thread.cc + ${BA_SRC_ROOT}/ballistica/core/thread.h + ${BA_SRC_ROOT}/ballistica/core/types.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_draw_snapshot.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_fuse.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_fuse.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_fuse_data.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_height_cache.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_height_cache.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_server.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_server.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_shadow.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_shadow.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_shadow_data.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_volume_light.cc + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_volume_light.h + ${BA_SRC_ROOT}/ballistica/dynamics/bg/bg_dynamics_volume_light_data.h + ${BA_SRC_ROOT}/ballistica/dynamics/collision.h + ${BA_SRC_ROOT}/ballistica/dynamics/collision_cache.cc + ${BA_SRC_ROOT}/ballistica/dynamics/collision_cache.h + ${BA_SRC_ROOT}/ballistica/dynamics/dynamics.cc + ${BA_SRC_ROOT}/ballistica/dynamics/dynamics.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/impact_sound_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/impact_sound_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/material.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/material.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_component.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_component.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_condition_node.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_condition_node.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_context.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/material_context.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_message_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_message_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_mod_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_mod_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_user_message_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/node_user_message_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/part_mod_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/part_mod_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/python_call_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/python_call_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/roll_sound_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/roll_sound_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/skid_sound_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/skid_sound_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/material/sound_material_action.cc + ${BA_SRC_ROOT}/ballistica/dynamics/material/sound_material_action.h + ${BA_SRC_ROOT}/ballistica/dynamics/part.cc + ${BA_SRC_ROOT}/ballistica/dynamics/part.h + ${BA_SRC_ROOT}/ballistica/dynamics/rigid_body.cc + ${BA_SRC_ROOT}/ballistica/dynamics/rigid_body.h + ${BA_SRC_ROOT}/ballistica/game/account.cc + ${BA_SRC_ROOT}/ballistica/game/account.h + ${BA_SRC_ROOT}/ballistica/game/client_controller_interface.h + ${BA_SRC_ROOT}/ballistica/game/connection/connection.cc + ${BA_SRC_ROOT}/ballistica/game/connection/connection.h + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_client.cc + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_client.h + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_client_udp.cc + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_client_udp.h + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_host.cc + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_host.h + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_host_udp.cc + ${BA_SRC_ROOT}/ballistica/game/connection/connection_to_host_udp.h + ${BA_SRC_ROOT}/ballistica/game/friend_score_set.h + ${BA_SRC_ROOT}/ballistica/game/game.cc + ${BA_SRC_ROOT}/ballistica/game/game.h + ${BA_SRC_ROOT}/ballistica/game/game_stream.cc + ${BA_SRC_ROOT}/ballistica/game/game_stream.h + ${BA_SRC_ROOT}/ballistica/game/host_activity.cc + ${BA_SRC_ROOT}/ballistica/game/host_activity.h + ${BA_SRC_ROOT}/ballistica/game/player.cc + ${BA_SRC_ROOT}/ballistica/game/player.h + ${BA_SRC_ROOT}/ballistica/game/player_spec.cc + ${BA_SRC_ROOT}/ballistica/game/player_spec.h + ${BA_SRC_ROOT}/ballistica/game/score_to_beat.h + ${BA_SRC_ROOT}/ballistica/game/session/client_session.cc + ${BA_SRC_ROOT}/ballistica/game/session/client_session.h + ${BA_SRC_ROOT}/ballistica/game/session/host_session.cc + ${BA_SRC_ROOT}/ballistica/game/session/host_session.h + ${BA_SRC_ROOT}/ballistica/game/session/net_client_session.cc + ${BA_SRC_ROOT}/ballistica/game/session/net_client_session.h + ${BA_SRC_ROOT}/ballistica/game/session/replay_client_session.cc + ${BA_SRC_ROOT}/ballistica/game/session/replay_client_session.h + ${BA_SRC_ROOT}/ballistica/game/session/session.cc + ${BA_SRC_ROOT}/ballistica/game/session/session.h + ${BA_SRC_ROOT}/ballistica/generic/base64.cc + ${BA_SRC_ROOT}/ballistica/generic/base64.h + ${BA_SRC_ROOT}/ballistica/generic/buffer.h + ${BA_SRC_ROOT}/ballistica/generic/huffman.cc + ${BA_SRC_ROOT}/ballistica/generic/huffman.h + ${BA_SRC_ROOT}/ballistica/generic/json.cc + ${BA_SRC_ROOT}/ballistica/generic/json.h + ${BA_SRC_ROOT}/ballistica/generic/lambda_runnable.h + ${BA_SRC_ROOT}/ballistica/generic/real_timer.h + ${BA_SRC_ROOT}/ballistica/generic/runnable.cc + ${BA_SRC_ROOT}/ballistica/generic/runnable.h + ${BA_SRC_ROOT}/ballistica/generic/timer.cc + ${BA_SRC_ROOT}/ballistica/generic/timer.h + ${BA_SRC_ROOT}/ballistica/generic/timer_list.cc + ${BA_SRC_ROOT}/ballistica/generic/timer_list.h + ${BA_SRC_ROOT}/ballistica/generic/utf8.cc + ${BA_SRC_ROOT}/ballistica/generic/utf8.h + ${BA_SRC_ROOT}/ballistica/generic/utils.cc + ${BA_SRC_ROOT}/ballistica/generic/utils.h + ${BA_SRC_ROOT}/ballistica/graphics/area_of_interest.cc + ${BA_SRC_ROOT}/ballistica/graphics/area_of_interest.h + ${BA_SRC_ROOT}/ballistica/graphics/camera.cc + ${BA_SRC_ROOT}/ballistica/graphics/camera.h + ${BA_SRC_ROOT}/ballistica/graphics/component/empty_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/object_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/object_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/post_process_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/post_process_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/render_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/render_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/shield_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/shield_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/simple_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/simple_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/smoke_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/smoke_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/special_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/special_component.h + ${BA_SRC_ROOT}/ballistica/graphics/component/sprite_component.cc + ${BA_SRC_ROOT}/ballistica/graphics/component/sprite_component.h + ${BA_SRC_ROOT}/ballistica/graphics/frame_def.cc + ${BA_SRC_ROOT}/ballistica/graphics/frame_def.h + ${BA_SRC_ROOT}/ballistica/graphics/framebuffer.h + ${BA_SRC_ROOT}/ballistica/graphics/gl/gl_sys.cc + ${BA_SRC_ROOT}/ballistica/graphics/gl/gl_sys.h + ${BA_SRC_ROOT}/ballistica/graphics/gl/renderer_gl.cc + ${BA_SRC_ROOT}/ballistica/graphics/gl/renderer_gl.h + ${BA_SRC_ROOT}/ballistica/graphics/graphics.cc + ${BA_SRC_ROOT}/ballistica/graphics/graphics.h + ${BA_SRC_ROOT}/ballistica/graphics/graphics_server.cc + ${BA_SRC_ROOT}/ballistica/graphics/graphics_server.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/image_mesh.cc + ${BA_SRC_ROOT}/ballistica/graphics/mesh/image_mesh.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_buffer.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_buffer_base.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_buffer_vertex_simple_full.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_buffer_vertex_smoke_full.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_buffer_vertex_sprite.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_data.cc + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_data.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_data_client_handle.cc + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_data_client_handle.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_index_buffer_16.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_index_buffer_32.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_base.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_dual_texture_full.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_object_split.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_simple_full.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_simple_split.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_smoke_full.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_indexed_static_dynamic.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_non_indexed.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/mesh_renderer_data.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/sprite_mesh.h + ${BA_SRC_ROOT}/ballistica/graphics/mesh/text_mesh.cc + ${BA_SRC_ROOT}/ballistica/graphics/mesh/text_mesh.h + ${BA_SRC_ROOT}/ballistica/graphics/net_graph.cc + ${BA_SRC_ROOT}/ballistica/graphics/net_graph.h + ${BA_SRC_ROOT}/ballistica/graphics/render_command_buffer.h + ${BA_SRC_ROOT}/ballistica/graphics/render_pass.cc + ${BA_SRC_ROOT}/ballistica/graphics/render_pass.h + ${BA_SRC_ROOT}/ballistica/graphics/render_target.cc + ${BA_SRC_ROOT}/ballistica/graphics/render_target.h + ${BA_SRC_ROOT}/ballistica/graphics/renderer.cc + ${BA_SRC_ROOT}/ballistica/graphics/renderer.h + ${BA_SRC_ROOT}/ballistica/graphics/text/font_page_map_data.h + ${BA_SRC_ROOT}/ballistica/graphics/text/text_graphics.cc + ${BA_SRC_ROOT}/ballistica/graphics/text/text_graphics.h + ${BA_SRC_ROOT}/ballistica/graphics/text/text_group.cc + ${BA_SRC_ROOT}/ballistica/graphics/text/text_group.h + ${BA_SRC_ROOT}/ballistica/graphics/text/text_packer.cc + ${BA_SRC_ROOT}/ballistica/graphics/text/text_packer.h + ${BA_SRC_ROOT}/ballistica/graphics/texture/dds.cc + ${BA_SRC_ROOT}/ballistica/graphics/texture/dds.h + ${BA_SRC_ROOT}/ballistica/graphics/texture/ktx.cc + ${BA_SRC_ROOT}/ballistica/graphics/texture/ktx.h + ${BA_SRC_ROOT}/ballistica/graphics/texture/pvr.cc + ${BA_SRC_ROOT}/ballistica/graphics/texture/pvr.h + ${BA_SRC_ROOT}/ballistica/input/device/client_input_device.cc + ${BA_SRC_ROOT}/ballistica/input/device/client_input_device.h + ${BA_SRC_ROOT}/ballistica/input/device/input_device.cc + ${BA_SRC_ROOT}/ballistica/input/device/input_device.h + ${BA_SRC_ROOT}/ballistica/input/device/joystick.cc + ${BA_SRC_ROOT}/ballistica/input/device/joystick.h + ${BA_SRC_ROOT}/ballistica/input/device/keyboard_input.cc + ${BA_SRC_ROOT}/ballistica/input/device/keyboard_input.h + ${BA_SRC_ROOT}/ballistica/input/device/test_input.cc + ${BA_SRC_ROOT}/ballistica/input/device/test_input.h + ${BA_SRC_ROOT}/ballistica/input/device/touch_input.cc + ${BA_SRC_ROOT}/ballistica/input/device/touch_input.h + ${BA_SRC_ROOT}/ballistica/input/input.cc + ${BA_SRC_ROOT}/ballistica/input/input.h + ${BA_SRC_ROOT}/ballistica/input/remote_app.cc + ${BA_SRC_ROOT}/ballistica/input/remote_app.h + ${BA_SRC_ROOT}/ballistica/input/std_input_module.cc + ${BA_SRC_ROOT}/ballistica/input/std_input_module.h + ${BA_SRC_ROOT}/ballistica/math/matrix44f.cc + ${BA_SRC_ROOT}/ballistica/math/matrix44f.h + ${BA_SRC_ROOT}/ballistica/math/point2d.h + ${BA_SRC_ROOT}/ballistica/math/random.cc + ${BA_SRC_ROOT}/ballistica/math/random.h + ${BA_SRC_ROOT}/ballistica/math/rect.h + ${BA_SRC_ROOT}/ballistica/math/vector2f.h + ${BA_SRC_ROOT}/ballistica/math/vector3f.cc + ${BA_SRC_ROOT}/ballistica/math/vector3f.h + ${BA_SRC_ROOT}/ballistica/math/vector4f.h + ${BA_SRC_ROOT}/ballistica/media/component/collide_model.cc + ${BA_SRC_ROOT}/ballistica/media/component/collide_model.h + ${BA_SRC_ROOT}/ballistica/media/component/cube_map_texture.cc + ${BA_SRC_ROOT}/ballistica/media/component/cube_map_texture.h + ${BA_SRC_ROOT}/ballistica/media/component/data.cc + ${BA_SRC_ROOT}/ballistica/media/component/data.h + ${BA_SRC_ROOT}/ballistica/media/component/media_component.cc + ${BA_SRC_ROOT}/ballistica/media/component/media_component.h + ${BA_SRC_ROOT}/ballistica/media/component/model.cc + ${BA_SRC_ROOT}/ballistica/media/component/model.h + ${BA_SRC_ROOT}/ballistica/media/component/sound.cc + ${BA_SRC_ROOT}/ballistica/media/component/sound.h + ${BA_SRC_ROOT}/ballistica/media/component/texture.cc + ${BA_SRC_ROOT}/ballistica/media/component/texture.h + ${BA_SRC_ROOT}/ballistica/media/data/collide_model_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/collide_model_data.h + ${BA_SRC_ROOT}/ballistica/media/data/data_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/data_data.h + ${BA_SRC_ROOT}/ballistica/media/data/media_component_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/media_component_data.h + ${BA_SRC_ROOT}/ballistica/media/data/model_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/model_data.h + ${BA_SRC_ROOT}/ballistica/media/data/model_renderer_data.h + ${BA_SRC_ROOT}/ballistica/media/data/sound_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/sound_data.h + ${BA_SRC_ROOT}/ballistica/media/data/texture_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/texture_data.h + ${BA_SRC_ROOT}/ballistica/media/data/texture_preload_data.cc + ${BA_SRC_ROOT}/ballistica/media/data/texture_preload_data.h + ${BA_SRC_ROOT}/ballistica/media/data/texture_renderer_data.h + ${BA_SRC_ROOT}/ballistica/media/media.cc + ${BA_SRC_ROOT}/ballistica/media/media.h + ${BA_SRC_ROOT}/ballistica/media/media_server.cc + ${BA_SRC_ROOT}/ballistica/media/media_server.h + ${BA_SRC_ROOT}/ballistica/networking/lag_sim.cc + ${BA_SRC_ROOT}/ballistica/networking/lag_sim.h + ${BA_SRC_ROOT}/ballistica/networking/master_server_config.h + ${BA_SRC_ROOT}/ballistica/networking/network_reader.cc + ${BA_SRC_ROOT}/ballistica/networking/network_reader.h + ${BA_SRC_ROOT}/ballistica/networking/network_write_module.cc + ${BA_SRC_ROOT}/ballistica/networking/network_write_module.h + ${BA_SRC_ROOT}/ballistica/networking/networking.cc + ${BA_SRC_ROOT}/ballistica/networking/networking.h + ${BA_SRC_ROOT}/ballistica/networking/networking_sys.h + ${BA_SRC_ROOT}/ballistica/networking/sockaddr.cc + ${BA_SRC_ROOT}/ballistica/networking/sockaddr.h + ${BA_SRC_ROOT}/ballistica/networking/telnet_server.cc + ${BA_SRC_ROOT}/ballistica/networking/telnet_server.h + ${BA_SRC_ROOT}/ballistica/platform/android/amazon/platform_android_amazon.cc + ${BA_SRC_ROOT}/ballistica/platform/android/amazon/platform_android_amazon.h + ${BA_SRC_ROOT}/ballistica/platform/android/android_context.cc + ${BA_SRC_ROOT}/ballistica/platform/android/android_context.h + ${BA_SRC_ROOT}/ballistica/platform/android/android_gl3.c + ${BA_SRC_ROOT}/ballistica/platform/android/android_gl3.h + ${BA_SRC_ROOT}/ballistica/platform/android/cardboard/platform_android_cardboard.cc + ${BA_SRC_ROOT}/ballistica/platform/android/cardboard/platform_android_cardboard.h + ${BA_SRC_ROOT}/ballistica/platform/android/google/connection_to_client_google_play.cc + ${BA_SRC_ROOT}/ballistica/platform/android/google/connection_to_client_google_play.h + ${BA_SRC_ROOT}/ballistica/platform/android/google/connection_to_host_google_play.cc + ${BA_SRC_ROOT}/ballistica/platform/android/google/connection_to_host_google_play.h + ${BA_SRC_ROOT}/ballistica/platform/android/google/platform_android_google.cc + ${BA_SRC_ROOT}/ballistica/platform/android/google/platform_android_google.h + ${BA_SRC_ROOT}/ballistica/platform/android/ifaddrs_android_ext.cc + ${BA_SRC_ROOT}/ballistica/platform/android/ifaddrs_android_ext.h + ${BA_SRC_ROOT}/ballistica/platform/android/platform_android.cc + ${BA_SRC_ROOT}/ballistica/platform/android/platform_android.h + ${BA_SRC_ROOT}/ballistica/platform/android/utf8/checked.h + ${BA_SRC_ROOT}/ballistica/platform/android/utf8/core.h + ${BA_SRC_ROOT}/ballistica/platform/android/utf8/unchecked.h + ${BA_SRC_ROOT}/ballistica/platform/apple/app_delegate.h + ${BA_SRC_ROOT}/ballistica/platform/apple/apple_utils.h + ${BA_SRC_ROOT}/ballistica/platform/apple/platform_apple.cc + ${BA_SRC_ROOT}/ballistica/platform/apple/platform_apple.h + ${BA_SRC_ROOT}/ballistica/platform/apple/scripting_bridge_itunes.h + ${BA_SRC_ROOT}/ballistica/platform/apple/sdl_main_mac.h + ${BA_SRC_ROOT}/ballistica/platform/linux/platform_linux.cc + ${BA_SRC_ROOT}/ballistica/platform/linux/platform_linux.h + ${BA_SRC_ROOT}/ballistica/platform/min_sdl.h + ${BA_SRC_ROOT}/ballistica/platform/oculus/main_rift.cc + ${BA_SRC_ROOT}/ballistica/platform/oculus/oculus_utils.cc + ${BA_SRC_ROOT}/ballistica/platform/oculus/oculus_utils.h + ${BA_SRC_ROOT}/ballistica/platform/platform.cc + ${BA_SRC_ROOT}/ballistica/platform/platform.h + ${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_app.cc + ${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_app.h + ${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_sys.cc + ${BA_SRC_ROOT}/ballistica/platform/sdl/sdl_sys.h + ${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows.cc + ${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows.h + ${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows_oculus.cc + ${BA_SRC_ROOT}/ballistica/platform/windows/platform_windows_oculus.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_activity_data.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_activity_data.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_collide_model.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_collide_model.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_context.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_context.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_context_call.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_context_call.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_data.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_data.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_input_device.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_input_device.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_material.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_material.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_model.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_model.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_node.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_node.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_player.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_player.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_session_data.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_session_data.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_sound.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_sound.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_texture.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_texture.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_timer.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_timer.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_vec3.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_vec3.h + ${BA_SRC_ROOT}/ballistica/python/class/python_class_widget.cc + ${BA_SRC_ROOT}/ballistica/python/class/python_class_widget.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_account.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_account.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_app.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_app.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_gameplay.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_gameplay.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_graphics.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_graphics.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_input.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_input.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_media.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_media.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_networking.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_networking.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_system.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_system.h + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_ui.cc + ${BA_SRC_ROOT}/ballistica/python/methods/python_methods_ui.h + ${BA_SRC_ROOT}/ballistica/python/python.cc + ${BA_SRC_ROOT}/ballistica/python/python.h + ${BA_SRC_ROOT}/ballistica/python/python_command.cc + ${BA_SRC_ROOT}/ballistica/python/python_command.h + ${BA_SRC_ROOT}/ballistica/python/python_context_call.cc + ${BA_SRC_ROOT}/ballistica/python/python_context_call.h + ${BA_SRC_ROOT}/ballistica/python/python_context_call_runnable.h + ${BA_SRC_ROOT}/ballistica/python/python_ref.cc + ${BA_SRC_ROOT}/ballistica/python/python_ref.h + ${BA_SRC_ROOT}/ballistica/python/python_sys.h + ${BA_SRC_ROOT}/ballistica/scene/node/anim_curve_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/anim_curve_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/bomb_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/bomb_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/combine_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/combine_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/explosion_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/explosion_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/flag_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/flag_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/flash_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/flash_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/globals_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/globals_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/image_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/image_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/light_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/light_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/locator_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/locator_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/math_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/math_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/node.h + ${BA_SRC_ROOT}/ballistica/scene/node/node_attribute.cc + ${BA_SRC_ROOT}/ballistica/scene/node/node_attribute.h + ${BA_SRC_ROOT}/ballistica/scene/node/node_attribute_connection.cc + ${BA_SRC_ROOT}/ballistica/scene/node/node_attribute_connection.h + ${BA_SRC_ROOT}/ballistica/scene/node/node_type.h + ${BA_SRC_ROOT}/ballistica/scene/node/null_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/null_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/player_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/player_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/prop_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/prop_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/region_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/region_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/scorch_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/scorch_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/session_globals_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/session_globals_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/shield_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/shield_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/sound_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/sound_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/spaz_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/spaz_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/terrain_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/terrain_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/text_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/text_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/texture_sequence_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/texture_sequence_node.h + ${BA_SRC_ROOT}/ballistica/scene/node/time_display_node.cc + ${BA_SRC_ROOT}/ballistica/scene/node/time_display_node.h + ${BA_SRC_ROOT}/ballistica/scene/scene.cc + ${BA_SRC_ROOT}/ballistica/scene/scene.h + ${BA_SRC_ROOT}/ballistica/ui/console.cc + ${BA_SRC_ROOT}/ballistica/ui/console.h + ${BA_SRC_ROOT}/ballistica/ui/ui.cc + ${BA_SRC_ROOT}/ballistica/ui/ui.h + ${BA_SRC_ROOT}/ballistica/ui/widget/button_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/button_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/check_box_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/check_box_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/column_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/column_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/container_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/container_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/h_scroll_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/h_scroll_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/image_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/image_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/root_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/root_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/row_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/row_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/scroll_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/scroll_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/stack_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/stack_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/text_widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/text_widget.h + ${BA_SRC_ROOT}/ballistica/ui/widget/widget.cc + ${BA_SRC_ROOT}/ballistica/ui/widget/widget.h + #AUTOGENERATED_END + ) + +target_include_directories(ballisticacore PRIVATE + ${PYTHON_INCLUDE_DIRS} + ${BA_SRC_ROOT}/external/open_dynamics_engine-ef + ${BA_SRC_ROOT}/external/qrencode-3.4.4 + ${EXTRA_INCLUDE_DIRS} + ) + +target_link_libraries(ballisticacore PRIVATE + ode pthread ${PYTHON_LIBRARIES} + ${SDL2_LIBRARIES} ${EXTRA_LIBRARIES})