// ========================================================================================================================== void LogOctreeInfo() { Console.Log("Cells " + ObjectOctree.MaxCell.maxCellCount + " -> Found Objects: "); LodParentHolder[] lodParentsCount = lodParentHolders; if (lodParentsCount == null || lodParentsCount.Length == 0) { return; } for (int i = 0; i < lodParentsCount.Length; i++) { LodParentHolder lodParentCount = lodParentsCount[i]; if (!lodParentCount.found) { continue; } string text = ""; text = "LOD Group " + (i + 1) + " |"; int[] lods = lodParentCount.lods; for (int j = 0; j < lods.Length; j++) { text += " " + lods[j].ToString() + " |"; } Console.Log(text); } }
// ========================================================================================================================== void InitAndResetLodParentsCount() { for (int i = 0; i < lodParentHolders.Length; i++) { if (lodParentHolders[i] == null) { lodParentHolders[i] = new LodParentHolder(i + 1); } else { lodParentHolders[i].Reset(); } } }
public void CombineAll() { stopwatch.Reset(); stopwatch.Start(); #if MCSCaves RemoveOverlappingTris.triangles.Clear(); #endif addMeshCollidersList.Clear(); unreadableMeshes.Clear(); selectImportSettingsMeshes.Clear(); AddObjectsAutomatically(); if (!octreeContainsObjects) { return; } SetOriginalCollidersActive(false); #if MCSCaves if (removeOverlappingTriangles) { if (CreateOverlapColliders.IsAnythingOnFreeLayers(voxelizeLayer, lodGroupLayer)) { return; } CreateOverlapColliders.Create(transform, overlapLayerMask, lodGroupLayer, ref overlappingCollidersGO); } #endif validRebakeLighting = rebakeLighting && !validCopyBakedLighting && !Application.isPlaying && Application.isEditor; totalVertices = totalTriangles = originalTotalVertices = originalTotalTriangles = originalDrawCalls = newDrawCalls = 0; for (int i = 0; i < lodParentHolders.Length; i++) { LodParentHolder lodParentHolder = lodParentHolders[i]; if (!lodParentHolder.found) { continue; } if (lodParentHolder.go == null) { lodParentHolder.Create(this, i); } octree.CombineMeshes(this, i); } if (MeshCombineJobManager.instance.jobSettings.combineJobMode == MeshCombineJobManager.CombineJobMode.CombineAtOnce) { MeshCombineJobManager.instance.ExecuteJobs(); } combinedActive = true; combined = true; activeOriginal = false; ExecuteHandleObjects(activeOriginal, HandleComponent.Disable, HandleComponent.Disable, false); #if UNITY_EDITOR UnityEditor.EditorUtility.SetDirty(this); #endif }