X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=examples%2Fbassteroids%2Fsource%2Fplayercontroller.cpp;h=cd0c62bad8594b77d0557a299cb964e71b3ef514;hb=47767a381e6bdde03f68efdfc1d8e628c3655019;hp=066b5f24d002b01f5e68824d620753651ba7bf6a;hpb=f11589229323a6919a26f07b2f74bb9ffdd94fb5;p=libs%2Fgame.git diff --git a/examples/bassteroids/source/playercontroller.cpp b/examples/bassteroids/source/playercontroller.cpp index 066b5f2..cd0c62b 100644 --- a/examples/bassteroids/source/playercontroller.cpp +++ b/examples/bassteroids/source/playercontroller.cpp @@ -12,6 +12,7 @@ PlayerController::PlayerController(Game::Stage &s): .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" }} { } @@ -50,11 +51,17 @@ void PlayerController::tick(Time::TimeDelta dt) 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 b){ return !b->get_hitpoints()->is_alive(); }); +} + void PlayerController::fire() { Game::Handle player_tf = player_ship->get_transform();