public Slice ( int horizOrigin, int vertOrigin, int width, int height, IPassability passability ) : |
||
horizOrigin | int | |
vertOrigin | int | |
width | int | |
height | int | |
passability | IPassability | |
return |
public ConcreteMap Slice(int horizOrigin, int vertOrigin, int width, int height, IPassability passability)
{
var slicedConcreteMap = new ConcreteMap(this.TileType, width, height, passability);
// so we now put the obstacles in place
for (var x = 0; x < width; x++)
for (var y = 0; y < height; y++)
{
// get the local node
var localNodeInfo = slicedConcreteMap.Graph.GetNode(slicedConcreteMap.GetNodeIdFromPos(x, y)).Info;
// get the initial concreteMap node
var nodeInfo = this.Graph.GetNode(this.GetNodeIdFromPos(horizOrigin + x, vertOrigin + y)).Info;
// set obstacle for the local node
localNodeInfo.IsObstacle = nodeInfo.IsObstacle;
localNodeInfo.Cost = nodeInfo.Cost;
}
return slicedConcreteMap;
}
public Cluster(ConcreteMap concreteMap, Id <Cluster> id, int clusterX, int clusterY, Position origin, Size size) { SubConcreteMap = concreteMap.Slice(origin.X, origin.Y, size.Width, size.Height, concreteMap.Passability); Id = id; ClusterY = clusterY; ClusterX = clusterX; Origin = origin; Size = size; _distances = new Dictionary <Tuple <Id <AbstractNode>, Id <AbstractNode> >, int>(); _cachedPaths = new Dictionary <Tuple <Id <AbstractNode>, Id <AbstractNode> >, List <Id <ConcreteNode> > >(); _distanceCalculated = new Dictionary <Tuple <Id <AbstractNode>, Id <AbstractNode> >, bool>(); EntrancePoints = new List <EntrancePoint>(); }