]> git.tdb.fi Git - libs/game.git/blobdiff - examples/bassteroids/source/gamecontroller.cpp
Implement a simple physics system in Bassteroids
[libs/game.git] / examples / bassteroids / source / gamecontroller.cpp
index f32f04b3716908fffec8438537ab2bcf275d4269..05586b0a4618732b4a418cbaa8164c9dca6aaa16 100644 (file)
@@ -8,7 +8,8 @@ using namespace Msp;
 
 GameController::GameController(Game::Stage &s):
        System(s),
-       asteroid_setup{ .mesh = { .object_name = "Asteroid 1.object" }}
+       asteroid_setup{ .physical = { .body = { .mass = 200 }, .collider = { .type = ColliderType::CIRCLE, .radius = 3.0f } },
+               .mesh = { .object_name = "Asteroid 1.object" }}
 { }
 
 void GameController::tick(Time::TimeDelta)
@@ -22,6 +23,7 @@ void GameController::tick(Time::TimeDelta)
                        {
                                asteroids.emplace_back(stage.get_root(), asteroid_setup);
                                asteroids.back()->get_transform()->set_position({ sdist(rng)*32, sdist(rng)*18, 0.0f });
+                               asteroids.back()->get_body()->set_velocity(asteroids.back()->get_transform()->get_position().slice<2>(0)*-0.1f);
                        }
                        state = PLAYING;
                });