Example #1
0
    private bool generateTrapDoor()
    {
        doorObj = new GameObject("Door" + Room.id);
        doorObj.transform.SetParent(roomObj.transform);
        doorObj.transform.localPosition = Vector3.zero;
        door = doorObj.AddComponent <TrapDoor>();
        door.externalConstructor(new Vector2(dimensions.x, dimensions.z));

        //Generate only +z side of trapdoor
        QuadMesh meshBuilder = new QuadMesh();
        Vector3  bottomLeft, topLeft, topRight, bottomRight;

        float upperHeight = 0f;
        float lowerHeight = -RoomTools.trapDoorThickness;

        //upper plane
        bottomLeft  = new Vector3(-dimensions.x / 2, upperHeight, 0f);
        topLeft     = new Vector3(-dimensions.x / 2, upperHeight, dimensions.z / 2);
        topRight    = new Vector3(dimensions.x / 2, upperHeight, dimensions.z / 2);
        bottomRight = new Vector3(dimensions.x / 2, upperHeight, 0f);
        meshBuilder.addQuad(bottomLeft, topLeft, topRight, bottomRight);

        //lower plane
        bottomLeft  = new Vector3(-dimensions.x / 2, lowerHeight, dimensions.z / 2);
        topLeft     = new Vector3(-dimensions.x / 2, lowerHeight, 0f);
        topRight    = new Vector3(dimensions.x / 2, lowerHeight, 0f);
        bottomRight = new Vector3(dimensions.x / 2, lowerHeight, dimensions.z / 2);
        meshBuilder.addQuad(bottomLeft, topLeft, topRight, bottomRight);

        //mid plane
        bottomLeft  = new Vector3(-dimensions.x / 2, lowerHeight, 0f);
        topLeft     = new Vector3(-dimensions.x / 2, upperHeight, 0f);
        topRight    = new Vector3(dimensions.x / 2, upperHeight, 0f);
        bottomRight = new Vector3(dimensions.x / 2, lowerHeight, 0f);
        meshBuilder.addQuad(bottomLeft, topLeft, topRight, bottomRight);

        Mesh doorMesh = meshBuilder.getMesh();

        door.setDoorMesh(doorMesh);
        return(true);
    }