예제 #1
0
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
     {
         serialise.UInt16(ref this.size);
     }
     {
         serialise.UInt16(ref this.numItems);
     }
     {
         serialise.UInt16(ref this.flags);
     }
 }
예제 #2
0
        float m_TransformPrecision = 1; // Amount this is scaled up by.


        #endregion

        #region Public Methods and Operators

        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref parentBone);

            serialise.SQuat(ref this.rot);
            serialise.SVec3(ref this.pos);

            serialise.UInt16(ref m_SkelID);
            serialise.UInt16(ref m_Flags);
            serialise.Fixed(ref m_TransformPrecision);
        }
예제 #3
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref parentBone);

            serialise.SQuat(ref this.rot);
            serialise.SVec3(ref this.pos);

            serialise.UInt16(ref m_SkelID);
            serialise.UInt16(ref m_Flags);
            serialise.Fixed(ref m_TransformPrecision);
        }
예제 #4
0
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
     {
         serialise.UInt16(ref this.size);
     }
     {
         serialise.UInt16(ref this.numItems);
     }
     {
         serialise.UInt16(ref this.flags);
     }
 }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref this.materialId);

            this.inds = new ushort[this.numItems];
            serialise.Serialise(ref this.inds);
            {
                serialise.UInt16(ref this.streamIdBegin);
            }
            {
                serialise.UInt16(ref this.streamIdEnd);
            }
        }
예제 #6
0
        uint m_NumVerts;         // number of verts in skin set
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.UInt32(ref m_NumVerts);
            if (serialise.IsReading())
            {
                uint dataLen = 0;
                serialise.UInt32(ref dataLen);
                long pos = serialise.Position + dataLen;

                byte boneId = 0;

                for (; ;)
                {
                    serialise.UInt8(ref boneId);
                    if (boneId == 0xFF)
                    {
                        break;
                    }
                    boneIds.Add(boneId);
                }
                // pad
                if ((boneIds.Count % 2) == 0)
                {
                    serialise.UInt8(ref boneId);
                }

                vertices = new CIwAnimSkinSetVertex[m_NumVerts];

                for (int i = 0; i < m_NumVerts; ++i)
                {
                    serialise.UInt16(ref vertices[i].VertexId);
                    vertices[i].Bones = new CIwAnimSkinSetVertexBone[boneIds.Count];

                    for (int j = 0; j < boneIds.Count; j++)
                    {
                        serialise.SVec3(ref vertices[i].Bones[j].BindPose);
                    }
                    for (int j = 0; j < boneIds.Count; j++)
                    {
                        serialise.UInt8(ref vertices[i].Bones[j].Weight);
                    }
                    // pad
                    if (boneIds.Count % 2 == 1)
                    {
                        serialise.UInt8(ref boneId);
                    }
                }

                if (serialise.Position != pos)
                {
                    throw new FormatException("CIwAnimSkinSet");
                }
            }
            else
            {
                throw new ApplicationException();
            }
        }
예제 #7
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            {
                uint val = 0x00020000;
                serialise.UInt32(ref val);
            }
            {
                ushort val = 4;
                serialise.UInt16(ref val);
            }
            {
                ushort val = 4;
                serialise.UInt16(ref val);
            }

            this.sphere.Serialise(serialise);
            this.list.Serialise(serialise);
            this.ext.Serialise(serialise);

            if (serialise.IsReading())
            {
                uint numMaterials = 0;
                serialise.UInt32(ref numMaterials);
                this.materials = new CIwMaterial[numMaterials];
                for (int i = 0; i < this.materials.Length; ++i)
                {
                    CIwManaged m = null;
                    serialise.ManagedHash("CIwMaterial".ToeHash(), ref m);
                    this.materials[i] = (CIwMaterial)m;
                }
            }
            else
            {
                uint numMaterials = (uint)this.materials.Length;
                serialise.UInt32(ref numMaterials);
                for (int i = 0; i < this.materials.Length; ++i)
                {
                    CIwManaged m = this.materials[i];
                    serialise.ManagedHash("CIwMaterial".ToeHash(), ref m);
                }
            }
        }
예제 #8
0
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.UInt32(ref m_NumVerts);
            if (serialise.IsReading())
            {
                uint dataLen = 0;
                serialise.UInt32(ref dataLen);
                long pos = serialise.Position + dataLen;

                byte boneId = 0;

                for (; ; )
                {
                    serialise.UInt8(ref boneId);
                    if (boneId == 0xFF)
                        break;
                    boneIds.Add(boneId);
                }
                // pad
                if ((boneIds.Count % 2) == 0)
                    serialise.UInt8(ref boneId);

                vertices = new CIwAnimSkinSetVertex[m_NumVerts];

                for (int i = 0; i < m_NumVerts;++i )
                {
                    serialise.UInt16(ref vertices[i].VertexId);
                    vertices[i].Bones = new CIwAnimSkinSetVertexBone[boneIds.Count];

                    for (int j = 0; j < boneIds.Count; j++)
                    {
                        serialise.SVec3(ref vertices[i].Bones[j].BindPose);
                    }
                    for (int j = 0; j < boneIds.Count; j++)
                    {
                        serialise.UInt8(ref vertices[i].Bones[j].Weight);
                    }
                    // pad
                    if ( boneIds.Count % 2 == 1)
                        serialise.UInt8(ref boneId);
                }

                    if (serialise.Position != pos)
                        throw new FormatException("CIwAnimSkinSet");
            }
            else
            {
                throw new ApplicationException();
            }
        }
예제 #9
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        /// <exception cref="NotImplementedException">
        /// </exception>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            {
                serialise.UInt16(ref this.uniqueValues);
            }

            short mediane = 0;

            serialise.Int16(ref mediane);

            var len = this.uniqueValues;             // this.numItems; //

            this.Resize(this.numItems);

            if (serialise.IsWriting())
            {
                throw new NotImplementedException();
            }

            for (int i = 0; i < len; ++i)
            {
                short x = (short)(this.verts[i].X - mediane);
                serialise.Int16(ref x);
                this.verts[i].X = x + mediane;
            }

            for (int i = 0; i < len; ++i)
            {
                short y = (short)(this.verts[i].Y - mediane);
                serialise.Int16(ref y);
                this.verts[i].Y = y + mediane;
            }

            for (int i = 0; i < len; ++i)
            {
                short z = (short)(this.verts[i].Z - mediane);
                serialise.Int16(ref z);
                this.verts[i].Z = z + mediane;
            }

            ushort[] links = new ushort[this.numItems - this.uniqueValues];
            serialise.Serialise(ref links);
            for (int i = this.uniqueValues; i < this.numItems; ++i)
            {
                this.verts[i] = this.verts[links[i - this.uniqueValues]];
            }
        }
예제 #10
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        /// <exception cref="NotImplementedException">
        /// </exception>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            {
                serialise.UInt16(ref this.uniqueValues);
            }

            short mediane = 0;
            serialise.Int16(ref mediane);

            var len = this.uniqueValues; // this.numItems; //

            this.Resize(this.numItems);

            if (serialise.IsWriting())
            {
                throw new NotImplementedException();
            }

            for (int i = 0; i < len; ++i)
            {
                short x = (short)(this.verts[i].X - mediane);
                serialise.Int16(ref x);
                this.verts[i].X = x + mediane;
            }

            for (int i = 0; i < len; ++i)
            {
                short y = (short)(this.verts[i].Y - mediane);
                serialise.Int16(ref y);
                this.verts[i].Y = y + mediane;
            }

            for (int i = 0; i < len; ++i)
            {
                short z = (short)(this.verts[i].Z - mediane);
                serialise.Int16(ref z);
                this.verts[i].Z = z + mediane;
            }

            ushort[] links = new ushort[this.numItems - this.uniqueValues];
            serialise.Serialise(ref links);
            for (int i = this.uniqueValues; i < this.numItems; ++i)
            {
                this.verts[i] = this.verts[links[i - this.uniqueValues]];
            }
        }
예제 #11
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref this.m_MaterialID);
            serialise.UInt16(ref this.m_NumTupleIDs);

            if (serialise.IsReading())
            {
                this.m_TupleIDs = new ushort[this.m_NumTupleIDs];
                this.prims      = new _IwModelPrim[this.numItems];
            }

            serialise.Serialise(ref this.m_TupleIDs);

            for (int i = 0; i < this.numItems; ++i)
            {
                this.prims[i].Serialise(serialise);
            }
        }
예제 #12
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref this.m_MaterialID);
            serialise.UInt16(ref this.m_NumTupleIDs);

            if (serialise.IsReading())
            {
                this.m_TupleIDs = new ushort[this.m_NumTupleIDs];
                this.prims = new _IwModelPrim[this.numItems];
            }

            serialise.Serialise(ref this.m_TupleIDs);

            for (int i = 0; i < this.numItems; ++i)
            {
                this.prims[i].Serialise(serialise);
            }
        }
예제 #13
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            serialise.UInt32(ref this.materialId);

            this.inds = new ushort[this.numItems];
            serialise.Serialise(ref this.inds);
            {
                serialise.UInt16(ref this.streamIdBegin);
            }
            {
                serialise.UInt16(ref this.streamIdEnd);
            }
        }