private void OnEnable() { if (EditorApplication.isPlayingOrWillChangePlaymode) { return; } GameObject[] mappedRooms = GameObject.FindGameObjectsWithTag("RoomSprite"); for (int i = 0; i < mappedRooms.Length; i++) { RoomSprite roomSprite = mappedRooms[i].GetComponent <RoomSprite>(); if (roomSprite.myRoom != null) { if (roomImagesDictionary.ContainsKey(roomSprite.myRoom)) { DestroyImmediate(roomImagesDictionary[roomSprite.myRoom]); roomImagesDictionary.Remove(roomSprite.myRoom); } roomImagesDictionary.Add(roomSprite.myRoom, mappedRooms[i]); } else { DestroyImmediate(roomSprite.gameObject); } } RoomSprite.OnDestroyed += EliminateRoomFromDictionary; }
/// <summary> /// Initializes a new instance of the <see cref="libtr.TR2.RoomData"/> struct. /// </summary> /// <param name="vertices">The vertices.</param> /// <param name="rectangles">The textured rectangles.</param> /// <param name="triangles">The textured triangles.</param> /// <param name="sprites">The sprites.</param> public RoomData ( RoomVertex [] vertices, Face4 [] rectangles, Face3 [] triangles, RoomSprite [] sprites) : this () { VertexCount = (Int16) vertices.Length; RectangleCount = (Int16) rectangles.Length; TriangleCount = (Int16) triangles.Length; SpriteCount = (Int16) sprites.Length; Vertices = vertices; Rectangles = rectangles; Triangles = triangles; Sprites = sprites; }
private void PutExitsInPlace(RoomObject roomToPutExits) { RoomSprite imageRoom = roomImagesDictionary[roomToPutExits].GetComponent <RoomSprite>(); Transform[] childs = imageRoom.gameObject.GetComponentsInChildren <Transform>(); for (int i = 0; i < childs.Length; i++) { if (childs[i] != imageRoom.gameObject.transform) { DestroyImmediate(childs[i].gameObject); } } GameObject newExitImage = null; for (int i = 0; i < roomToPutExits.exits.Count; i++) { switch (roomToPutExits.exits[i].myKeyword) { default: break; case DirectionKeyword.east: newExitImage = PrefabUtility.InstantiatePrefab(roomExitSides) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, 0.5f, 0f); newExitImage.transform.rotation = Quaternion.Euler(0, 0, 90); break; case DirectionKeyword.north: newExitImage = PrefabUtility.InstantiatePrefab(roomExitSides) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, 0f, 0.5f); break; case DirectionKeyword.south: newExitImage = PrefabUtility.InstantiatePrefab(roomExitSides) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, 0f, -0.5f); break; case DirectionKeyword.west: newExitImage = PrefabUtility.InstantiatePrefab(roomExitSides) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, -0.5f, 0f); newExitImage.transform.rotation = Quaternion.Euler(0, 0, 90); break; case DirectionKeyword.northEast: newExitImage = PrefabUtility.InstantiatePrefab(roomExitCorner) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, 0.5f, 0.5f); newExitImage.transform.rotation = Quaternion.Euler(0, 0, 90); break; case DirectionKeyword.northWest: newExitImage = PrefabUtility.InstantiatePrefab(roomExitCorner) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, -0.5f, 0.5f); break; case DirectionKeyword.southEast: newExitImage = PrefabUtility.InstantiatePrefab(roomExitCorner) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, 0.5f, -0.5f); break; case DirectionKeyword.southWest: newExitImage = PrefabUtility.InstantiatePrefab(roomExitCorner) as GameObject; newExitImage.transform.position = ChangeVector3(roomToPutExits.roomPosition, -0.5f, -0.5f); newExitImage.transform.rotation = Quaternion.Euler(0, 0, 90); break; } if (newExitImage != null) { newExitImage.name = imageRoom.gameObject.name + " Exit " + KeywordToStringConverter.Instance.ConvertFromKeyword(roomToPutExits.exits[i].myKeyword); newExitImage.transform.parent = imageRoom.transform; } } }