예제 #1
0
    void CreateWall(float length, Vector3 pos, float rot)
    {
        MeshDivider newWall = Instantiate(walls, transform.position, Quaternion.identity, transform);

        newWall.newScale = new Vector3(length, walls.newScale.y, walls.newScale.z);
        newWall.transform.eulerAngles = new Vector3(0, rot, 0);
        newWall.transform.position    = transform.position + Vector3.up * walls.newScale.y / 2 + pos;
    }
예제 #2
0
    void CreateRoom()
    {
        if (size.x == 0 || size.y == 0)
        {
            return;
        }
        for (int i = transform.childCount - 1; i >= 0; i--)
        {
            if (transform.GetChild(i).name.Contains("Clone"))
            {
                DestroyImmediate(transform.GetChild(i).gameObject);
            }
        }
        if (StripForBuild.Strip)
        {
            return;
        }
        MeshDivider newFloor = Instantiate(floor, transform.position, Quaternion.identity, transform);

        newFloor.transform.position    = transform.position;
        newFloor.newScale              = new Vector3(size.x, size.y, newFloor.newScale.z);
        newFloor.transform.eulerAngles = new Vector3(90, 0, 0);
        if (up.y == 0)
        {
            CreateWall(size.x, Vector3.forward * size.y / 2, 0);
        }
        else if (up.x == 0 || up.x + up.y == size.x)
        {
            if (up.y != size.x)
            {
                CreateWall(size.x - up.y, (up.x == 0 ? 1 : -1) * Vector3.right * up.y / 2 + Vector3.forward * size.y / 2, 0);
            }
        }
        else
        {
            CreateWall(up.x, -Vector3.right * (size.x / 2 - up.x / 2) + Vector3.forward * size.y / 2, 0);
            CreateWall(size.x - up.x - up.y, -Vector3.right * (size.x / 2 - (up.x + up.y) - (size.x - up.x - up.y) / 2) + Vector3.forward * size.y / 2, 0);
        }
        if (down.y == 0)
        {
            CreateWall(size.x, -Vector3.forward * size.y / 2, 180);
        }
        else if (down.x == 0 || down.x + down.y == size.x)
        {
            if (down.y != size.x)
            {
                CreateWall(size.x - down.y, (down.x == 0 ? 1 : -1) * Vector3.right * down.y / 2 - Vector3.forward * size.y / 2, 180);
            }
        }
        else
        {
            CreateWall(down.x, -Vector3.right * (size.x / 2 - down.x / 2) - Vector3.forward * size.y / 2, 180);
            CreateWall(size.x - down.x - down.y, -Vector3.right * (size.x / 2 - (down.x + down.y) - (size.x - down.x - down.y) / 2) - Vector3.forward * size.y / 2, 180);
        }
        if (right.y == 0)
        {
            CreateWall(size.y, Vector3.right * size.x / 2, 90);
        }
        else if (right.x == 0 || right.x + right.y == size.y)
        {
            if (right.y != size.y)
            {
                CreateWall(size.y - right.y, (right.x == 0 ? 1 : -1) * Vector3.forward * right.y / 2 + Vector3.right * size.x / 2, 90);
            }
        }
        else
        {
            CreateWall(right.x, -Vector3.forward * (size.y / 2 - right.x / 2) + Vector3.right * size.x / 2, 90);
            CreateWall(size.y - right.x - right.y, -Vector3.forward * (size.y / 2 - (right.x + right.y) - (size.y - right.x - right.y) / 2) + Vector3.right * size.x / 2, 90);
        }
        if (left.y == 0)
        {
            CreateWall(size.y, -Vector3.right * size.x / 2, -90);
        }
        else if (left.x == 0 || left.x + left.y == size.y)
        {
            if (left.y != size.y)
            {
                CreateWall(size.y - left.y, (left.x == 0 ? 1 : -1) * Vector3.forward * left.y / 2 - Vector3.right * size.x / 2, -90);
            }
        }
        else
        {
            CreateWall(left.x, -Vector3.forward * (size.y / 2 - left.x / 2) - Vector3.right * size.x / 2, -90);
            CreateWall(size.y - left.x - left.y, -Vector3.forward * (size.y / 2 - (left.x + left.y) - (size.y - left.x - left.y) / 2) - Vector3.right * size.x / 2, -90);
        }
        RoomSpawns rs = GetComponent <RoomSpawns>();

        if (rs != null)
        {
            rs.Setup(this);
        }
    }