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)
case LEVEL_START:
defer([this]{
uniform_real_distribution<float> sdist(-1, 1);
+ uniform_real_distribution<float> udist(0, 1);
for(unsigned i=0; i<level+2; ++i)
{
asteroids.emplace_back(stage.get_root(), asteroid_setup);
asteroids.back()->get_transform()->set_position({ sdist(rng)*32, sdist(rng)*18, 0.0f });
+ Geometry::Angle<float> angle = Geometry::Angle<float>::from_turns(udist(rng));
+ float speed = udist(rng)*7;
+ asteroids.back()->get_body()->set_velocity({ cos(angle)*speed, sin(angle)*speed });
}
state = PLAYING;
});