public CorridorConstraints(ICorridorMapDescription <TNode> mapDescription, float averageSize, IConfigurationSpaces <TNode, TShapeContainer, TConfiguration, ConfigurationSpace> configurationSpaces) { this.mapDescription = mapDescription; this.energySigma = 10 * averageSize; // TODO: should it be like this? this.configurationSpaces = configurationSpaces; graphWithoutCorridors = this.mapDescription.GetGraphWithoutCorrridors(); }
private void PrepareMapping(ICorridorMapDescription <int> mapDescription) { var graph = mapDescription.GetGraph(); var corridors = graph.Vertices.Where(mapDescription.IsCorridorRoom).ToList(); foreach (var corridor in corridors) { var room = ScriptableObject.CreateInstance <Room>(); precomputedMapping.Add(room, corridor); } }
public LayoutOperationsWithCorridors( IConfigurationSpaces <TNode, TShapeContainer, TConfiguration, ConfigurationSpace> configurationSpaces, ICorridorMapDescription <TNode> mapDescription, IConfigurationSpaces <TNode, TShapeContainer, TConfiguration, ConfigurationSpace> corridorConfigurationSpaces, int averageSize ) : base(configurationSpaces, averageSize) { MapDescription = mapDescription; CorridorConfigurationSpaces = corridorConfigurationSpaces; GraphWithoutCorridors = mapDescription.GetGraphWithoutCorrridors(); }
public void AddCorridorsToMapping(ICorridorMapDescription <int> mapDescription, TwoWayDictionary <Room, int> mapping) { if (alreadyUsed) { throw new InvalidOperationException("Each instance of this class can be used at most once because it is tied to a specific map description."); } foreach (var pair in precomputedMapping) { mapping.Add(pair.Key, pair.Value); } alreadyUsed = true; }
/// <inheritdoc /> /// <summary> /// Finds the smallest feasible multiple of a specified number and then make from it a sequence of corridors. /// </summary> public void AddCorridorsToMapping(ICorridorMapDescription <int> mapDescription, TwoWayDictionary <int, int> mapping) { var graph = mapDescription.GetGraph(); var corridors = graph.Vertices.Where(mapDescription.IsCorridorRoom).ToList(); var maxNonCorridorNumber = graph.Vertices.Where(x => !mapDescription.IsCorridorRoom(x)).Max(); var parts = maxNonCorridorNumber / roundTo; var nextNumber = roundTo * (parts + 1); var counter = nextNumber; foreach (var corridor in corridors) { mapping.Add(counter++, corridor); } }
/// <inheritdoc /> /// <remarks> /// Adds number to a given prefix until all corridors have a name. /// </remarks> public void AddCorridorsToMapping(ICorridorMapDescription <int> mapDescription, TwoWayDictionary <string, int> mapping) { var graph = mapDescription.GetGraph(); var corridors = graph.Vertices.Where(mapDescription.IsCorridorRoom).ToList(); var counter = 0; foreach (var corridor in corridors) { while (true) { var name = prefix + counter; if (!mapping.ContainsKey(name)) { mapping.Add(name, corridor); break; } counter++; } } }
public CorridorsChainDecomposition(ICorridorMapDescription <TNode> mapDescription, IChainDecomposition <TNode> decomposition) { this.mapDescription = mapDescription; this.decomposition = decomposition; }
public CorridorsNodeCreator(ICorridorMapDescription <int> mapDescription) { PrepareMapping(mapDescription); }
public TouchingConstraints(ICorridorMapDescription <TNode> mapDescription, IPolygonOverlap <TShapeContainer> polygonOverlap) { this.mapDescription = mapDescription; this.polygonOverlap = polygonOverlap; }