Setting better bounds when performing Path search.
parent
da09c66cb3
commit
01fde34276
22
HexGrid.cs
22
HexGrid.cs
|
@ -1,7 +1,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Godot;
|
||||
using GodotComponentTest.utils;
|
||||
using Priority_Queue;
|
||||
using AxialCoordDirectionPair = System.Tuple<Godot.Vector2, Godot.Vector3>;
|
||||
|
||||
|
@ -22,7 +21,7 @@ public class HexGrid : Resource
|
|||
|
||||
|
||||
public float PathCostDefault = 1;
|
||||
public int FindPathCheckedCells = 0;
|
||||
public int FindPathCheckedCellCount;
|
||||
|
||||
public Vector2 HexSize
|
||||
{
|
||||
|
@ -76,11 +75,6 @@ public class HexGrid : Resource
|
|||
return result;
|
||||
}
|
||||
|
||||
public void SetBoundsOffset(Vector2 minOffset, Vector2 maxOffset)
|
||||
{
|
||||
SetBounds(HexCell.FromOffsetCoords(minOffset), HexCell.FromOffsetCoords(maxOffset));
|
||||
}
|
||||
|
||||
public void SetBounds(Vector2 minAxial, Vector2 maxAxial)
|
||||
{
|
||||
SetBounds(new HexCell(minAxial), new HexCell(maxAxial));
|
||||
|
@ -94,6 +88,13 @@ public class HexGrid : Resource
|
|||
(_maxCoords.AxialCoords - _minCoords.AxialCoords) + Vector2.One);
|
||||
}
|
||||
|
||||
public void SetBounds(HexCell center, int size)
|
||||
{
|
||||
Vector2 centerOffset = center.OffsetCoords;
|
||||
SetBounds(GetHexAtOffset(centerOffset - Vector2.One * size / 2),
|
||||
GetHexAtOffset(centerOffset + Vector2.One * size / 2));
|
||||
}
|
||||
|
||||
public void AddObstacle(Vector2 axialCoords, float cost = 0)
|
||||
{
|
||||
AddObstacle(new HexCell(axialCoords), cost);
|
||||
|
@ -221,11 +222,11 @@ public class HexGrid : Resource
|
|||
cameFrom.Add(startHex.AxialCoords, startHex.AxialCoords);
|
||||
costSoFar.Add(startHex.AxialCoords, 0);
|
||||
|
||||
FindPathCheckedCells = 0;
|
||||
FindPathCheckedCellCount = 0;
|
||||
|
||||
while (frontier.Any())
|
||||
{
|
||||
FindPathCheckedCells++;
|
||||
FindPathCheckedCellCount++;
|
||||
HexCell currentHex = new HexCell(frontier.Dequeue());
|
||||
Vector2 currentAxial = currentHex.AxialCoords;
|
||||
|
||||
|
@ -264,7 +265,7 @@ public class HexGrid : Resource
|
|||
}
|
||||
}
|
||||
|
||||
// GD.Print("Checked Cell Count: " + FindPathCheckedCells);
|
||||
// GD.Print("Checked Cell Count: " + FindPathCheckedCellCount);
|
||||
|
||||
List<HexCell> result = new List<HexCell>();
|
||||
if (!cameFrom.ContainsKey(goalHex.AxialCoords))
|
||||
|
@ -293,7 +294,6 @@ public class HexGrid : Resource
|
|||
{
|
||||
List<HexCell> result = new List<HexCell>();
|
||||
|
||||
HexCell toCell = GetHexAt(toPlane);
|
||||
float distance = (toPlane - fromPlane).Length();
|
||||
Vector2 direction = (toPlane - fromPlane) / distance;
|
||||
|
||||
|
|
|
@ -140,6 +140,7 @@ public class NavigationComponent : Spatial
|
|||
return;
|
||||
}
|
||||
|
||||
TileWorld.HexGrid.SetBounds(fromCell, 40);
|
||||
List<HexCell> path = TileWorld.HexGrid.FindPath(fromCell, toCell);
|
||||
|
||||
// Generate grid navigation points
|
||||
|
|
Loading…
Reference in New Issue