Пример #1
0
        public MOGI(BinaryReader br, uint version)
        {
            if (version == 14)
            {
                Offset = br.ReadUInt32();
                Size   = br.ReadUInt32();
            }

            Flags     = br.ReadEnum <MOGP_Flags>();
            AaBox     = br.ReadStruct <CAaBox>();
            NameIndex = br.ReadInt32();
        }
Пример #2
0
        private void ReadHeader(BinaryReader br)
        {
            GroupName   = br.ReadUInt32();
            DbgName     = br.ReadUInt32();
            Flags       = br.ReadEnum <MOGP_Flags>();
            BoundingBox = br.ReadStruct <CAaBox>();
            PortalStart = Version == 14 ? br.ReadInt32() : br.ReadInt16();
            PortalCount = Version == 14 ? br.ReadUInt32() : br.ReadUInt16();

            if (Version != 14)
            {
                TransBatchCount = br.ReadUInt16();
                IntBatchCount   = br.ReadUInt16();
                ExtBatchCount   = br.ReadUInt16();
                Padding         = br.ReadUInt16();
                if (Padding.Value != 0)
                {
                    throw new Exception("NOT PADDING");
                }
            }

            FogIds      = br.ReadBytes(4);
            GroupLiquid = br.ReadUInt32();

            if (Version == 14)
            {
                IntBatch = br.ReadStructArray <SMOGxBatch>(4);
                ExtBatch = br.ReadStructArray <SMOGxBatch>(4);
            }

            UniqueId = br.ReadInt32();

            if (Version != 14)
            {
                Flags2       = br.ReadUInt32();
                Unknown_0x40 = br.ReadUInt32();

                if (Flags2 > 0 || Unknown_0x40 > 0)
                {
                    throw new Exception("NOT PADDING");
                }
            }
            else
            {
                br.BaseStream.Position += 8; // pad
            }
        }