Example #1
0
        public virtual void Dispose()
        {
            if (!CleanedUp)
            {
                CleanedUp = true;

                if (Mesh != null)
                {
                    Mesh.Dispose();
                }
                if (meshBuilder != null)
                {
                    meshBuilder.Clear();
                }

                if (AlphaMesh != null)
                {
                    AlphaMesh.Dispose();
                }
                if (alphaBuilder != null)
                {
                    alphaBuilder.Clear();
                }

                Blocks = null;
            }
            else
            {
                throw new InvalidOperationException("VoxelObject already cleaned up!");
            }
        }
Example #2
0
        public virtual void CreateOrUpdateMesh(BufferUsageHint bufferUsage)
        {
            if (AlphaMesh != null || alphaBuilder.Colors.Count > 0)
            {
                if (AlphaMesh == null)
                {
                    AlphaMesh = new VoxelMesh(bufferUsage, alphaBuilder);
                }
                else
                {
                    AlphaMesh.Update(alphaBuilder);
                }

                alphaBuilder.Clear();
            }

            if (Mesh == null)
            {
                Mesh = new VoxelMesh(bufferUsage, meshBuilder);
            }
            else
            {
                Mesh.Update(meshBuilder);
            }

            meshBuilder.Clear();
        }