Exemplo n.º 1
0
            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;
                }
            }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
            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;
                }
            }