void Run(IPlayerEffect playerEffect) { switch (playerEffect) { case IWarpPlayerEffect warpPlayerEffect: if (!warpPlayerEffect.KeepPosition) { playerPresenter.MoveTo(warpPlayerEffect.TargetPosition); } if (!warpPlayerEffect.KeepRotation) { playerPresenter.RotateTo(warpPlayerEffect.TargetRotation); } break; case IRespawnPlayerEffect _: playerPresenter.Respawn(); break; case ISetMoveSpeedRatePlayerEffect setMoveSpeedRatePlayerEffect: playerPresenter.SetMoveSpeedRate(setMoveSpeedRatePlayerEffect.MoveSpeedRate); break; case ISetJumpHeightRatePlayerEffect setJumpHeightRatePlayerEffect: playerPresenter.SetJumpSpeedRate(Mathf.Sqrt(setJumpHeightRatePlayerEffect.JumpHeightRate)); break; } }