GameController::GameController(Game::Stage &s):
System(s),
- asteroid_setup{ .physical={ .body={ .mass=200 }, .collider={ .type=ColliderType::CIRCLE, .radius=3.0f } },
+ asteroid_setup{ .physical={ .body={ .mass=200, .moment_of_inertia=2160 }, .collider={ .type=ColliderType::CIRCLE, .radius=3.0f } },
+ .hittable={ .damaging=true, .hits={ .max_hits=3, .vulnerable_to=1 }, .damage={ .amount=10, .type=1 }},
.mesh={ .object_name="Asteroid 1.object" }}
{ }
throw logic_error("Unimplemented state");
}
}
+
+void GameController::deferred_tick()
+{
+ System::deferred_tick();
+ erase_if(asteroids, [](Game::Handle<Asteroid> a){ return !a->get_hitpoints()->is_alive(); });
+}