Ejemplo n.º 1
0
 /// <summary>
 /// Opens a vertex stream on one of the mesh's vertex buffers.
 /// </summary>
 /// <param name="definition">The vertex buffer definition.</param>
 /// <param name="baseStream">The stream open on the mesh's resource data to use as a base stream.</param>
 /// <returns>The vertex stream if successful, or <c>null</c> otherwise.</returns>
 public IVertexStream OpenVertexStream(VertexBufferDefinition definition, Stream baseStream)
 {
     if (definition.Data.Address.Type != ResourceAddressType.Resource)
     {
         return(null); // Don't bother supporting non-resource addresses
     }
     baseStream.Position = definition.Data.Address.Offset;
     return(VertexStreamFactory.Create(_version, baseStream));
 }
Ejemplo n.º 2
0
        private int SerializeVertexBuffer(MeshData mesh, Stream outStream)
        {
            var vertexStream = VertexStreamFactory.Create(_version, outStream);

            if (mesh.RigidVertices != null)
            {
                foreach (var v in mesh.RigidVertices)
                {
                    vertexStream.WriteRigidVertex(v);
                }
                return(mesh.RigidVertices.Length);
            }
            if (mesh.SkinnedVertices != null)
            {
                foreach (var v in mesh.SkinnedVertices)
                {
                    vertexStream.WriteSkinnedVertex(v);
                }
                return(mesh.SkinnedVertices.Length);
            }
            return(0);
        }