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; } }
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) }