private void Interpolate(GameTime gameTime)
{
if (Mode == PlayerMode.Normal)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
float delta = elapsed * 60;
float difference = Math.Abs(SimulationState.Position.Y - DisplayState.Position.Y);
if (difference <= 3)
DisplayState.Position.Y = SimulationState.Position.Y;
else
DisplayState.Position.Y += (SimulationState.Position.Y - DisplayState.Position.Y) * delta * .5f;
DisplayState.Position.X = SimulationState.Position.X;
}
else if (Mode == PlayerMode.God)
{
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
float delta = elapsed * 60;
float difference = Vector2.Distance(SimulationState.Position, DisplayState.Position);
if (difference <= 3)
DisplayState.Position = SimulationState.Position;
else
DisplayState.Position += (SimulationState.Position - DisplayState.Position) * delta * .1f;
}
}