public void Merge()
    {
        CombineMeshes combineMeshes = new CombineMeshes();

        combineMeshes.MergeChildren(parentObj);
    }
Ejemplo n.º 2
0
    GameObject GenerateQuarter(Material material, List <Vector2> sizes, BuildingParams buildingParams)
    {
        buildingParams.useCustomBuildingSize = true;
        buildingParams.rightFirewall         = true;
        buildingParams.backFirewall          = false;
        buildingParams.leftFirewall          = false;


        quarterParent = new GameObject();
        quarterParent.transform.position = Vector3.zero;
        quarterParent.name = "CityBlock";


        Vector3 posToSet = Vector3.zero;

        buildings = new List <Building>();

        int id     = 0;
        int yAngle = 0;

        posToSet.x += sizes[0].y;

        for (int j = 0; j < 4; j++)
        {
            for (int i = 0; i < buildingCountSide - 1; i++, id++)
            {
                parentObj = new GameObject();
                parentObj.transform.position = Vector3.zero;
                parentObj.name = "Building";

                buildingParams.customBuildingSizeX = sizes[i].x;
                buildingParams.customBuildingSizeZ = sizes[i].y;

                if (i == buildingCountSide - 2)
                {
                    buildingParams.rightFirewall = false;
                    buildingParams.backFirewall  = true;
                }
                else
                {
                    buildingParams.leftFirewall = true;
                    buildingParams.backFirewall = false;
                }
                buildings.Add(new Building(buildingParams, material, parentObj.transform));
                if (i != 0)
                {
                    switch (j)
                    {
                    case 0:
                        posToSet.x += buildings[id - 1].foundationParams.finalSize.x;
                        break;

                    case 1:
                        posToSet.z += buildings[id - 1].foundationParams.finalSize.x;
                        break;

                    case 2:
                        posToSet.x -= buildings[id - 1].foundationParams.finalSize.x;
                        break;

                    case 3:
                        posToSet.z -= buildings[id - 1].foundationParams.finalSize.x;
                        break;
                    }
                }

                combineMeshes.MergeChildren(parentObj);

                parentObj.transform.position = posToSet;
                parentObj.transform.rotation = Quaternion.Euler(new Vector3(0, yAngle, 0));
                parentObj.transform.parent   = quarterParent.transform;
            }

            yAngle -= 90;
            buildingParams.rightFirewall = true;
            switch (j)
            {
            case 0:
                posToSet.x += buildings[id - 1].foundationParams.finalSize.x;
                posToSet.z += buildings[id - 1].foundationParams.finalSize.z;
                break;

            case 1:
                posToSet.z += buildings[id - 1].foundationParams.finalSize.x;
                posToSet.x -= buildings[id - 1].foundationParams.finalSize.z;

                break;

            case 2:
                posToSet.x -= buildings[id - 1].foundationParams.finalSize.x;
                posToSet.z -= buildings[id - 1].foundationParams.finalSize.z;
                break;
            }
        }

        return(quarterParent);
    }