protected void LoadFixups() { var Entry = cache.zone.RawEntries[geomRawID & ushort.MaxValue]; var reader = new EndianReader(new MemoryStream(cache.zone.FixupData), EndianFormat.Big); reader.SeekTo(Entry.FixupOffset + (Entry.FixupSize - 24)); int vCount = reader.ReadInt32(); reader.Skip(8); int iCount = reader.ReadInt32(); reader.SeekTo(Entry.FixupOffset); for (int i = 0; i < vCount; i++) { VertInfoList.Add(new mode.VertexBufferInfo() { Offset = Entry.Fixups[i].Offset, VertexCount = reader.ReadInt32(), Unknown1 = reader.ReadInt32(), DataLength = reader.ReadInt32(), Unknown2 = reader.ReadInt32(), //blank from here so far Unknown3 = reader.ReadInt32(), Unknown4 = reader.ReadInt32(), Unknown5 = reader.ReadInt32(), }); } for (int i = 0; i < vCount; i++) { //assumed to be vertex related Unknown1List.Add(new mode.UnknownInfo1() { Unknown1 = reader.ReadInt32(), //always 0 so far Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), //1350707457 }); } for (int i = 0; i < iCount; i++) { var data = new mode.IndexBufferInfo(); data.Offset = Entry.Fixups[vCount * 2 + i].Offset; data.FaceFormat = reader.ReadInt32(); //value exists only in reach beta and newer if (cache.Version >= DefinitionSet.HaloReachBeta) data.UnknownX = reader.ReadInt32(); else data.UnknownX = -1; data.DataLength = reader.ReadInt32(); data.Unknown0 = reader.ReadInt32(); //blank from here so far data.Unknown1 = reader.ReadInt32(); data.Unknown2 = reader.ReadInt32(); data.Unknown3 = reader.ReadInt32(); IndexInfoList.Add(data); } for (int i = 0; i < iCount; i++) { //assumed to be index related Unknown2List.Add(new mode.UnknownInfo2() { Unknown1 = reader.ReadInt32(), //always 0 so far Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), //1753688321 }); } for (int i = 0; i < 4; i++) { Unknown3List.Add(new mode.UnknownInfo3() { Unknown1 = reader.ReadInt32(), //vCount in 3rd, iCount in 4th Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), }); } reader.Close(); reader.Dispose(); }
protected void LoadFixups() { var Entry = cache.zone.RawEntries[geomRawID & ushort.MaxValue]; var reader = new EndianReader(new MemoryStream(cache.zone.FixupData), EndianFormat.Big); reader.SeekTo(Entry.FixupOffset + (Entry.FixupSize - 24)); int vCount = reader.ReadInt32(); reader.Skip(8); int iCount = reader.ReadInt32(); reader.SeekTo(Entry.FixupOffset); for (int i = 0; i < vCount; i++) { VertInfoList.Add(new mode.VertexBufferInfo() { Offset = Entry.Fixups[i].Offset, VertexCount = reader.ReadInt32(), Unknown1 = reader.ReadInt32(), DataLength = reader.ReadInt32(), Unknown2 = reader.ReadInt32(), //blank from here so far Unknown3 = reader.ReadInt32(), Unknown4 = reader.ReadInt32(), Unknown5 = reader.ReadInt32(), }); } for (int i = 0; i < vCount; i++) { //assumed to be vertex related Unknown1List.Add(new mode.UnknownInfo1() { Unknown1 = reader.ReadInt32(), //always 0 so far Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), //1350707457 }); } for (int i = 0; i < iCount; i++) { var data = new mode.IndexBufferInfo(); data.Offset = Entry.Fixups[vCount * 2 + i].Offset; data.FaceFormat = reader.ReadInt32(); //value exists only in reach beta and newer if (cache.Version >= DefinitionSet.HaloReachBeta) { data.UnknownX = reader.ReadInt32(); } else { data.UnknownX = -1; } data.DataLength = reader.ReadInt32(); data.Unknown0 = reader.ReadInt32(); //blank from here so far data.Unknown1 = reader.ReadInt32(); data.Unknown2 = reader.ReadInt32(); data.Unknown3 = reader.ReadInt32(); IndexInfoList.Add(data); } for (int i = 0; i < iCount; i++) { //assumed to be index related Unknown2List.Add(new mode.UnknownInfo2() { Unknown1 = reader.ReadInt32(), //always 0 so far Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), //1753688321 }); } for (int i = 0; i < 4; i++) { Unknown3List.Add(new mode.UnknownInfo3() { Unknown1 = reader.ReadInt32(), //vCount in 3rd, iCount in 4th Unknown2 = reader.ReadInt32(), //always 0 so far Unknown3 = reader.ReadInt32(), }); } reader.Close(); reader.Dispose(); }