private void CombineMeshes(Queue <MeshFilter> filters , byte area , InputGeometryCompiler compiler , ColliderHelper helper) { Queue <CombineInstance> combineInstances = new Queue <CombineInstance>(); while (filters.Count != 0) { MeshFilter filter = filters.Dequeue(); if (helper != null) { Collider collider = filter.GetComponent <Collider>(); if (collider) { CombineInstance ci; if (helper.Get(collider, out ci)) { combineInstances.Enqueue(ci); continue; } } } // Note: Null shared meshes were filtered out by the calling method. for (int subIndex = 0; subIndex < filter.sharedMesh.subMeshCount; ++subIndex) { CombineInstance combineInstance = new CombineInstance(); combineInstance.mesh = filter.sharedMesh; combineInstance.transform = filter.transform.localToWorldMatrix; combineInstance.subMeshIndex = subIndex; combineInstances.Enqueue(combineInstance); } } MeshUtil.CombineMeshes(combineInstances, area, compiler); }