示例#1
0
 /// <summary>
 /// Sync only.
 /// </summary>
 public void Destroy()
 {
     if (FCO != null && IsAdded)
     {
         OwningRegion.RemoveChunkQuiet(FCO);
         IsAdded = false;
     }
     if (_VBO != null)
     {
         VBO tV = _VBO;
         lock (OwningRegion.TheClient.vbos)
         {
             if (tV.generated && OwningRegion.TheClient.vbos.Count < 120)
             {
                 OwningRegion.TheClient.vbos.Push(tV);
             }
             else
             {
                 tV.Destroy();
             }
         }
         _VBO = null;
     }
     DestroyPlants();
 }
示例#2
0
 /// <summary>
 /// Sync only.
 /// </summary>
 public void Destroy(bool excess = true)
 {
     if (excess && PosMultiplier >= 5)
     {
         OwningRegion.RecalculateSLOD(WorldPosition);
     }
     if (FCO != null && IsAdded)
     {
         OwningRegion.RemoveChunkQuiet(FCO);
         IsAdded = false;
     }
     if (Render_VoxelBuffer != null)
     {
         for (int i = 0; i < Render_VoxelBuffer.Length; i++)
         {
             if (Render_VoxelBuffer[i] > 0)
             {
                 GL.DeleteBuffer(Render_VoxelBuffer[i]);
             }
         }
     }
     DestroyVBO(_VBOSolid);
     DestroyVBO(_VBOTransp);
     _VBOSolid  = null;
     _VBOTransp = null;
     DestroyPlants();
 }
示例#3
0
 /// <summary>
 /// Sync only.
 /// </summary>
 public void Destroy()
 {
     if (PosMultiplier >= 5)
     {
         OwningRegion.RecalculatSLOD(WorldPosition);
     }
     if (FCO != null && IsAdded)
     {
         OwningRegion.RemoveChunkQuiet(FCO);
         IsAdded = false;
     }
     DestroyVBO(_VBOSolid);
     DestroyVBO(_VBOTransp);
     _VBOSolid  = null;
     _VBOTransp = null;
     DestroyPlants();
 }