/// <summary>
        /// 
        /// </summary>
        /// <param name="gameTime"></param>
        /// <returns>true if completely done moving (no more queued up moves either)</returns>
        private bool checkIfDoneMoving(GameTime gameTime)
        {
            long startTimeForNextMove = gameTime.TotalMsLong();
            if (moving && gameTime.TotalMsLong() - begunMovingAt >= totalTimeMsToFinishCurrentMove)
            {
                this.ParentMap().WorldMatrix.endMoveModel(this, Position + moveOffset);
                moving = false;
                startTimeForNextMove = begunMovingAt + totalTimeMsToFinishCurrentMove;
            }

            if (!moving && PathCheckpoints != null && PathCheckpoints.Count > 0)
            {
                MoveOffsetIfNotAlreadyMoving(PathCheckpoints.First.Value, startTimeForNextMove);
                PathCheckpoints.RemoveFirst();
                return false;
            }
            else
            {
                return true;
            }
        }
        public void Update(GameTime gameTime)
        {
            long startTime = gameTime.TotalMsLong();
            if (Engine.Input.Keyboard.IsKeyDown(Keys.D8)) MoveOffsetIfNotAlreadyMoving(Position.N, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.D9)) MoveOffsetIfNotAlreadyMoving(Position.NE, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.O)) MoveOffsetIfNotAlreadyMoving(Position.E, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.L)) MoveOffsetIfNotAlreadyMoving(Position.SE, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.K)) MoveOffsetIfNotAlreadyMoving(Position.S, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.J)) MoveOffsetIfNotAlreadyMoving(Position.SW, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.U)) MoveOffsetIfNotAlreadyMoving(Position.W, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.D7)) MoveOffsetIfNotAlreadyMoving(Position.NW, startTime);
            else if (Engine.Input.Keyboard.IsKeyDown(Keys.F)) MoveOffsetIfNotAlreadyMoving(Position.W * 3, startTime);

            checkIfDoneMoving(gameTime);
        }