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(); } }
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); }
/// <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); }
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(); } }
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); } }