public void Execute(CancellationToken token) { if (!_chunk.HasPhysicsTarget) { var chunkTarget = PoolManager .GetMonoBehaviourPool(ConfigManager .UnityProperties .ChunkPhysicsTarget).Pop(); chunkTarget.transform.localPosition = (Vector3)_chunk.Offset * ConfigManager.Properties.BlockWorldScale; _chunk.AttachPhysicsTarget(chunkTarget); } if (_chunk.MeshCollider?.sharedMesh != null) { PoolManager.GetObjectPool <Mesh>() .Push(_chunk.MeshCollider.sharedMesh); _chunk.MeshCollider.sharedMesh = null; } var mesh = PoolManager.GetObjectPool <Mesh>().Pop(); _chunk.PhysicsMeshData.UpdateMesh(mesh); if (_chunk.MeshCollider != null) { _chunk.MeshCollider.sharedMesh = mesh; } }