//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()); }
//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(); }