示例#1
0
 public BasicConstraint(IRoomShapeGeometry <TConfiguration> roomShapeGeometry, IConfigurationSpaces <TConfiguration> configurationSpaces, ILevelDescription <TNode> mapDescription, bool optimizeCorridors)
 {
     this.configurationSpaces = configurationSpaces;
     this.mapDescription      = mapDescription;
     this.optimizeCorridors   = optimizeCorridors;
     this.roomShapeGeometry   = roomShapeGeometry;
 }
 public ConfigurationSpacesGrid2D(ILevelDescription <TNode> levelDescription, ILineIntersection <OrthogonalLineGrid2D> lineIntersection = null)
 {
     this.levelDescription        = levelDescription;
     this.lineIntersection        = lineIntersection ?? new OrthogonalLineIntersection();
     configurationSpacesGenerator = new ConfigurationSpacesGenerator(new PolygonOverlap(), DoorHandler.DefaultHandler, this.lineIntersection, new GridPolygonUtils());
     Initialize();
 }
 public MinimumDistanceConstraint(ILevelDescription <TNode> mapDescription, IRoomShapeGeometry <TConfiguration> roomShapeGeometry, int minimumDistance)
 {
     this.mapDescription    = mapDescription;
     this.roomShapeGeometry = roomShapeGeometry;
     this.minimumDistance   = minimumDistance;
     graph = mapDescription.GetGraph();
 }
示例#4
0
 public CorridorConstraint(ILevelDescription <TNode> mapDescription, IConfigurationSpaces <TConfiguration> configurationSpaces, IRoomShapeGeometry <TConfiguration> roomShapeGeometry)
 {
     this.mapDescription      = mapDescription;
     this.configurationSpaces = configurationSpaces;
     this.roomShapeGeometry   = roomShapeGeometry;
     graphWithoutCorridors    = mapDescription.GetGraphWithoutCorridors();
     graph = mapDescription.GetGraph();
 }
 protected AbstractLayoutController(int averageSize, ILevelDescription <TNode> levelDescription, IRoomShapesHandler <TLayout, TNode, TShapeContainer> roomShapesHandler, IRoomShapeGeometry <TConfiguration> roomShapeGeometry)
 {
     AverageSize       = averageSize;
     LevelDescription  = levelDescription;
     RoomShapesHandler = roomShapesHandler;
     RoomShapeGeometry = roomShapeGeometry;
     StageOneGraph     = levelDescription.GetGraphWithoutCorridors();
 }
示例#6
0
        public RoomShapesHandlerGrid2D(
            TwoWayDictionary <RoomTemplateInstanceGrid2D, IntAlias <PolygonGrid2D> > intAliasMapping,
            ILevelDescription <TNode> mapDescription, Dictionary <TNode, List <WeightedShape> > shapesForNodes, RoomTemplateRepeatMode?repeatModeOverride = null, RoomTemplateRepeatMode?repeatModeDefault = null)
        {
            this.intAliasMapping    = intAliasMapping;
            this.mapDescription     = mapDescription;
            this.shapesForNodes     = shapesForNodes;
            this.repeatModeDefault  = repeatModeDefault;
            this.repeatModeOverride = repeatModeOverride;
            graphWithoutCorridors   = mapDescription.GetGraphWithoutCorridors();

            Initialize();
        }
 public LayoutController(
     int averageSize,
     ILevelDescription <TNode> levelDescription,
     ConstraintsEvaluator <TNode, TConfiguration, TEnergyData> constraintsEvaluator,
     IRoomShapesHandler <TLayout, TNode, TShapeContainer> roomShapesHandler, bool throwIfRepeatModeNotSatisfied, IConfigurationSpaces <TConfiguration, Vector2Int> simpleConfigurationSpaces, IRoomShapeGeometry <TConfiguration> roomShapeGeometry)
     : base(averageSize,
            levelDescription,
            roomShapesHandler,
            roomShapeGeometry)
 {
     this.constraintsEvaluator          = constraintsEvaluator;
     this.throwIfRepeatModeNotSatisfied = throwIfRepeatModeNotSatisfied;
     this.simpleConfigurationSpaces     = simpleConfigurationSpaces;
 }
示例#8
0
 public TwoStageChainDecomposition(ILevelDescription <TNode> mapDescription, IChainDecomposition <TNode> decomposition)
 {
     this.mapDescription = mapDescription;
     this.decomposition  = decomposition;
 }
        // TODO: remove when possible
        public Dictionary <Tuple <TNode, TNode>, IRoomDescription> GetNodesToCorridorMapping <TNode>(ILevelDescription <TNode> mapDescription)
        {
            var mapping = new Dictionary <Tuple <TNode, TNode>, IRoomDescription>();

            var graph = mapDescription.GetGraph();

            foreach (var room in graph.Vertices)
            {
                var roomDescription = mapDescription.GetRoomDescription(room);

                if (roomDescription.IsCorridor)
                {
                    var neighbors = graph.GetNeighbours(room).ToList();
                    mapping.Add(new Tuple <TNode, TNode>(neighbors[0], neighbors[1]), roomDescription);
                    mapping.Add(new Tuple <TNode, TNode>(neighbors[1], neighbors[0]), roomDescription);
                }
            }

            return(mapping);
        }
 public LevelDescriptionMapping(ILevelDescription <TNode> levelDescription)
 {
     this.levelDescription = levelDescription;
     roomDescriptions      = new IRoomDescription[levelDescription.GetGraph().VerticesCount];
     DoMapping();
 }