コード例 #1
0
        void IData <Circuit> .Save(DataSaver <Circuit> saver, object parameter)
        {
            MeshFaceParameters parameters = (MeshFaceParameters)parameter;

            saver.WriteInt32(Positions.Count);
            saver.WriteMany(Positions, x => saver.WriteVector3U(x));
            saver.WriteInt32(Faces.Count);
            saver.WriteInt32(Faces.Where(x => x.FaceVertexCount == 3).Count());
            saver.WriteInt32(Faces.Where(x => x.FaceVertexCount == 4).Count());
            saver.SaveMany(Faces, parameters);
            saver.WriteMany(Normals, x => saver.WriteVector3F16x16(x));
            saver.WriteSingle16x16(Volume);
        }
コード例 #2
0
        // ---- METHODS ------------------------------------------------------------------------------------------------

        void IData <Circuit> .Load(DataLoader <Circuit> loader, object parameter)
        {
            MeshFaceParameters parameters = (MeshFaceParameters)parameter;

            int vertexCount = loader.ReadInt32();

            Positions = loader.ReadMany(vertexCount, () => loader.ReadVector3U());
            int faceCount = loader.ReadInt32();
            int triCount  = loader.ReadInt32();
            int quadCount = loader.ReadInt32();

            Faces   = loader.LoadMany <MeshFace>(faceCount, parameters).ToList();
            Normals = loader.ReadMany(vertexCount, () => loader.ReadVector3F16x16());
            Volume  = loader.ReadSingle16x16();
        }
コード例 #3
0
        // ---- METHODS ------------------------------------------------------------------------------------------------

        void IData <Circuit> .Load(DataLoader <Circuit> loader, object parameter)
        {
            MeshFaceParameters parameters = (MeshFaceParameters)parameter;

            if (parameters.HasNamedFaces)
            {
                Name = loader.ReadPodString();
            }

            if (loader.Instance.Key == 0x00005CA8)
            {
                Indices[3]      = loader.ReadInt32();
                Indices[0]      = loader.ReadInt32();
                FaceVertexCount = loader.ReadInt32();
                Indices[2]      = loader.ReadInt32();
                Indices[1]      = loader.ReadInt32();
            }
            else
            {
                FaceVertexCount = loader.ReadInt32();
                Indices         = loader.ReadInt32s(4);
            }

            Normal          = loader.ReadVector3F16x16();
            MaterialType    = loader.ReadPodString();
            ColorOrTexIndex = loader.ReadUInt32();
            TexCoords       = loader.ReadMany(4, () => loader.ReadVector2U());
            Reserved1       = loader.ReadUInt32();
            if (FaceVertexCount == 4)
            {
                QuadReserved = loader.ReadVector3F16x16();
            }
            if (Normal == Vector3U.Zero)
            {
                Reserved2 = loader.ReadUInt32();
            }
            else
            {
                if (parameters.HasUnkProperty)
                {
                    Unknown = loader.ReadUInt32();
                }
                Properties = loader.ReadUInt32();
            }
        }
コード例 #4
0
        void IData <Circuit> .Save(DataSaver <Circuit> saver, object parameter)
        {
            MeshFaceParameters parameters = (MeshFaceParameters)parameter;

            if (parameters.HasNamedFaces)
            {
                saver.WritePodString(Name);
            }

            if (saver.Instance.Key == 0x00005CA8)
            {
                saver.WriteInt32(Indices[3]);
                saver.WriteInt32(Indices[0]);
                saver.WriteInt32(FaceVertexCount);
                saver.WriteInt32(Indices[2]);
                saver.WriteInt32(Indices[1]);
            }
            else
            {
                saver.WriteInt32(FaceVertexCount);
                saver.WriteInt32s(Indices);
            }

            saver.WriteVector3F16x16(Normal);
            saver.WritePodString(MaterialType);
            saver.WriteUInt32(ColorOrTexIndex);
            saver.WriteMany(TexCoords, x => saver.WriteVector2U(x));
            saver.Write(Reserved1);
            if (FaceVertexCount == 4)
            {
                saver.WriteVector3F16x16(QuadReserved);
            }
            if (Normal == Vector3U.Zero)
            {
                saver.WriteUInt32(Reserved2);
            }
            else
            {
                if (parameters.HasUnkProperty)
                {
                    saver.WriteUInt32(Unknown);
                }
                saver.WriteUInt32(Properties);
            }
        }