void Run(IPlayerGimmick playerGimmick) { switch (playerGimmick) { case IWarpPlayerGimmick warpPlayerGimmick: if (!warpPlayerGimmick.KeepPosition) { playerPresenter.MoveTo(warpPlayerGimmick.TargetPosition); } if (!warpPlayerGimmick.KeepRotation) { playerPresenter.RotateTo(warpPlayerGimmick.TargetRotation); } break; case IRespawnPlayerGimmick _: playerPresenter.Respawn(); break; } }
void RegisterPlayerGimmick(IPlayerGimmick playerGimmick) { playerGimmick.OnRun += Run; }