//Made for Optimisation reasons
    //This method combines each Face obj in GridCube to one obj ( so 6 cube faces as 1 child obj with combined MeshFilter)
    public static void CombineGridCubeFaceMeshes(GameObject gridParentObj , GridCubeFaceIDToObj cubeFaceToObj)
    {
        if (GridMasterManager.GridSettings.GridPreferences.SeperateState == GridSeperateState.PerCubeFace) return;

        GridCubeFaceID topFaceID = GridMasterManager.GridSettings.GridCubeFaceIDs[0];
        MeshFilter topMeshFilter = gridParentObj.GetComponent<MeshFilter>();

        List<CombineInstance> combineInstances = new List<CombineInstance>();

        for (int i = 0; i < GridMasterManager.GridSettings.GridCubeFaceIDs.Length; i++)
        {
            GridCubeFaceID faceID = GridMasterManager.GridSettings.GridCubeFaceIDs[i];

            CombineInstance combineInstance = new CombineInstance();
            combineInstance.mesh = cubeFaceToObj[faceID].GetComponent<MeshFilter>().mesh;
            combineInstance.transform = cubeFaceToObj[faceID].GetComponent<MeshFilter>().transform.localToWorldMatrix;

            combineInstances.Add(combineInstance);
            cubeFaceToObj[faceID].SetActive(false);
            GameObject.Destroy(cubeFaceToObj[faceID].gameObject);
        }

        topMeshFilter.mesh = new Mesh();
        topMeshFilter.mesh.CombineMeshes(combineInstances.ToArray());

    }
Exemplo n.º 2
0
    //Class Constructor. creates new Obj, and assign components
    public GridCube(int xPos, int yPos)
    {
        cubeFaceToObj = new GridCubeFaceIDToObj();

        this.xPos = xPos;
        this.yPos = yPos;

        gridCubeObj        = new GameObject("GridCube/X:" + xPos + "/Y:" + yPos + "/", GridMasterManager.GridSettings.GridCubeInitializingComponents);
        gridCubeRenderer   = gridCubeObj.GetComponent <MeshRenderer>();
        gridCubeMeshFilter = gridCubeObj.GetComponent <MeshFilter>();
        gridCubeRenderer.sharedMaterial = GridMasterManager.GridSettings.GridCubeInitializeData.GridFaceIDMaterial[GridCubeFaceID.UP];
        gridCubeObj.isStatic            = true;
        //InitializeGridCubeFaces();
    }