public void Serialize(SerializingContainer Container) { //NumTexCoords NumTexCoords = Container + NumTexCoords; //UseFullPrecisionUVs UseFullPrecisionUVs = Container + UseFullPrecisionUVs; //UsePackedPosition UsePackedPosition = Container + UsePackedPosition; //Extension Extension.X = Container + Extension.X; Extension.Y = Container + Extension.Y; Extension.Z = Container + Extension.Z; //origin Origin.X = Container + Origin.X; Origin.Y = Container + Origin.Y; Origin.Z = Container + Origin.Z; //vertexsize VertexSize = Container + VertexSize; int count = 0; if (!Container.isLoading) { count = Vertices.Count(); } count = Container + count; if (Container.isLoading) { Vertices = new List <GPUSkinVertexStruct>(); for (int i = 0; i < count; i++) { Vertices.Add(new GPUSkinVertexStruct()); } } int VertexDiff = VertexSize - 32; for (int i = 0; i < count; i++) { GPUSkinVertexStruct v = Vertices[i]; v.Serialize(Container); if (VertexDiff > 0) { byte b = 0; for (int j = 0; j < VertexDiff; j++) { b = Container + b; } } Vertices[i] = v; } }
private void GenerateDXMeshes() { DirectXSections = new List <CustomVertex.PositionTextured[]>(); for (int i = 0; i < LODModels.Count; i++) { LODModelStruct l = LODModels[i]; CustomVertex.PositionTextured[] list = new CustomVertex.PositionTextured[l.IndexBuffer.Indexes.Count]; for (int j = 0; j < l.IndexBuffer.Indexes.Count; j++) { int idx = l.IndexBuffer.Indexes[j]; GPUSkinVertexStruct v = l.VertexBufferGPUSkin.Vertices[idx]; list[j] = new CustomVertex.PositionTextured(v.Position, HalfToFloat(v.U), HalfToFloat(v.V)); } DirectXSections.Add(list); } }
public void Serialize(SerializingContainer Container, MEVersion version) { //NumTexCoords NumTexCoords = 1; if (version == MEVersion.ME1) { //VertexSize VertexSize = Container + VertexSize; Vertices = new List <GPUSkinVertexStruct>(); int VertsCount = 0; VertsCount = Container + VertsCount; for (int i = 0; i < VertsCount; i++) { var aSoftVert = new SoftSkinVertexStruct(); aSoftVert.Serialize(Container); GPUSkinVertexStruct gpuv = new GPUSkinVertexStruct(aSoftVert); Vertices.Add(gpuv); } UseFullPrecisionUVs = 1; return; } ////UseFullPrecisionUVs UseFullPrecisionUVs = Container + UseFullPrecisionUVs; if (version == MEVersion.ME3) { ////UsePackedPosition UsePackedPosition = Container + UsePackedPosition; //Extension Extension.X = Container + Extension.X; Extension.Y = Container + Extension.Y; Extension.Z = Container + Extension.Z; //origin Origin.X = Container + Origin.X; Origin.Y = Container + Origin.Y; Origin.Z = Container + Origin.Z; } //vertexsize VertexSize = Container + VertexSize; int count = 0; if (!Container.isLoading) { count = Vertices.Count(); } count = Container + count; if (Container.isLoading) { Vertices = new List <GPUSkinVertexStruct>(); for (int i = 0; i < count; i++) { Vertices.Add(new GPUSkinVertexStruct()); } } int VertexDiff = VertexSize - 32; for (int i = 0; i < count; i++) { GPUSkinVertexStruct v = Vertices[i]; v.Serialize(Container, version); if (VertexDiff > 0) { byte b = 0; for (int j = 0; j < VertexDiff; j++) { b = Container + b; } } Vertices[i] = v; } }