/// <summary> /// Trigger update on mesh in editor /// </summary> protected void UpdateMesh() { if (VoxelData == null) { return; } // Set voxels and queue this mesh up to be generated _generatorTask = new VoxelMeshGeneratorTask <T>(Voxels, LevelOfDetail, Width, Height, Depth); VoxelMeshGeneratorThread.Generator.EnqueueTask(_generatorTask); WaitingForUpdate = true; }
public void Update() { // If there is no task, there is nothing to update if (_generatorTask == null) { return; } // If the task is not completed, there is nothing to do yet if (!_generatorTask.Completed) { return; } if (Mesh == null) { return; } // Task is completed, recreate the mesh Mesh.Clear(); Mesh.vertices = _generatorTask.Vertices; Mesh.normals = _generatorTask.Normals; Mesh.colors = _generatorTask.Colors; Mesh.uv = _generatorTask.UV; Mesh.uv2 = _generatorTask.UV2; Mesh.uv3 = _generatorTask.UV3; Mesh.triangles = _generatorTask.Triangles; Mesh.tangents = _generatorTask.Tangents; Mesh.Optimize(); Mesh.RecalculateBounds(); MeshCollider.sharedMesh = Mesh; _generatorTask = null; WaitingForUpdate = false; }
public void OnDestroy() { _generatorTask = null; }