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."); } }
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); }
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); }
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()); }
private GameObject GetPrefabByTypeAndSide(RoomElementType type, RoomSide roomSide) { return(GetSpawnInformationByTypeAndSide(type, roomSide).Prefab); }