]> git.tdb.fi Git - libs/game.git/commitdiff
Add a transform propagator to stages by default
authorMikko Rasa <tdb@tdb.fi>
Tue, 24 Jan 2023 13:01:17 +0000 (15:01 +0200)
committerMikko Rasa <tdb@tdb.fi>
Tue, 24 Jan 2023 13:01:17 +0000 (15:01 +0200)
This is possible now that system dependencies have been implemented.

examples/bassteroids/source/bassteroids.cpp
source/game/director.cpp

index 5e9d929dea217acd12bf87950919849ce3c0bbbc..e443d5e35cc830bd28d570001452ef1eae8ccea8 100644 (file)
@@ -2,7 +2,6 @@
 #include <msp/game/root.h>
 #include <msp/game/stage.h>
 #include <msp/game/transform.h>
-#include <msp/game/transformpropagator.h>
 #include "controls.h"
 #include "damagedealer.h"
 #include "gamecontroller.h"
@@ -31,7 +30,6 @@ Bassteroids::Bassteroids(int, char **):
        game_stage.add_system<GameController>();
        game_stage.add_system<Physics>();
        game_stage.add_system<DamageDealer>();
-       game_stage.add_system<Game::TransformPropagator>();
        player_controller = &game_stage.add_system<PlayerController>();
 
        event_observer.observe<GameView::Events::PlayerArrived>([this](auto &e){ player_arrived(e); });
index 31d20a947e856f67d6ec3136d930e6f82e52cada..ef906c3c224744e2e104706a7baf08b48e653b18 100644 (file)
@@ -4,6 +4,7 @@
 #include "component.h"
 #include "entity.h"
 #include "stage.h"
+#include "transformpropagator.h"
 
 using namespace std;
 
@@ -28,9 +29,10 @@ Director::~Director()
 
 Stage &Director::create_stage()
 {
-       stages.emplace_back(std::make_unique<Stage>(std::ref(reflector), std::ref(resources)));
-       event_source.emit<Events::StageCreated>(std::ref(*stages.back()));
-       return *stages.back();
+       Stage &stage = *stages.emplace_back(std::make_unique<Stage>(std::ref(reflector), std::ref(resources)));
+       stage.add_system<TransformPropagator>();
+       event_source.emit<Events::StageCreated>(std::ref(stage));
+       return stage;
 }
 
 void Director::activate_stage(Stage &s)