/// <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)); }
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); }