public void ReadFromCAR(Stream stream) { stream.Position = 0x10; for (int i = 0; i < 4; i++) { var wheelPosition = new WheelPosition(); wheelPosition.ReadFromCAR(stream); WheelPositions.Add(wheelPosition); } Unknown1 = stream.ReadUShort(); Unknown2 = stream.ReadUShort(); Unknown3 = stream.ReadUShort(); Scale = stream.ReadUShort(); stream.Position += 0x04; ushort lodCount = stream.ReadUShort(); // lodCount = 1; // LODs = new List <LOD>(lodCount); stream.Position += 0x42; for (int i = 0; i < lodCount; i++) { var lod = new LOD(); lod.ReadFromCAR(stream); LODs.Add(lod); } }
public void ReadFromCAR(Stream stream) { stream.Position = 0x10; for (int i = 0; i < 4; i++) { var wheelPosition = new WheelPosition(); wheelPosition.ReadFromCAR(stream); WheelPositions.Add(wheelPosition); } WheelPositions = new List <WheelPosition> { WheelPositions[2], WheelPositions[3], WheelPositions[0], WheelPositions[1] }; Unknown1 = stream.ReadUShort(); Unknown2 = stream.ReadUShort(); Unknown3 = stream.ReadUShort(); Unknown4 = stream.ReadUShort(); stream.Position += 0x04; ushort lodCount = stream.ReadUShort(); LODs = new List <LOD>(lodCount); stream.Position += 0x42; for (int i = 1; i <= lodCount; i++) { var lod = new LOD(); lod.ReadFromCAR(stream); LODs.Add(lod); if (i != lodCount) { stream.Position += 40; // gap between LODs } } Shadow = new Shadow(); Shadow.ReadFromCAR(stream); if (stream.Position != stream.Length) { throw new Exception($"{stream.Length - stream.Position} trailing bytes after shadow"); } }