public override bool Run(float frameBudget) { int count = this.core.postList.Count; while (this.core.poolIdx < count) { MeshObject post = this.core.postList[this.core.poolIdx]; ++this.core.poolIdx; bool flag = false; if (this.core.parameters.SplitMeshIslands || Object.op_Implicit((Object)post.option) && post.option.SplitMeshIslands) { List <ExploderMesh> exploderMeshList = MeshUtils.IsolateMeshIslands(post.mesh); if (exploderMeshList != null) { flag = true; foreach (ExploderMesh exploderMesh in exploderMeshList) { this.islands.Add(new MeshObject() { mesh = exploderMesh, material = post.material, transform = post.transform, original = post.original, skinnedOriginal = post.skinnedOriginal, parent = post.transform.parent, position = post.transform.position, rotation = post.transform.rotation, localScale = post.transform.localScale, option = post.option }); } } } if (!flag) { this.islands.Add(post); } if ((double)this.Watch.ElapsedMilliseconds > (double)frameBudget) { return(false); } } this.core.postList = this.islands; this.Watch.Stop(); return(true); }
public override bool Run(float frameBudget) { var count = core.postList.Count; while (core.poolIdx < count) { var mesh = core.postList[core.poolIdx]; core.poolIdx++; var islandsFound = false; if (core.parameters.SplitMeshIslands || (mesh.option && mesh.option.SplitMeshIslands)) { var meshIslands = MeshUtils.IsolateMeshIslands(mesh.mesh); if (meshIslands != null) { islandsFound = true; foreach (var meshIsland in meshIslands) { islands.Add(new MeshObject { mesh = meshIsland, material = mesh.material, transform = mesh.transform, original = mesh.original, skinnedOriginal = mesh.skinnedOriginal, parent = mesh.transform.parent, position = mesh.transform.position, rotation = mesh.transform.rotation, localScale = mesh.transform.localScale, option = mesh.option, }); } } } if (!islandsFound) { islands.Add(mesh); } if (Watch.ElapsedMilliseconds > frameBudget) { return(false); } } #if DBG ExploderUtils.Log("Replacing fragments: " + postList.Count + " by islands: " + islands.Count); #endif // replace postList by island list core.postList = islands; Watch.Stop(); return(true); }