コード例 #1
0
 /// <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;
 }
コード例 #2
0
        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;
        }
コード例 #3
0
 public void OnDestroy()
 {
     _generatorTask = null;
 }