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;
    }
Exemple #2
0
		/// <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;
            }
        }
    }