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> /// <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; } } }
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(); } }
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(); } }
/// <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); } }
/// <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]); } } }
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); } }
private void ReadResGroupMembers(IwSerialise iwSerialise) { string name = string.Empty; iwSerialise.String(ref name); iwSerialise.UInt32(ref this.flags); }
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); }
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); }
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); }
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); { 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 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); }
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> /// <exception cref="NotImplementedException"> /// </exception> /// <exception cref="NotImplementedException"> /// </exception> public void Serialise(IwSerialise serialise) { SerialiseLenStr(serialise, ref this.name); serialise.UInt32(ref this.type); serialise.Int32(ref this.arraySize); serialise.UInt32(ref this.flags); if (serialise.IsReading()) { if (this.IsFloat) { this.floatData = new float[this.arraySize * this.NumberOfComponents]; serialise.Serialise(ref this.floatData); } else { throw new NotImplementedException(); } } 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); } }
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.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); }
private bool m_WorldSet; // !< True if this set is a world file only set #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.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> /// 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); }
private void Serialise(IwSerialise serialise) { serialise.UInt32(ref this.Hash); serialise.UInt32(ref this.Offset); }
/// <summary> /// The serialise. /// </summary> /// <param name="serialise"> /// The serialise. /// </param> public override void Serialise(IwSerialise serialise) { base.Serialise(serialise); bool someFlag = false; serialise.Bool(ref someFlag); { serialise.UInt32(ref this.flags); } if (!someFlag) { { serialise.Int16(ref this.zDepthOfs); } { serialise.Int16(ref this.zDepthOfsHW); } { serialise.Colour(ref this.colEmissive); } { serialise.Colour(ref this.colAmbient); } { serialise.Colour(ref this.colDiffuse); } { serialise.Colour(ref this.colSpecular); } { uint val = 4; serialise.UInt32(ref val); } } { // Texture is always presented CIwManaged t = this.texture0; serialise.ManagedHash("CIwTexture".ToeHash(), ref t); this.texture0 = (CIwTexture)t; } if (!someFlag) { CIwManaged t = this.texture1; serialise.ManagedHash("CIwTexture".ToeHash(), ref t); this.texture1 = (CIwTexture)t; { CIwManaged val = null; serialise.ManagedHash("?".ToeHash(), ref val); } { CIwManaged val = null; serialise.ManagedHash("?".ToeHash(), ref val); } byte isAnimated = 0; serialise.UInt8(ref isAnimated); if (isAnimated != 0) { { byte value = 0; serialise.UInt8(ref value); } serialise.UInt8(ref this.celNum); serialise.UInt8(ref this.celNumU); serialise.UInt8(ref this.celW); serialise.UInt8(ref this.celH); serialise.UInt8(ref this.celPeriod); } serialise.UInt8(ref this.alphaTestValue); { CIwManaged val = null; serialise.ManagedHash("?".ToeHash(), ref val); } } }
/// <summary> /// The serialise. /// </summary> /// <param name="serialise"> /// The serialise. /// </param> public virtual void Serialise(IwSerialise serialise) { serialise.UInt32(ref this.hash); }