Platformer.Camera.PanningDirector.update C# (CSharp) Method

update() public method

public update ( GameTime gameTime ) : void
gameTime Microsoft.Xna.Framework.GameTime
return void
        public override void update(GameTime gameTime)
        {
            if (completed)
                return;

            elapsedTimeS += gameTime.ElapsedGameTime.TotalSeconds;

            if (waiting)
            {
                if (elapsedTimeS > StartDelayS)
                {
                    waiting = false;
                    elapsedTimeS = 0;
                }
            }
            else
            {
                double angle = Math.Atan2(target.getPosition().Y - origin.Y, target.getPosition().X - origin.X);
                double totalDistance = Vector2.Distance(origin, target.getPosition());

                if (!returning)
                {
                    if (elapsedTimeS < travelTimeS)
                    {
                        double currentDistance = totalDistance * (elapsedTimeS / travelTimeS);
                        Camera.X = origin.X + (float)(Math.Cos(angle) * currentDistance);
                        Camera.Y = origin.Y + (float)(Math.Sin(angle) * currentDistance);
                    }
                    else if (elapsedTimeS > travelTimeS + PauseDelayS)
                    {
                        returning = true;
                        elapsedTimeS = 0;
                    }
                }
                else
                {
                    if (elapsedTimeS < ReturnTimeS)
                    {
                        double currentDistance = totalDistance * (elapsedTimeS / ReturnTimeS);
                        currentDistance = totalDistance - currentDistance;
                        Camera.X = origin.X + (float)(Math.Cos(angle) * currentDistance);
                        Camera.Y = origin.Y + (float)(Math.Sin(angle) * currentDistance);
                    }
                    else
                    {
                        completed = true;
                    }
                }
            }
        }