public void Init(TilePropagator propagator) { ISet <Tile> actualTiles; ISet <Tile> actualEndPointTiles; if (TileRotation != null) { actualTiles = new HashSet <Tile>(TileRotation.RotateAll(Tiles)); actualEndPointTiles = EndPointTiles == null ? null : new HashSet <Tile>(TileRotation.RotateAll(EndPointTiles)); } else { actualTiles = Tiles; actualEndPointTiles = EndPointTiles; } tileSet = propagator.CreateTileSet(actualTiles); selectedTracker = propagator.CreateSelectedTracker(tileSet); endPointTileSet = EndPointTiles != null?propagator.CreateTileSet(actualEndPointTiles) : null; endPointSelectedTracker = EndPointTiles != null?propagator.CreateSelectedTracker(endPointTileSet) : null; graph = PathConstraintUtils.CreateGraph(propagator.Topology); Check(propagator, true); }
public void Init(TilePropagator propagator) { tileSet = propagator.CreateTileSet(Tiles); endPointTileSet = EndPointTiles != null?propagator.CreateTileSet(EndPointTiles) : null; graph = PathConstraintUtils.CreateGraph(propagator.Topology); }
public PathView(PathSpec spec, TilePropagator propagator) { if (spec.TileRotation != null) { tiles = new HashSet <Tile>(spec.TileRotation.RotateAll(spec.Tiles)); endPointTiles = spec.RelevantTiles == null ? null : new HashSet <Tile>(spec.TileRotation.RotateAll(spec.RelevantTiles)); } else { tiles = spec.Tiles; endPointTiles = spec.RelevantTiles; } tileSet = propagator.CreateTileSet(tiles); selectedTracker = propagator.CreateSelectedTracker(tileSet); Graph = PathConstraintUtils.CreateGraph(propagator.Topology); this.propagator = propagator; CouldBePath = new bool[propagator.Topology.IndexCount]; MustBePath = new bool[propagator.Topology.IndexCount]; hasEndPoints = spec.RelevantCells != null || spec.RelevantTiles != null; if (hasEndPoints) { CouldBeRelevant = new bool[propagator.Topology.IndexCount]; MustBeRelevant = new bool[propagator.Topology.IndexCount]; endPointIndices = spec.RelevantCells == null ? null : spec.RelevantCells.Select(p => propagator.Topology.GetIndex(p.X, p.Y, p.Z)).ToList(); endPointTileSet = spec.RelevantTiles != null?propagator.CreateTileSet(endPointTiles) : null; endPointSelectedTracker = spec.RelevantTiles != null?propagator.CreateSelectedTracker(endPointTileSet) : null; } else { CouldBeRelevant = CouldBePath; MustBeRelevant = MustBePath; endPointTileSet = tileSet; } }
public void Init(TilePropagator propagator) { tileSet = propagator.CreateTileSet(Tiles); graph = PathConstraintUtils.CreateGraph(propagator.Topology); }