Esempio n. 1
0
        private RoomElementSpawnSettings GetSpawnInformationByTypeAndSide(RoomElementType type, RoomSide roomSide)
        {
            switch (type)
            {
            case RoomElementType.Wall:
                return(fullWall[roomSide]);

            case RoomElementType.WallShortenedLeft:
                return(wallShortenedLeft[roomSide]);

            case RoomElementType.WallShortenedRight:
                return(wallShortenedRight[roomSide]);

            case RoomElementType.WallShortenedBothEnds:
                return(wallShortenedBothSides[roomSide]);

            case RoomElementType.Floor:
                return(floor);

            case RoomElementType.OuterCorner:
                return(outerCorner);

            case RoomElementType.InnerCorner:
                return(innerCorner);

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, $"GetPrefabByType is not supported for type {type} as of current.");
            }
        }
Esempio n. 2
0
        private bool CheckSameBounds(Dictionary <RoomSide, Bounds> boundsPerSide, RoomElementType roomElementType, out string message)
        {
            message = BulletCharacter + roomElementType + " different sizes in x-direction:\n";
            var keyList = boundsPerSide.Keys.ToList();

            var bounds = boundsPerSide[keyList[0]];

            message += keyList[0] + ": " + bounds.size.x + "\n";
            var equal = true;

            for (var i = 1; i < keyList.Count; i++)
            {
                var key       = keyList[i];
                var newBounds = boundsPerSide[key];

                if (bounds.size.x - newBounds.size.x > 0.01f)
                {
                    equal = false;
                }

                bounds   = newBounds;
                message += key + ": " + bounds.size.x + "\n";
            }

            return(equal);
        }
Esempio n. 3
0
        private Bounds GetBoundsOfPrefab(GameObject prefab, RoomElementType type, RoomSide roomSide)
        {
            var meshRenderer = prefab.GetComponentInChildren <MeshRenderer>();

            if (meshRenderer == null)
            {
                throw new MissingComponentException("Room elements are expected to contain a mesh renderer. The " + type.ToString() + " - " + roomSide.GetName() + " prefab doesn't seem to have a mesh renderer in it's hierarchy. Please add one.");
            }

            return(meshRenderer.bounds);
        }
 public static bool IsShortenedWall(this RoomElementType type)
 {
     return(type == RoomElementType.WallShortenedLeft || type == RoomElementType.WallShortenedRight);
 }
 public static bool IsCornerType(this RoomElementType type)
 {
     return(type == RoomElementType.OuterCorner || type == RoomElementType.InnerCorner);
 }
 public static bool IsWallType(this RoomElementType type)
 {
     return(type == RoomElementType.Wall || type == RoomElementType.WallShortenedLeft || type == RoomElementType.WallShortenedRight ||
            type == RoomElementType.WallShortenedBothEnds);
 }
Esempio n. 7
0
 private List <WallElement> FilterSelectionForRoomElementsOfGivenTypeAndOrientation(RoomElementType type, Direction direction)
 {
     return(Selection.transforms.Select(t => t.GetComponent <WallElement>())
            .Where(r => r != null &&
                   ((type.IsWallType() && r.Type.IsWallType()) || (type.IsCornerType() && r.Type.IsCornerType()) || r.Type == type) &&
                   r.Direction == direction)
            .ToList());
 }
Esempio n. 8
0
 private GameObject GetPrefabByTypeAndSide(RoomElementType type, RoomSide roomSide)
 {
     return(GetSpawnInformationByTypeAndSide(type, roomSide).Prefab);
 }