Exemple #1
0
        /// <summary>Let the mesh know that normals are required.</summary>
        public void RequireNormals()
        {
            if (Normals != null)
            {
                return;
            }

            Normals = new FixedSizeBuffer <Vector3>(4, false);

            BlockBuffer buff = FirstBuffer;

            while (buff != null)
            {
                buff.RequireNormals();
                buff = buff.Next;
            }
        }
Exemple #2
0
        /// <summary>Gets the next vertex buffer.</summary>
        public void NextBuffer()
        {
            // Get it:
            BlockBuffer buffer = MeshDataBufferPool.GetBuffer();

            buffer.Mesh = this;

            if (Normals != null)
            {
                buffer.RequireNormals();
            }

            if (UV3 != null)
            {
                buffer.RequireUV3();
            }

            // Clear count:
            CurrentBufferBlocks = 0;

            if (FirstBuffer == null)
            {
                // Only one:
                buffer.Previous     = null;
                buffer.Offset       = 0;
                buffer.BlocksBefore = 0;
                FirstBuffer         = LastBuffer = buffer;
            }
            else
            {
                // Filled one:
                FullBufferCount++;
                buffer.Offset       = FullBufferCount * MeshDataBufferPool.VertexBufferSize;
                buffer.BlocksBefore = FullBufferCount * MeshDataBufferPool.BlockCount;

                // Add to end:
                buffer.Previous = LastBuffer;
                LastBuffer.Next = buffer;
                LastBuffer      = buffer;
            }
        }