public void ReadFromCDO(Stream stream) { stream.Position = 0x08; Unknown1 = stream.ReadUShort(); if (Unknown1 == 0) { stream.Position = 0x18; Unknown1 = stream.ReadUShort(); } Unknown2 = stream.ReadUShort(); Unknown3 = stream.ReadUShort(); Scale = stream.ReadUShort(); for (int i = 0; i < 4; i++) { var wheelPosition = new WheelPosition(); wheelPosition.ReadFromCDO(stream); WheelPositions.Add(wheelPosition); } stream.Position += 0x828; ushort lodCount = stream.ReadUShort(); LODs = new List <LOD>(lodCount); stream.Position += 0x1A; for (int i = 0; i < lodCount; i++) { var lod = new LOD(); lod.ReadFromCDO(stream); LODs.Add(lod); } }
public void ReadFromCDO(Stream stream) { stream.Position = 0x08; Unknown1 = stream.ReadUShort(); if (Unknown1 == 0) { stream.Position = 0x18; Unknown1 = stream.ReadUShort(); } Unknown2 = stream.ReadUShort(); Unknown3 = stream.ReadUShort(); Unknown4 = stream.ReadUShort(); for (int i = 0; i < 4; i++) { var wheelPosition = new WheelPosition(); wheelPosition.ReadFromCDO(stream); WheelPositions.Add(wheelPosition); } stream.Position += 0x828; ushort lodCount = stream.ReadUShort(); LODs = new List <LOD>(lodCount); stream.Read(Unknown5); for (int i = 0; i < lodCount; i++) { var lod = new LOD(); lod.ReadFromCDO(stream); LODs.Add(lod); } Shadow = new Shadow(); Shadow.ReadFromCDO(stream); if (stream.Position != stream.Length) { throw new Exception($"{stream.Length - stream.Position} trailing bytes after shadow"); } }