diff --git a/.efrocachemap b/.efrocachemap index c5a2542a..75ad56fa 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -3995,26 +3995,26 @@ "assets/src/ba_data/python/ba/_generated/__init__.py": "https://files.ballistica.net/cache/ba1/ee/e8/cad05aa531c7faf7ff7b96db7f6e", "assets/src/ba_data/python/ba/_generated/enums.py": "https://files.ballistica.net/cache/ba1/b2/e5/0ee0561e16257a32830645239f34", "ballisticacore-windows/Generic/BallisticaCore.ico": "https://files.ballistica.net/cache/ba1/89/c0/e32c7d2a35dc9aef57cc73b0911a", - "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/eb/f0/36d00e5087e6d76d79672b018cc8", - "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/f2/40/9f3c84455aac48d733b30df6b5b7", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2e/d3/aeacdcc49c0a4954afef6755f560", - "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/86/b2/80a8128225146f9515ad45c73de1", - "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ca/59/cbb3fe58cbaabf413340dec12e1a", - "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/ec/94/076e15d29f647b7eb6b902f37198", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/55/77/07c16135863548bf52cd4cf2b0db", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0c/c0/9ccb23d2b58d57d66dfa95346b32", - "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ca/13/d71a2a3d204b62ec4cc23a54e384", - "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/c7/f0/f8c0d2e3162111499f60806b29e6", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/66/82/8fdb20a2f00ea4920ec048193f97", - "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a1/fe/ddc0c3dd421f421494b8e6a0c0cd", - "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/18/7b/3ccdfcb541be04196f489d8517d6", - "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2a/02/d4bb405140bda1c17517717adda8", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/54/74/53d8c3f6b0faa4518dbac71ddff6", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f7/76/1bd98e4b273ef56d9d4051b8e170", - "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/56/18/d70ca8c1ed2ad1c0d05d082da786", - "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/00/11/19c14108e432a9dfca5a9ef32ec2", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/a6/34/d209303ed932c0c1fb1c9b480103", - "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/6b/7b/9f4c160d3d0e6198089898741957", + "build/prefab/full/linux_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/f2/08/c51a835abdfb830800214b5d4ee2", + "build/prefab/full/linux_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/29/86/d7dbef8da1cbf6a2227679baab80", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/0a/a1/7fc60dfb937f3aac13386368dc56", + "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f3/4f/90c63ed7c3ac40a666946d83e61c", + "build/prefab/full/linux_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/02/fc/63aaa0249b27e36c5e33391ac301", + "build/prefab/full/linux_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/d3/ad/5788ce11e94538cea04c48dc3ef0", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/69/12/9dbc452fe20c0f092cf39d50c77f", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/f9/33/cf16d5d6c40efbc185a474b9a701", + "build/prefab/full/mac_arm64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/10/e6/5c8896149d987ea44b4daf8a6b30", + "build/prefab/full/mac_arm64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2f/46/22652fbf1e6d8644381fa6907fa2", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7a/08/d71c945cffd15214e889af6ae86d", + "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/9c/9f/8fdc621bd6589bf85dad88cb1e7c", + "build/prefab/full/mac_x86_64_gui/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/b5/25/f58dd573f8fd0ed2bce92468d2eb", + "build/prefab/full/mac_x86_64_gui/release/ballisticacore": "https://files.ballistica.net/cache/ba1/a2/c8/8abb7f6cf9cca43d4341ba4a0359", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/bc/ed/796ba1a0004b208ac462e7fc022b", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/21/38/dff36d635433f885c46fed606956", + "build/prefab/full/windows_x86_gui/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/a0/e3/8a438b7be97ea9b5e3a3108014bf", + "build/prefab/full/windows_x86_gui/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/f8/8a/33f28e4746adac552e0f65d85b06", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/d0/1b/56a99ad953586b701e238a341d51", + "build/prefab/full/windows_x86_server/release/dist/BallisticaCoreHeadless.exe": "https://files.ballistica.net/cache/ba1/5e/4c/5082c1b732784f50b30d453bbed9", "build/prefab/lib/linux_arm64_gui/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/81/60/37044e17e52ca125c1d48af83d03", "build/prefab/lib/linux_arm64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/fb/47/d505c3feea40888985dd335dc8c4", "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4f/3d/20c78e744ac26a13b7418166d675", @@ -4031,14 +4031,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/3b/79/592c41691e94807d23a783723861", "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/13/d9/36f4cf8527494f419db74ae6c78f", "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ee/e5/7f0677e6fb8d7cfa169930579712", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/f1/e9/a36a2743cc11e888e4d877341724", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/4b/cd/accbffc3bd13d11b4266cad62b44", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/91/c1/fe42b2d9442edffed30f42dbcb1e", - "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/3b/d3/dc7bf863a0f7a986f8c88024cbe7", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/2b/2a/13183d1ae34b5e46baf5c2cd51eb", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/0d/98/59f17b4afffc44e0fdd7bc3fd6de", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/7e/f0/1946bfea786757842991e01e7749", - "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/33/68/499d8ceb69645456ee7e25d93a3c", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/9f/5f/8e3d43b1d7c21afc621998c549da", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/33/b5/23da6c12e960e583cb98072ad637", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/43/04/136cab4b0edf4feafae6c279c977", + "build/prefab/lib/windows/Debug_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/95/f7/41e8fe3e7a8ab6786ee5ed4956c2", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.lib": "https://files.ballistica.net/cache/ba1/b4/a1/2a5fa558d0bdcc34e6c14b819bea", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreGenericInternal.pdb": "https://files.ballistica.net/cache/ba1/1c/c9/aa2a975716b79c79801d61ecfb54", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.lib": "https://files.ballistica.net/cache/ba1/d5/8c/e96d8b68d3c217fa43ce357980df", + "build/prefab/lib/windows/Release_Win32/BallisticaCoreHeadlessInternal.pdb": "https://files.ballistica.net/cache/ba1/0d/d2/3c11d620c85cc775d284cc9d79c1", "src/ballistica/generated/python_embedded/binding.inc": "https://files.ballistica.net/cache/ba1/7d/3e/229a581cb2454ed856f1d8b564a7", "src/ballistica/generated/python_embedded/bootstrap.inc": "https://files.ballistica.net/cache/ba1/98/12/571b2160d69d42580e8f31fa6a8d" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 37f2286c..07b0c8b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.7 (build 20831, api 7, 2022-09-12) +### 1.7.7 (build 20833, api 7, 2022-09-12) - Added `ba.app.meta.load_exported_classes()` for loading classes discovered by the meta subsystem cleanly in a background thread. - Improved logging of missing playlist game types. - Some ba.Lstr functionality can now be used in background threads. diff --git a/assets/src/ba_data/python/ba/_bootstrap.py b/assets/src/ba_data/python/ba/_bootstrap.py index 340dae7a..d31e3ae2 100644 --- a/assets/src/ba_data/python/ba/_bootstrap.py +++ b/assets/src/ba_data/python/ba/_bootstrap.py @@ -38,7 +38,7 @@ def bootstrap() -> None: # Give a soft warning if we're being used with a different binary # version than we expect. - expected_build = 20831 + expected_build = 20833 running_build: int = env['build_number'] if running_build != expected_build: print( diff --git a/ballisticacore-cmake/CMakeLists.txt b/ballisticacore-cmake/CMakeLists.txt index 8311aaf2..77deaf38 100644 --- a/ballisticacore-cmake/CMakeLists.txt +++ b/ballisticacore-cmake/CMakeLists.txt @@ -637,6 +637,8 @@ add_executable(ballisticacore ${BA_SRC_ROOT}/ballistica/scene/scene.h ${BA_SRC_ROOT}/ballistica/scene/scene_stream.cc ${BA_SRC_ROOT}/ballistica/scene/scene_stream.h + ${BA_SRC_ROOT}/ballistica/scene/v1/scene_v1.cc + ${BA_SRC_ROOT}/ballistica/scene/v1/scene_v1.h ${BA_SRC_ROOT}/ballistica/ui/console.cc ${BA_SRC_ROOT}/ballistica/ui/console.h ${BA_SRC_ROOT}/ballistica/ui/root_ui.cc diff --git a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj index ba959b23..8f4b7c5a 100644 --- a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj +++ b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj @@ -628,6 +628,8 @@ + + diff --git a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters index cd16c516..4430ba75 100644 --- a/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters +++ b/ballisticacore-windows/Generic/BallisticaCoreGeneric.vcxproj.filters @@ -1318,6 +1318,12 @@ ballistica\scene + + ballistica\scene\v1 + + + ballistica\scene\v1 + ballistica\ui @@ -1677,6 +1683,7 @@ + diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj index c6adfba9..f1654fcf 100644 --- a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj +++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj @@ -623,6 +623,8 @@ + + diff --git a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters index cd16c516..4430ba75 100644 --- a/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters +++ b/ballisticacore-windows/Headless/BallisticaCoreHeadless.vcxproj.filters @@ -1318,6 +1318,12 @@ ballistica\scene + + ballistica\scene\v1 + + + ballistica\scene\v1 + ballistica\ui @@ -1677,6 +1683,7 @@ + diff --git a/src/ballistica/ballistica.cc b/src/ballistica/ballistica.cc index e8964397..90d12bc4 100644 --- a/src/ballistica/ballistica.cc +++ b/src/ballistica/ballistica.cc @@ -10,11 +10,9 @@ #include "ballistica/assets/assets_server.h" #include "ballistica/audio/audio.h" #include "ballistica/audio/audio_server.h" -#include "ballistica/core/context.h" #include "ballistica/core/fatal_error.h" #include "ballistica/core/logging.h" #include "ballistica/core/thread.h" -#include "ballistica/dynamics/bg/bg_dynamics.h" #include "ballistica/dynamics/bg/bg_dynamics_server.h" #include "ballistica/graphics/graphics_server.h" #include "ballistica/graphics/text/text_graphics.h" @@ -27,12 +25,13 @@ #include "ballistica/platform/stdio_console.h" #include "ballistica/python/python.h" #include "ballistica/scene/scene.h" +#include "ballistica/scene/v1/scene_v1.h" #include "ballistica/ui/ui.h" namespace ballistica { // These are set automatically via script; don't modify them here. -const int kAppBuildNumber = 20831; +const int kAppBuildNumber = 20833; const char* kAppVersion = "1.7.7"; // Our standalone globals. @@ -62,6 +61,7 @@ NetworkReader* g_network_reader{}; NetworkWriter* g_network_writer{}; Platform* g_platform{}; Python* g_python{}; +SceneV1* g_scene_v1{}; StdioConsole* g_stdio_console{}; TextGraphics* g_text_graphics{}; UI* g_ui{}; @@ -104,7 +104,6 @@ auto BallisticaMain(int argc, char** argv) -> int { // Create a Thread wrapper around the current (main) thread. g_main_thread = new Thread(ThreadIdentifier::kMain, ThreadSource::kWrapMain); - Thread::UpdateMainThreadID(); // Bootstrap our Python environment as early as we can (depends on // g_platform for locating OS-specific paths). @@ -131,7 +130,7 @@ auto BallisticaMain(int argc, char** argv) -> int { g_input = new Input(); g_app_internal = CreateAppInternal(); g_logic = new Logic(); - Scene::Init(); + g_scene_v1 = new SceneV1(); if (!HeadlessMode()) { g_bg_dynamics = new BGDynamics(); g_bg_dynamics_server = new BGDynamicsServer(); @@ -140,7 +139,7 @@ auto BallisticaMain(int argc, char** argv) -> int { g_stdio_console = new StdioConsole(); } - // Ok at this point we can be considered up-and-running. + // At this point all of our globals should exist. g_app->is_bootstrapped = true; // ------------------------------------------------------------------------- diff --git a/src/ballistica/ballistica.h b/src/ballistica/ballistica.h index f68705fb..eaab6d8b 100644 --- a/src/ballistica/ballistica.h +++ b/src/ballistica/ballistica.h @@ -125,6 +125,7 @@ extern NetworkReader* g_network_reader; extern NetworkWriter* g_network_writer; extern Platform* g_platform; extern Python* g_python; +extern SceneV1* g_scene_v1; extern StdioConsole* g_stdio_console; extern TextGraphics* g_text_graphics; extern UI* g_ui; diff --git a/src/ballistica/core/types.h b/src/ballistica/core/types.h index 71ab11ef..1519352d 100644 --- a/src/ballistica/core/types.h +++ b/src/ballistica/core/types.h @@ -162,6 +162,7 @@ class RootUI; class RootWidget; class Runnable; class Scene; +class SceneV1; class SceneStream; class ScoreToBeat; class SDLApp; diff --git a/src/ballistica/scene/scene.cc b/src/ballistica/scene/scene.cc index a77ce3ff..2f1acc65 100644 --- a/src/ballistica/scene/scene.cc +++ b/src/ballistica/scene/scene.cc @@ -5,107 +5,18 @@ #include "ballistica/app/app.h" #include "ballistica/assets/component/sound.h" #include "ballistica/audio/audio.h" -#include "ballistica/dynamics/bg/bg_dynamics.h" #include "ballistica/dynamics/dynamics.h" -#include "ballistica/dynamics/part.h" #include "ballistica/graphics/camera.h" -#include "ballistica/graphics/graphics.h" -#include "ballistica/input/device/input_device.h" -#include "ballistica/logic/player.h" #include "ballistica/networking/networking.h" #include "ballistica/python/python_context_call.h" -#include "ballistica/scene/node/anim_curve_node.h" #include "ballistica/scene/node/bomb_node.h" -#include "ballistica/scene/node/combine_node.h" -#include "ballistica/scene/node/explosion_node.h" -#include "ballistica/scene/node/flag_node.h" -#include "ballistica/scene/node/flash_node.h" -#include "ballistica/scene/node/globals_node.h" -#include "ballistica/scene/node/image_node.h" -#include "ballistica/scene/node/light_node.h" -#include "ballistica/scene/node/locator_node.h" -#include "ballistica/scene/node/math_node.h" #include "ballistica/scene/node/node_attribute_connection.h" -#include "ballistica/scene/node/null_node.h" #include "ballistica/scene/node/player_node.h" -#include "ballistica/scene/node/region_node.h" -#include "ballistica/scene/node/scorch_node.h" -#include "ballistica/scene/node/session_globals_node.h" -#include "ballistica/scene/node/shield_node.h" -#include "ballistica/scene/node/sound_node.h" -#include "ballistica/scene/node/spaz_node.h" -#include "ballistica/scene/node/terrain_node.h" #include "ballistica/scene/node/text_node.h" -#include "ballistica/scene/node/texture_sequence_node.h" -#include "ballistica/scene/node/time_display_node.h" #include "ballistica/scene/scene_stream.h" namespace ballistica { -void Scene::Init() { - NodeType* node_types[] = {NullNode::InitType(), - GlobalsNode::InitType(), - SessionGlobalsNode::InitType(), - PropNode::InitType(), - FlagNode::InitType(), - BombNode::InitType(), - ExplosionNode::InitType(), - ShieldNode::InitType(), - LightNode::InitType(), - TextNode::InitType(), - AnimCurveNode::InitType(), - ImageNode::InitType(), - TerrainNode::InitType(), - MathNode::InitType(), - LocatorNode::InitType(), - PlayerNode::InitType(), - CombineNode::InitType(), - SoundNode::InitType(), - SpazNode::InitType(), - RegionNode::InitType(), - ScorchNode::InitType(), - FlashNode::InitType(), - TextureSequenceNode::InitType(), - TimeDisplayNode::InitType()}; - - int next_type_id = 0; - assert(g_app != nullptr); - for (auto* t : node_types) { - g_app->node_types[t->name()] = t; - g_app->node_types_by_id[next_type_id] = t; - t->set_id(next_type_id++); - } - - // Types: I is 32 bit int, i is 16 bit int, c is 8 bit int, - // F is 32 bit float, f is 16 bit float, - // s is string, b is bool. - SetupNodeMessageType("flash", NodeMessageType::kFlash, ""); - SetupNodeMessageType("footing", NodeMessageType::kFooting, "c"); - SetupNodeMessageType("impulse", NodeMessageType::kImpulse, "fffffffffifff"); - SetupNodeMessageType("kick_back", NodeMessageType::kKickback, "fffffff"); - SetupNodeMessageType("celebrate", NodeMessageType::kCelebrate, "i"); - SetupNodeMessageType("celebrate_l", NodeMessageType::kCelebrateL, "i"); - SetupNodeMessageType("celebrate_r", NodeMessageType::kCelebrateR, "i"); - SetupNodeMessageType("knockout", NodeMessageType::kKnockout, "f"); - SetupNodeMessageType("hurt_sound", NodeMessageType::kHurtSound, ""); - SetupNodeMessageType("picked_up", NodeMessageType::kPickedUp, ""); - SetupNodeMessageType("jump_sound", NodeMessageType::kJumpSound, ""); - SetupNodeMessageType("attack_sound", NodeMessageType::kAttackSound, ""); - SetupNodeMessageType("scream_sound", NodeMessageType::kScreamSound, ""); - SetupNodeMessageType("stand", NodeMessageType::kStand, "ffff"); -} - -void Scene::SetupNodeMessageType(const std::string& name, NodeMessageType val, - const std::string& format) { - assert(g_app != nullptr); - g_app->node_message_types[name] = val; - assert(static_cast(val) >= 0); - if (g_app->node_message_formats.size() <= static_cast(val)) { - g_app->node_message_formats.resize(static_cast(val) + 1); - } - g_app->node_message_formats[static_cast(val)] = format; -} - auto Scene::GetSceneStream() const -> SceneStream* { return output_stream_.get(); } diff --git a/src/ballistica/scene/scene.h b/src/ballistica/scene/scene.h index 9f7dbf92..e9557eee 100644 --- a/src/ballistica/scene/scene.h +++ b/src/ballistica/scene/scene.h @@ -15,7 +15,6 @@ namespace ballistica { class Scene : public Object { public: - static auto Init() -> void; explicit Scene(millisecs_t starttime); ~Scene() override; auto Step() -> void; @@ -85,9 +84,6 @@ class Scene : public Object { auto set_globals_node(GlobalsNode* node) -> void { globals_node_ = node; } private: - static auto SetupNodeMessageType(const std::string& name, NodeMessageType val, - const std::string& format) -> void; - GlobalsNode* globals_node_{}; // Current globals node (if any). std::unordered_map > player_nodes_; int64_t stream_id_{-1}; diff --git a/src/ballistica/scene/v1/scene_v1.cc b/src/ballistica/scene/v1/scene_v1.cc new file mode 100644 index 00000000..ad532926 --- /dev/null +++ b/src/ballistica/scene/v1/scene_v1.cc @@ -0,0 +1,96 @@ +// Released under the MIT License. See LICENSE for details. + +#include "ballistica/scene/v1/scene_v1.h" + +#include "ballistica/app/app.h" +#include "ballistica/scene/node/anim_curve_node.h" +#include "ballistica/scene/node/bomb_node.h" +#include "ballistica/scene/node/combine_node.h" +#include "ballistica/scene/node/explosion_node.h" +#include "ballistica/scene/node/flag_node.h" +#include "ballistica/scene/node/flash_node.h" +#include "ballistica/scene/node/globals_node.h" +#include "ballistica/scene/node/image_node.h" +#include "ballistica/scene/node/light_node.h" +#include "ballistica/scene/node/locator_node.h" +#include "ballistica/scene/node/math_node.h" +#include "ballistica/scene/node/null_node.h" +#include "ballistica/scene/node/player_node.h" +#include "ballistica/scene/node/region_node.h" +#include "ballistica/scene/node/scorch_node.h" +#include "ballistica/scene/node/session_globals_node.h" +#include "ballistica/scene/node/shield_node.h" +#include "ballistica/scene/node/sound_node.h" +#include "ballistica/scene/node/spaz_node.h" +#include "ballistica/scene/node/terrain_node.h" +#include "ballistica/scene/node/text_node.h" +#include "ballistica/scene/node/texture_sequence_node.h" +#include "ballistica/scene/node/time_display_node.h" + +namespace ballistica { + +static void SetupNodeMessageType(const std::string& name, NodeMessageType val, + const std::string& format) { + assert(g_app != nullptr); + g_app->node_message_types[name] = val; + assert(static_cast(val) >= 0); + if (g_app->node_message_formats.size() <= static_cast(val)) { + g_app->node_message_formats.resize(static_cast(val) + 1); + } + g_app->node_message_formats[static_cast(val)] = format; +} + +SceneV1::SceneV1() { + NodeType* node_types[] = {NullNode::InitType(), + GlobalsNode::InitType(), + SessionGlobalsNode::InitType(), + PropNode::InitType(), + FlagNode::InitType(), + BombNode::InitType(), + ExplosionNode::InitType(), + ShieldNode::InitType(), + LightNode::InitType(), + TextNode::InitType(), + AnimCurveNode::InitType(), + ImageNode::InitType(), + TerrainNode::InitType(), + MathNode::InitType(), + LocatorNode::InitType(), + PlayerNode::InitType(), + CombineNode::InitType(), + SoundNode::InitType(), + SpazNode::InitType(), + RegionNode::InitType(), + ScorchNode::InitType(), + FlashNode::InitType(), + TextureSequenceNode::InitType(), + TimeDisplayNode::InitType()}; + + int next_type_id = 0; + assert(g_app != nullptr); + for (auto* t : node_types) { + g_app->node_types[t->name()] = t; + g_app->node_types_by_id[next_type_id] = t; + t->set_id(next_type_id++); + } + + // Types: I is 32 bit int, i is 16 bit int, c is 8 bit int, + // F is 32 bit float, f is 16 bit float, + // s is string, b is bool. + SetupNodeMessageType("flash", NodeMessageType::kFlash, ""); + SetupNodeMessageType("footing", NodeMessageType::kFooting, "c"); + SetupNodeMessageType("impulse", NodeMessageType::kImpulse, "fffffffffifff"); + SetupNodeMessageType("kick_back", NodeMessageType::kKickback, "fffffff"); + SetupNodeMessageType("celebrate", NodeMessageType::kCelebrate, "i"); + SetupNodeMessageType("celebrate_l", NodeMessageType::kCelebrateL, "i"); + SetupNodeMessageType("celebrate_r", NodeMessageType::kCelebrateR, "i"); + SetupNodeMessageType("knockout", NodeMessageType::kKnockout, "f"); + SetupNodeMessageType("hurt_sound", NodeMessageType::kHurtSound, ""); + SetupNodeMessageType("picked_up", NodeMessageType::kPickedUp, ""); + SetupNodeMessageType("jump_sound", NodeMessageType::kJumpSound, ""); + SetupNodeMessageType("attack_sound", NodeMessageType::kAttackSound, ""); + SetupNodeMessageType("scream_sound", NodeMessageType::kScreamSound, ""); + SetupNodeMessageType("stand", NodeMessageType::kStand, "ffff"); +} + +} // namespace ballistica diff --git a/src/ballistica/scene/v1/scene_v1.h b/src/ballistica/scene/v1/scene_v1.h new file mode 100644 index 00000000..ffed4963 --- /dev/null +++ b/src/ballistica/scene/v1/scene_v1.h @@ -0,0 +1,16 @@ +// Released under the MIT License. See LICENSE for details. + +#ifndef BALLISTICA_SCENE_V1_SCENE_V1_H_ +#define BALLISTICA_SCENE_V1_SCENE_V1_H_ + +namespace ballistica { + +// Overall scene subsystem. +class SceneV1 { + public: + SceneV1(); +}; + +} // namespace ballistica + +#endif // BALLISTICA_SCENE_V1_SCENE_V1_H_