private Vector2 UpdateSlomo(GameTime gameTime, Vector2 arenaCenter, Vector2 position) { // camera position if (slomoState != SlomoState.Disabled) { // mouse follow var mousePos = MouseToWorld(new Vector2(Mouse.GetState().X, Mouse.GetState().Y)); var mouseOffset = (arenaCenter - mousePos) * mouseFollowAmount; position -= mouseOffset; // zoom slomoZoomTween.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds); if (slomoZoomTween.Enabled) { AniZoom = slomoZoomTween.CurrentValue; } slomoCameraPosTween.Update((float)gameTime.ElapsedGameTime.TotalMilliseconds); if (slomoCameraPosTween.Enabled) { var factor = slomoCameraPosTween.CurrentValue; var distance = position - arenaCenter; position = arenaCenter + (distance * factor); } if (slomoState == SlomoState.Disabling && !slomoZoomTween.Enabled) { slomoState = SlomoState.Disabled; } } return(position); }
public void SlomoZoomOut() { slomoState = SlomoState.Disabling; float duration = slomoZoomTween.Enabled ? slomoZoomTween.Elapsed : SlomoZoomAniDuration; slomoZoomTween.Animate(AniZoom, NormalZoom, duration); slomoCameraPosTween.Animate(1, 0, duration); }
public void SlomoZoomIn() { slomoState = SlomoState.Enabled; float duration = SlomoZoomAniDuration; if (slomoZoomTween.Enabled) { duration -= slomoZoomTween.Elapsed; } slomoZoomTween.Animate(AniZoom, SlomoZoom, duration); slomoCameraPosTween.Animate(0, 1, duration); }