Ejemplo n.º 1
0
    public void OnRoomsRotated()
    {
        m_EventCallCount++;

        if (m_EventCallCount < Rooms.Length - 1) //We're rotating only three of them
        {
            return;
        }

        for (int i = 0; i < Rooms.Length; ++i)
        {
            if (Rooms[i].m_ColorIndex != 3)
            {
                return;
            }
        }

        for (int i = 0; i < Rooms[ExitRoomIndex].Walls.Length; ++i)
        {
            GameObject Wall = Rooms[ExitRoomIndex].Walls[i];
            Vector3    bias = Rooms[ExitRoomIndex].transform.position + (Exit.position - Rooms[ExitRoomIndex].transform.position).normalized;

            if (GameUtilities.IsPositionBetweenAB(bias, Exit.position, Wall.transform.position))
            {
                Wall.GetComponent <BoxCollider>().enabled = false;
                StartCoroutine(GameUtilities.DissolveMesh(Wall.GetComponent <Renderer>(), true, 0.75f));
                AudioMgr.PlaySound(Core.instance.BuiltInResources.SolvedPuzzleClip);
                break;
            }
        }

        m_EventCallCount = 0;
    }
Ejemplo n.º 2
0
    List <Renderer> GatherNeighbours()
    {
        List <Renderer> neighbours = new List <Renderer>();

        for (int i = 0; i < Walls.Length; ++i)
        {
            for (int j = 0; j < NeighbourRooms.Length; ++j)
            {
                if (GameUtilities.IsPositionBetweenAB(transform.position, NeighbourRooms[j].transform.position, Walls[i].transform.position))
                {
                    neighbours.Add(Walls[i].GetComponent <Renderer>());
                    break;
                }
            }
        }

        return(neighbours);
    }