Exemple #1
0
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
     serialise.Bool(ref this.serialiseGrayscale);
     if (this.serialiseGrayscale)
     {
         this.colors = new Color[this.numItems];
         var buf = new byte[this.numItems];
         serialise.Serialise(ref buf);
         for (int i = 0; i < this.numItems; ++i)
         {
             this.Colors[i] = Color.FromArgb(255, buf[i], buf[i], buf[i]);
         }
     }
     else
     {
         this.colors = new Color[this.numItems];
         var buf = new byte[this.numItems * 4];
         serialise.Serialise(ref buf);
         for (int i = 0; i < this.numItems; ++i)
         {
             this.Colors[i] = Color.FromArgb(
                 buf[i + this.numItems * 3], buf[i + this.numItems * 0], buf[i + this.numItems * 1], buf[i + this.numItems * 2]);
         }
     }
 }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            short mediane = 0;
            serialise.Int16(ref mediane);

            this.Resize(this.numItems);

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

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

            for (int i = 0; i < this.numItems; ++i)
            {
                short z = (short)(this.tangents[i].Z - mediane);
                serialise.Int16(ref z);
                this.tangents[i].Z = z + mediane;
            }
        }
Exemple #3
0
        internal void Read(IwSerialise iwSerialise)
        {
            var b = new IwSerialiseBinaryBlock(iwSerialise);

            b.Block += this.ReadBlock;
            b.Serialise();
        }
Exemple #4
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        /// <exception cref="Exception">
        /// </exception>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            uint resCount = 0;

            serialise.UInt32(ref resCount);

            bool unknown0 = false;

            serialise.Bool(ref unknown0);
            bool unknown1 = true;

            serialise.Bool(ref unknown1);

            while (resCount > 0)
            {
                var  pos    = serialise.Position;
                uint length = 0;
                serialise.UInt32(ref length);

                CIwManaged res = null;
                serialise.ManagedObject(this.Hash, ref res);
                this.resources.Add((CIwResource)res, false);
                --resCount;

                if (serialise.Position != pos + length)
                {
                    throw new Exception(
                              string.Format(
                                  "Parse of {0} failed: wrong position by {1} bytes", res.GetType().Name, serialise.Position - (pos + length)));
                    serialise.Position = pos + length;
                }
            }
        }
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
     serialise.Bool(ref this.serialiseGrayscale);
     if (this.serialiseGrayscale)
     {
         this.colors = new Color[this.numItems];
         var buf = new byte[this.numItems];
         serialise.Serialise(ref buf);
         for (int i = 0; i < this.numItems; ++i)
         {
             this.Colors[i] = Color.FromArgb(255, buf[i], buf[i], buf[i]);
         }
     }
     else
     {
         this.colors = new Color[this.numItems];
         var buf = new byte[this.numItems * 4];
         serialise.Serialise(ref buf);
         for (int i = 0; i < this.numItems; ++i)
         {
             this.Colors[i] = Color.FromArgb(
                 buf[i + this.numItems * 3], buf[i + this.numItems * 0], buf[i + this.numItems * 1], buf[i + this.numItems * 2]);
         }
     }
 }
Exemple #6
0
        private void ReadChildGroups(IwSerialise iwSerialise)
        {
            byte num = 0;

            iwSerialise.UInt8(ref num);
            while (num > 0)
            {
                string path = string.Empty;
                iwSerialise.String(ref path);
                if (!string.IsNullOrEmpty(path))
                {
                    this.childGroups.Add(this.resManager.LoadGroup(path, false));
                }
                {
                    uint value = 0;
                    iwSerialise.UInt32(ref value);
                }
                {
                    int value = 0x00001000;
                    iwSerialise.Int32(ref value);
                }
                {
                    uint value = 0xd9794596;
                    iwSerialise.UInt32(ref value);
                    var f = iwSerialise.ClassRegistry.Get(value);
                }

                --num;
            }
        }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            short mediane = 0;

            serialise.Int16(ref mediane);

            this.Resize(this.numItems);

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

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

            for (int i = 0; i < this.numItems; ++i)
            {
                short z = (short)(this.verts[i].Z - mediane);
                serialise.Int16(ref z);
                this.verts[i].Z = z + mediane;
            }
        }
Exemple #8
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public void Serialise(IwSerialise serialise)
        {
            if (serialise.IsReading())
            {
                this.m_IGIDs = new ushort[4];
                this.m_U0    = new short[8];
            }

            serialise.UInt32(ref this.m_Flags);
            int numVerts = 4;

            if (0 == (this.m_Flags & IW_MODEL_PRIM_QUAD_F) && serialise.IsVersionOlderThen(3, 5, 6))
            {
                numVerts = 3;
            }

            serialise.Serialise(ref this.m_IGIDs, numVerts);
            if (this.IsTextured)
            {
                // serialise.Int16(ref this.m_U0[0 * 2]);
                // serialise.Int16(ref this.m_U0[0 * 2 + 1]);

                // serialise.Int16(ref this.m_U0[1 * 2]);
                // serialise.Int16(ref this.m_U0[1 * 2 + 1]);

                // serialise.Int16(ref this.m_U0[2 * 2]);
                // serialise.Int16(ref this.m_U0[2 * 2 + 1]);

                // serialise.Int16(ref this.m_U0[3 * 2]);
                // serialise.Int16(ref this.m_U0[3 * 2 + 1]);

                if (0 != (this.m_Flags & IW_MODEL_PRIM_QUAD_F))
                {
                    serialise.Int16(ref this.m_U0[0 * 2]);
                    serialise.Int16(ref this.m_U0[0 * 2 + 1]);

                    serialise.Int16(ref this.m_U0[2 * 2]);
                    serialise.Int16(ref this.m_U0[2 * 2 + 1]);

                    serialise.Int16(ref this.m_U0[3 * 2]);
                    serialise.Int16(ref this.m_U0[3 * 2 + 1]);

                    serialise.Int16(ref this.m_U0[1 * 2]);
                    serialise.Int16(ref this.m_U0[1 * 2 + 1]);
                }
                else
                {
                    serialise.Int16(ref this.m_U0[0 * 2]);
                    serialise.Int16(ref this.m_U0[0 * 2 + 1]);

                    serialise.Int16(ref this.m_U0[2 * 2]);
                    serialise.Int16(ref this.m_U0[2 * 2 + 1]);

                    serialise.Int16(ref this.m_U0[1 * 2]);
                    serialise.Int16(ref this.m_U0[1 * 2 + 1]);
                    serialise.Int16(ref this.m_U0[3 * 2]);
                    serialise.Int16(ref this.m_U0[3 * 2 + 1]);
                }
            }
        }
Exemple #9
0
        private void Write(IwSerialise iwSerialise)
        {
            var b = new IwSerialiseBinaryBlock(iwSerialise);

            b.Block += this.WriteBlock;
            b.Serialise();
        }
 private void SerialiseMappedData(IwSerialise serialise)
 {
     ushort median = 8;
     serialise.Serialise(ref median);
     ushort[] data = new ushort[8];
     serialise.Serialise(ref data);
 }
Exemple #11
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();
            }
        }
        private void SerialiseMappedData(IwSerialise serialise)
        {
            ushort median = 8;

            serialise.Serialise(ref median);
            ushort[] data = new ushort[8];
            serialise.Serialise(ref data);
        }
Exemple #13
0
        private void ReadResGroupMembers(IwSerialise iwSerialise)
        {
            string name = string.Empty;

            iwSerialise.String(ref name);

            iwSerialise.UInt32(ref this.flags);
        }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.Serialise(ref this.VertIDOfs);
            serialise.Serialise(ref this.NormIDOfs);
            serialise.Serialise(ref this.ColIDOfs);
            serialise.Serialise(ref this.UV0IDOfs);
            this.TupleSize = 0;
            if (this.TupleSize < this.VertIDOfs)
            {
                this.TupleSize = this.VertIDOfs;
            }

            if (this.TupleSize < this.NormIDOfs)
            {
                this.TupleSize = this.NormIDOfs;
            }

            if (this.TupleSize < this.ColIDOfs)
            {
                this.TupleSize = this.ColIDOfs;
            }

            if (this.TupleSize < this.UV0IDOfs)
            {
                this.TupleSize = this.UV0IDOfs;
            }

            if (serialise.IsReading())
            {
                ++this.TupleSize;
                this.Tuples = new ushort[this.TupleSize * this.numItems];
            }

            serialise.Serialise(ref this.Tuples);

            ////var buf = new byte[Math.Min(256, serialise.Length-serialise.Position)];
            ////serialise.Serialise(ref buf);
            ////StringBuilder sb = new StringBuilder();
            ////int i = 0;
            ////foreach (var b in buf)
            ////{
            ////    if (b < 16)
            ////        sb.Append("0");
            ////    sb.Append(string.Format("{0:x} ", b));
            ////    ++i;
            ////    if (i == 8)
            ////        sb.Append("| ");
            ////    if (i == 16)
            ////    {
            ////        sb.Append("\n");
            ////        i = 0;
            ////    }
            ////}
            ////Debug.WriteLine(sb.ToString());
            ////throw new NotImplementedException();
        }
Exemple #15
0
        CIwAnimSkel m_Skel; // ptr to owner skeleton

        #endregion Fields

        #region Methods

        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.UInt32(ref m_Flags);
            serialise.ManagedHash<CIwModel>(ref m_Model);
            serialise.ManagedHash<CIwAnimSkel>(ref m_Skel);
            m_Sets.Serialise(serialise);
            //serialise.DebugWrite(758);
        }
Exemple #16
0
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            bones.Serialise(serialise);

            serialise.Fixed(ref m_TransformPrecision);
            // 758 bytes
        }
Exemple #17
0
        CIwManagedList m_Sets = new CIwManagedList(); // all skin sets (groups of weights)

        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.UInt32(ref m_Flags);
            serialise.ManagedHash <CIwModel>(ref m_Model);
            serialise.ManagedHash <CIwAnimSkel>(ref m_Skel);
            m_Sets.Serialise(serialise);
            //serialise.DebugWrite(758);
        }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.Serialise(ref this.VertIDOfs);
            serialise.Serialise(ref this.NormIDOfs);
            serialise.Serialise(ref this.ColIDOfs);
            serialise.Serialise(ref this.UV0IDOfs);
            this.TupleSize = 0;
            if (this.TupleSize < this.VertIDOfs)
            {
                this.TupleSize = this.VertIDOfs;
            }

            if (this.TupleSize < this.NormIDOfs)
            {
                this.TupleSize = this.NormIDOfs;
            }

            if (this.TupleSize < this.ColIDOfs)
            {
                this.TupleSize = this.ColIDOfs;
            }

            if (this.TupleSize < this.UV0IDOfs)
            {
                this.TupleSize = this.UV0IDOfs;
            }

            if (serialise.IsReading())
            {
                ++this.TupleSize;
                this.Tuples = new ushort[this.TupleSize * this.numItems];
            }

            serialise.Serialise(ref this.Tuples);

            ////var buf = new byte[Math.Min(256, serialise.Length-serialise.Position)];
            ////serialise.Serialise(ref buf);
            ////StringBuilder sb = new StringBuilder();
            ////int i = 0;
            ////foreach (var b in buf)
            ////{
            ////    if (b < 16)
            ////        sb.Append("0");
            ////    sb.Append(string.Format("{0:x} ", b));
            ////    ++i;
            ////    if (i == 8)
            ////        sb.Append("| ");
            ////    if (i == 16)
            ////    {
            ////        sb.Append("\n");
            ////        i = 0;
            ////    }
            ////}
            ////Debug.WriteLine(sb.ToString());
            ////throw new NotImplementedException();
        }
Exemple #19
0
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            bones.Serialise(serialise);

            serialise.Fixed(ref m_TransformPrecision);
            // 758 bytes
        }
Exemple #20
0
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public void Serialise(IwSerialise serialise)
 {
     this.array.SerialiseHeader(serialise);
     for (uint i = 0; i < this.array.Size; ++i)
     {
         CIwManaged m = this.array[(int)i];
         serialise.ManagedObject(ref m);
         this.array[(int)i] = m;
     }
 }
Exemple #21
0
        public void Bone()
        {
            var        s   = IwSerialise.Open("TestData\\managedobject_bone.bin", true, this.container.Resolve <ClassRegistry>(), null);
            CIwManaged obj = null;

            s.ManagedObject(ref obj);
            s.Close();
            Assert.IsTrue(obj is CIwAnimBone);
            Assert.AreEqual(obj.Hash, "bonename".ToeHash());
        }
Exemple #22
0
        public void Bool()
        {
            var  s = IwSerialise.Open("TestData\\bool.bin", true, null, null);
            bool v = false;

            s.Bool(ref v);
            Assert.AreEqual(v, false);
            s.Bool(ref v);
            Assert.AreEqual(v, true);
            s.Close();
        }
Exemple #23
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);
        }
Exemple #24
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);
        }
Exemple #25
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);
     }
 }
Exemple #26
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);
     }
 }
Exemple #27
0
        public void Int32()
        {
            var s = IwSerialise.Open("TestData\\int32.bin", true, null, null);

            int[] v = new int[16];
            s.Int32(ref v[0]);
            Assert.AreEqual(v[0], int.MinValue);
            s.Int32(ref v[0]);
            Assert.AreEqual(v[0], int.MaxValue);
            s.Int32(ref v[0]);
            Assert.AreEqual(v[0], 0x01020304);
            s.Close();
        }
Exemple #28
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();
            }
        }
Exemple #29
0
 /// <summary>
 /// The serialise header.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public void SerialiseHeader(IwSerialise serialise)
 {
     if (serialise.IsReading())
     {
         uint l = 0;
         serialise.UInt32(ref l);
         this.Resize(l);
     }
     else
     {
         uint l = this.size;
         serialise.UInt32(ref this.size);
     }
 }
Exemple #30
0
 /// <summary>
 /// The serialise len str z.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 /// <param name="str">
 /// The str.
 /// </param>
 /// <exception cref="NotImplementedException">
 /// </exception>
 public static void SerialiseLenStrZ(IwSerialise serialise, ref string str)
 {
     if (serialise.IsReading())
     {
         int len = 0;
         serialise.Int32(ref len);
         byte[] b = new byte[len + 1];
         serialise.Serialise(ref b);
         str = Encoding.ASCII.GetString(b);
     }
     else
     {
         throw new NotImplementedException();
     }
 }
        /// <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);
            }
        }
Exemple #32
0
        private void ReadGroupResources(IwSerialise serialise)
        {
            uint numResources = 0;

            serialise.UInt32(ref numResources);
            while (numResources > 0)
            {
                // uint resHash = 0;
                // serialise.UInt32(ref resHash);
                var item = new CIwResList();
                item.Serialise(serialise);
                this.lists.PushBack(item);
                --numResources;
            }
        }
        /// <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);
            }
        }
        /// <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]];
            }
        }
Exemple #35
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public void Serialise(IwSerialise serialise)
        {
            serialise.Vec3(ref this.center);

            if (serialise.IsReading())
            {
                int r = 0;
                serialise.Int32(ref r);
                this.radius = r;
            }
            else
            {
                int r = (int)this.radius;
                serialise.Int32(ref r);
            }
        }
Exemple #36
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public void Serialise(IwSerialise serialise)
        {
            serialise.Vec3(ref this.center);

            if (serialise.IsReading())
            {
                int r = 0;
                serialise.Int32(ref r);
                this.radius = r;
            }
            else
            {
                int r = (int)this.radius;
                serialise.Int32(ref r);
            }
        }
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            {
                int value = 0;
                serialise.Int32(ref value);
            }
            {
                byte value = 2;                  //1b=3
                serialise.UInt8(ref value);
            }
            {
                Vector3 value = Vector3.Zero;
                serialise.SVec3(ref value);
            }
            {
                byte value = 1;
                serialise.UInt8(ref value);
            }
            {
                uint value = 3;                 //1b=1
                serialise.UInt32(ref value);
            }
            {
                uint value = 2;                 //1b=1 num of bones?
                serialise.UInt32(ref value);
            }
            //1b=1 one more uint32?
            {
                bool value = true;
                serialise.Bool(ref value);
            }

            SerialiseMappedData(serialise);             //1b-none

            // by number of bones
            {
                // 0x1d38b3fd
                Quaternion value = Quaternion.Identity;
                serialise.SQuat(ref value);
            }
            {
                // 0xa272adcf
                Quaternion value = Quaternion.Identity;
                serialise.SQuat(ref value);
            }
        }
        /// <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]];
            }
        }
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            {
                int value = 0;
                serialise.Int32(ref value);
            }
            {
                byte value = 2;  //1b=3
                serialise.UInt8(ref value);
            }
            {
                Vector3 value = Vector3.Zero;
                serialise.SVec3(ref value);
            }
            {
                byte value = 1;
                serialise.UInt8(ref value);
            }
            {
                uint value = 3; //1b=1
                serialise.UInt32(ref value);
            }
            {
                uint value = 2; //1b=1 num of bones?
                serialise.UInt32(ref value);
            }
            //1b=1 one more uint32?
            {
                bool value = true;
                serialise.Bool(ref value);
            }

            SerialiseMappedData(serialise); //1b-none

            // by number of bones
            {
                // 0x1d38b3fd
                Quaternion value = Quaternion.Identity;
                serialise.SQuat(ref value);
            }
            {
                // 0xa272adcf
                Quaternion value = Quaternion.Identity;
                serialise.SQuat(ref value);
            }
        }
Exemple #40
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            SerialiseLenStrZ(serialise, ref this.vertexShader);
            SerialiseLenStrZ(serialise, ref this.fragmentShader);

            this.shaderParams.SerialiseHeader(serialise);

            for (int i = 0; i < this.shaderParams.Size; ++i)
            {
                if (this.shaderParams[i] == null)
                {
                    this.shaderParams[i] = new CIwGxShaderUniform();
                }

                this.shaderParams[i].Serialise(serialise);
            }
        }
Exemple #41
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            short mediane = 0;

            // serialise.Int16(ref mediane);
            this.Resize(this.numItems);

            for (int i = 0; i < this.numItems; ++i)
            {
                short x = (short)((this.verts[i].X - mediane) * S3E.IwGeomOne);
                serialise.Int16(ref x);
                this.verts[i].X = (x + mediane) / (float)S3E.IwGeomOne;

                short y = (short)((this.verts[i].Y - mediane) * S3E.IwGeomOne);
                serialise.Int16(ref y);
                this.verts[i].Y = (y + mediane) / (float)S3E.IwGeomOne;
            }
        }
Exemple #42
0
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.ManagedHash <CIwAnimSkel>(ref m_Skel);
            {
                uint numBones = 2;
                serialise.UInt32(ref numBones);
            }
            boneFlags = new uint[1];
            {
                serialise.UInt32(ref boneFlags[0]);
            }
            m_KeyFrames.Serialise(serialise);

            serialise.Fixed(ref m_Duration);
            serialise.Fixed(ref m_TransformPrecision);
            serialise.ManagedHash(ref m_OfsAnim);
            serialise.DebugWrite(256);
        }
Exemple #43
0
        float m_TransformPrecision; // the precision this anim is built at

        #endregion Fields

        #region Methods

        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.ManagedHash<CIwAnimSkel>(ref m_Skel);
            {
                uint numBones = 2;
                serialise.UInt32(ref numBones);
            }
            boneFlags = new uint[1];
            {
                serialise.UInt32(ref boneFlags[0]);
            }
            m_KeyFrames.Serialise(serialise);

            serialise.Fixed(ref m_Duration);
            serialise.Fixed(ref m_TransformPrecision);
            serialise.ManagedHash(ref m_OfsAnim);
            serialise.DebugWrite(256);
        }
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            short mediane = 0;

            // serialise.Int16(ref mediane);
            this.Resize(this.numItems);

            for (int i = 0; i < this.numItems; ++i)
            {
                short x = (short)((this.verts[i].X - mediane) * S3E.IwGeomOne);
                serialise.Int16(ref x);
                this.verts[i].X = (x + mediane) / (float)S3E.IwGeomOne;

                short y = (short)((this.verts[i].Y - mediane) * S3E.IwGeomOne);
                serialise.Int16(ref y);
                this.verts[i].Y = (y + mediane) / (float)S3E.IwGeomOne;
            }
        }
Exemple #45
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);
                }
            }
        }
        /// <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);
            }
        }
        private bool m_WorldSet; // !< True if this set is a world file only set

        #endregion Fields

        #region Methods

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

            ////serialise.DebugWrite(256);

            // serialise.UInt8(ref m_Flags);
            serialise.Bool(ref this.m_WorldSet);
            serialise.UInt8(ref this.m_FlagsSW);
            serialise.UInt8(ref this.m_FlagsHW);
            serialise.UInt32(ref this.m_NumFaces);
            serialise.Int8(ref this.m_OTZOfsSW);
            this.m_FaceIDs.SerialiseHeader(serialise);
            this.m_FaceIDs.ForEach(
                (ref ushort v) =>
                    {
                        serialise.Serialise(ref v);
                        return true;
                    });

            ////serialise.DebugWrite(256);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="IwSerialiseBinaryBlock"/> class.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public IwSerialiseBinaryBlock(IwSerialise serialise)
 {
     this.serialise = serialise;
 }
Exemple #49
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        /// <exception cref="Exception">
        /// </exception>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);

            uint resCount = 0;
            serialise.UInt32(ref resCount);

            bool unknown0 = false;
            serialise.Bool(ref unknown0);
            bool unknown1 = true;
            serialise.Bool(ref unknown1);

            while (resCount > 0)
            {
                var pos = serialise.Position;
                uint length = 0;
                serialise.UInt32(ref length);

                CIwManaged res = null;
                serialise.ManagedObject(this.Hash, ref res);
                this.resources.Add((CIwResource)res, false);
                --resCount;

                if (serialise.Position != pos + length)
                {
                    throw new Exception(
                        string.Format(
                            "Parse of {0} failed: wrong position by {1} bytes", res.GetType().Name, serialise.Position - (pos + length)));
                    serialise.Position = pos + length;
                }
            }
        }
Exemple #50
0
        private void ReadResGroupMembers(IwSerialise iwSerialise)
        {
            string name = string.Empty;
            iwSerialise.String(ref name);

            iwSerialise.UInt32(ref this.flags);
        }
Exemple #51
0
 private void Write(IwSerialise iwSerialise)
 {
     var b = new IwSerialiseBinaryBlock(iwSerialise);
     b.Block += this.WriteBlock;
     b.Serialise();
 }
Exemple #52
0
        private void ReadChildGroups(IwSerialise iwSerialise)
        {
            byte num = 0;
            iwSerialise.UInt8(ref num);
            while (num > 0)
            {
                string path = string.Empty;
                iwSerialise.String(ref path);
                if (!string.IsNullOrEmpty(path))
                {
                    this.childGroups.Add(this.resManager.LoadGroup(path, false));
                }
                {
                    uint value = 0;
                    iwSerialise.UInt32(ref value);
                }
                {
                    int value = 0x00001000;
                    iwSerialise.Int32(ref value);
                }
                {
                    uint value = 0xd9794596;
                    iwSerialise.UInt32(ref value);
                    var f = iwSerialise.ClassRegistry.Get(value);
                }

                --num;
            }
        }
Exemple #53
0
 private void ReadGroupResources(IwSerialise serialise)
 {
     uint numResources = 0;
     serialise.UInt32(ref numResources);
     while (numResources > 0)
     {
         // uint resHash = 0;
         // serialise.UInt32(ref resHash);
         var item = new CIwResList();
         item.Serialise(serialise);
         this.lists.PushBack(item);
         --numResources;
     }
 }
Exemple #54
0
 internal void Read(IwSerialise iwSerialise)
 {
     var b = new IwSerialiseBinaryBlock(iwSerialise);
     b.Block += this.ReadBlock;
     b.Serialise();
 }
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
 }
Exemple #56
0
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 public void Serialise(IwSerialise serialise)
 {
     this.array.SerialiseHeader(serialise);
     for (uint i = 0; i < this.array.Size; ++i)
     {
         CIwManaged m = this.array[(int)i];
         serialise.ManagedObject(ref m);
         this.array[(int)i] = m;
     }
 }
Exemple #57
0
        /// <summary>
        /// The serialise.
        /// </summary>
        /// <param name="serialise">
        /// The serialise.
        /// </param>
        public override void Serialise(IwSerialise serialise)
        {
            base.Serialise(serialise);
            serialise.UInt32(ref this.flags);
            serialise.UInt8(ref this.FormatSW);
            serialise.UInt8(ref this.FormatHW);
            short unknown3 = 0x1000;
            serialise.Int16(ref unknown3);
            short unknown4 = 0x1000;
            serialise.Int16(ref unknown4);
            if (this.image == null)
            {
                this.image = new CIwImage();
            }

            this.image.Serialise(serialise);
            bool unknown5 = false;
            serialise.Bool(ref unknown5);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="BinaryBlockEventArgs"/> class.
 /// </summary>
 /// <param name="hash">
 /// The hash.
 /// </param>
 /// <param name="iwSerialise">
 /// The iw serialise.
 /// </param>
 /// <param name="len">
 /// The len.
 /// </param>
 public BinaryBlockEventArgs(uint hash, IwSerialise iwSerialise, uint len)
 {
     this.hash = hash;
     this.iwSerialise = iwSerialise;
     this.len = len;
 }
 /// <summary>
 /// The serialise.
 /// </summary>
 /// <param name="serialise">
 /// The serialise.
 /// </param>
 /// <exception cref="NotImplementedException">
 /// </exception>
 public override void Serialise(IwSerialise serialise)
 {
     base.Serialise(serialise);
     throw new NotImplementedException();
 }
Exemple #60
0
 private void Serialise(IwSerialise serialise)
 {
     serialise.UInt32(ref this.Hash);
     serialise.UInt32(ref this.Offset);
 }