.mesh={ .object_name="Bass guitar.object" },
.speed=12.0f, .turn_rate=4.71f },
bullet_setup{ .physical={ .body={ .mass=0.05f, .moment_of_inertia=0.04f }, .collider={ .type=ColliderType::CIRCLE, .radius=0.2f }},
+ .hittable={ .damaging=true, .hits={ .max_hits=1 }, .damage={ .amount=1, .type=0 }},
.mesh={ .object_name="Quaver.object" }}
-{ }
+{
+ declare_dependency<Game::Transform>(READ_OLD);
+ declare_dependency<RigidBody>(UPDATE);
+}
void PlayerController::set_controls(Controls *c)
{
body->add_torque(angular_vel.radians()*-min(angular_speed.radians()+setup.turn_rate/angular_speed.radians(), 1.0f/dt_secs));
if(controls->fire.was_pressed())
- fire();
+ defer([this]{ fire(); });
controls->reset_edges();
}
+void PlayerController::deferred_tick()
+{
+ System::deferred_tick();
+ erase_if(bullets, [](Game::Handle<Bullet> b){ return !b->get_hitpoints()->is_alive(); });
+}
+
void PlayerController::fire()
{
Game::Handle<Game::Transform> player_tf = player_ship->get_transform();