public void Read(BinaryReaderEx br) { ptrMeshInfo = br.ReadUInt32(); ptrSkybox = br.ReadUInt32(); ptrTexArray = br.ReadUInt32(); numInstances = br.ReadInt32(); ptrInstances = br.ReadUInt32(); numModels = br.ReadInt32(); ptrModelsPtr = br.ReadUInt32(); unkptr3 = br.ReadUInt32(); unkptr4 = br.ReadUInt32(); ptrPickupHeadersPtrArray = br.ReadUInt32(); unkptr5 = br.ReadUInt32(); null1 = br.ReadInt32(); null2 = br.ReadInt32(); if (null1 != 0 || null2 != 0) { Console.WriteLine("WARNING header.null1 = " + null1 + "; header.null2 = " + null2); } cntWater = br.ReadUInt32(); ptrWater = br.ReadUInt32(); ptrNamedTex = br.ReadUInt32(); ptrNamedTexArray = br.ReadUInt32(); ptrRestartMain = br.ReadUInt32(); someData = new SomeData[3]; for (int i = 0; i < 3; i++) { SomeData sd = new SomeData(); sd.Read(br); someData[i] = sd; } startGrid = new PosAng[8]; for (int i = 0; i < 8; i++) { PosAng pos = new PosAng(br); startGrid[i] = pos; Console.WriteLine(startGrid[i].ToString()); } somePtr4 = br.ReadUInt32(); somePtr5 = br.ReadUInt32(); ptrLowTexArray = br.ReadUInt32(); backColor = new Vector4b(br); bgMode = br.ReadUInt32(); ptrBuildStart = br.ReadUInt32(); ptrBuildEnd = br.ReadUInt32(); ptrBuildType = br.ReadUInt32(); skip = br.ReadBytes(0x6C - 16 - 8 - 16); cntTrialData = br.ReadUInt32(); ptrTrialData = br.ReadUInt32(); cntu2 = br.ReadUInt32(); ptru2 = br.ReadUInt32(); cntSpawnPts = br.ReadUInt32(); ptrSpawnPts = br.ReadUInt32(); cntRestartPts = br.ReadUInt32(); ptrRestartPts = br.ReadUInt32(); //skip2 = br.ReadBytes(0x38); skip2 = br.ReadBytes(16); bgColor = new Vector4b[4]; for (int i = 0; i < 4; i++) { bgColor[i] = new Vector4b(br); } skip2_unkPtr = br.ReadUInt32(); cntVcolAnim = br.ReadUInt32();; ptrVcolAnim = br.ReadUInt32();; skip23 = br.ReadBytes(12); ptrAiNav = br.ReadUInt32(); skip3 = br.ReadBytes(0x24); long posx = br.BaseStream.Position; br.Jump(ptrBuildStart); compilationBegins = Helpers.ParseDate(br.ReadStringNT()); br.Jump(ptrBuildEnd); compilationEnds = Helpers.ParseDate(br.ReadStringNT()); br.Jump(ptrBuildType); Console.WriteLine(br.ReadStringNT()); br.Jump(posx); //Console.ReadKey(); }
public void Read(BinaryReaderEx br) { int dataStart = (int)br.BaseStream.Position; ptrMeshInfo = br.ReadUIntPtr(); ptrSkybox = br.ReadUIntPtr(); ptrTexArray = br.ReadUIntPtr(); numInstances = br.ReadInt32(); ptrInstances = br.ReadUIntPtr(); numModels = br.ReadInt32(); ptrModelsPtr = br.ReadUIntPtr(); unkPtr1 = br.ReadUInt32(); unkPtr2 = br.ReadUInt32(); ptrInstancesPtr = br.ReadUIntPtr(); unkPtr3 = br.ReadUInt32(); null1 = br.ReadInt32(); null2 = br.ReadInt32(); if (null1 != 0 || null2 != 0) { Helpers.Panic(this, PanicType.Assume, "WARNING header.null1 = " + null1 + "; header.null2 = " + null2); } numWater = br.ReadUInt32(); ptrWater = br.ReadUIntPtr(); ptrIcons = br.ReadUIntPtr(); ptrIconsArray = br.ReadUIntPtr(); ptrRestartMain = br.ReadUIntPtr(); someData = new SomeData[3]; for (int i = 0; i < 3; i++) { SomeData sd = new SomeData(); sd.Read(br); someData[i] = sd; } startGrid = new Pose[8]; for (int i = 0; i < 8; i++) { Pose pos = new Pose(br); startGrid[i] = pos; //Console.WriteLine(startGrid[i].ToString()); } unkPtr4 = br.ReadUInt32(); unkPtr5 = br.ReadUInt32(); ptrLowTexArray = br.ReadUIntPtr(); backColor = new Vector4b(br); bgMode = br.ReadUInt32(); ptrBuildStart = br.ReadUIntPtr(); ptrBuildEnd = br.ReadUIntPtr(); ptrBuildType = br.ReadUIntPtr(); skip = br.ReadBytes(0x38); particleColorTop = new Vector4b(br); particleColorBottom = new Vector4b(br); particleRenderMode = br.ReadUInt32(); cntTrialData = br.ReadUInt32(); ptrTrialData = br.ReadUIntPtr(); cntu2 = br.ReadUInt32(); ptru2 = br.ReadUInt32(); numSpawnPts = br.ReadUInt32(); ptrSpawnPts = br.ReadUIntPtr(); numRestartPts = br.ReadUInt32(); ptrRestartPts = br.ReadUIntPtr(); skip2 = br.ReadBytes(16); bgColor = new Vector4b[4]; for (int i = 0; i < 4; i++) { bgColor[i] = new Vector4b(br); } skip2_unkPtr = br.ReadUInt32(); numVcolAnim = br.ReadUInt32(); ptrVcolAnim = br.ReadUIntPtr(); skip23 = br.ReadBytes(12); ptrAiNav = br.ReadUIntPtr(); skip3 = br.ReadBytes(0x24); long dataEnd = br.BaseStream.Position; if (dataEnd - dataStart != SizeOf) { throw new Exception("SceneHeader: size mismatch"); } if (ptrBuildStart != UIntPtr.Zero) { br.Jump(ptrBuildStart); compilationBegins = Helpers.ParseDate(br.ReadStringNT()); Console.WriteLine(compilationBegins); } if (ptrBuildEnd != UIntPtr.Zero) { br.Jump(ptrBuildEnd); compilationEnds = Helpers.ParseDate(br.ReadStringNT()); Console.WriteLine(compilationEnds); } if (ptrBuildType != UIntPtr.Zero) { br.Jump(ptrBuildType); Console.WriteLine(br.ReadStringNT()); } br.Jump(dataEnd); }