コード例 #1
0
ファイル: Moving.cs プロジェクト: driverb/projectRICH
        public Entity.Vector GetCurrentPosition(IGameObject owner)
        {
            if (!currentVelocity.IsZero())
            {
                var now = GlobalClock.Now;

                if (now != lastPositionUpdateTime)
                {
                    var elapsed      = now - lastPositionUpdateTime;
                    var nextPosition = currentPosition.Add(currentVelocity.Multiply(elapsed));

                    var currentToTarget = targetPosition.Diff(currentPosition);
                    var nextToTarget    = targetPosition.Diff(nextPosition);

                    if (currentToTarget.Dot(nextToTarget) < 0)
                    {
                        currentPosition = targetPosition;
                        Stop(owner);
                    }
                    else
                    {
                        currentPosition = nextPosition;
                    }
                }

                lastPositionUpdateTime = now;
            }
            return(currentPosition);
        }