コード例 #1
0
ファイル: GamePlayLogic.cs プロジェクト: HaKDMoDz/geff
        public void CalcMinionNewPath(MinionBase minion, Cell cell)
        {
            if (false)
            {
                minion.Path = PathFinding.CalcPath(minion.CurrentCell, cell, true, 10f);
                minion.PathLength = (minion.Path.Count - 1) * Map.R;
                minion.TraveledLength = 0f;
            }
            else
            {
                IPathFinder mPathFinder = new PathFinderFast(Map.Matrix);
                //IPathFinder mPathFinder = new PathFinder(Map.Matrix);

                mPathFinder.Formula = HeuristicFormula.Manhattan;
                mPathFinder.Diagonals = false;
                mPathFinder.HeavyDiagonals = false;
                mPathFinder.HeuristicEstimate = 1;
                mPathFinder.PunishChangeDirection = false;
                mPathFinder.TieBreaker = false;
                mPathFinder.SearchLimit = 5000;
                mPathFinder.DebugProgress = true;
                mPathFinder.DebugFoundPath = true;

                List<PathFinderNode> path = mPathFinder.FindPath(new System.Drawing.Point(minion.CurrentCell.Coord.X - 1, minion.CurrentCell.Coord.Y - 1), new System.Drawing.Point(cell.Coord.X - 1, cell.Coord.Y - 1));

                minion.Path = new List<int>();
                if (path != null)
                {
                    path.Reverse();

                    for (int i = 0; i < path.Count; i++)
                    {
                        minion.Path.Add(path[i].X + path[i].Y * Map.Width);
                    }
                }

                minion.PathLength = (minion.Path.Count - 1) * Map.R;
                minion.TraveledLength = 0f;
            }
        }
コード例 #2
0
ファイル: RenderLogic.cs プロジェクト: HaKDMoDz/geff
        private void DrawMinion(GameTime gameTime, MinionBase minion)
        {
            float scaleZ = 1f -(float)Math.Cos(minion.BornTime.Subtract(gameTime.TotalGameTime).TotalMilliseconds * 0.01f) * 0.15f;

            DrawModel(gameTime, meshModels[minion.ModelName], Matrix.CreateScale(1f, 1f, scaleZ) * minion.MatrixRotation * Matrix.CreateTranslation(minion.Location), minion.AnimationPlayer);

            //* Matrix.CreateRotationZ(minion.Angle)
        }