Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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");
            }
        }