Beispiel #1
0
                public TexInfo(EndianBinaryReader er)
                {
                    Type = er.ReadUInt32();
                    DynamicAllocator = er.ReadUInt32();
                    TXOBOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
                    SamplerOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
                    Unknown4 = er.ReadUInt32();
                    Unknown5 = er.ReadUInt16();
                    Unknown6 = er.ReadUInt16();
                    Unknown7 = er.ReadUInt32();
                    Unknown8 = er.ReadUInt16();
                    Unknown9 = er.ReadUInt16();
                    Height = er.ReadUInt16();
                    Width = er.ReadUInt16();
                    Unknown12 = er.ReadUInt32();
                    Unknown13 = er.ReadUInt32();
                    Unknown14 = er.ReadUInt32();
                    Unknown15 = er.ReadUInt32();
                    Unknown16 = er.ReadUInt32();
                    Unknown17 = er.ReadUInt32();
                    Unknown18 = er.ReadUInt32();
                    Unknown19 = er.ReadUInt32();
                    Unknown20 = er.ReadUInt32();
                    CommandSizeToSend = er.ReadUInt32();

                    long curpos = er.BaseStream.Position;
                    er.BaseStream.Position = TXOBOffset;
                    TextureObject = TXOB.FromStream(er);
                    er.BaseStream.Position = SamplerOffset;
                    Sampler = TextureSamplerCtr.FromStream(er);
                    er.BaseStream.Position = curpos;
                }
Beispiel #2
0
            public DATA(EndianBinaryReader er)
            {
                Signature = er.ReadString(Encoding.ASCII, 4);
                if (Signature != "DATA")
                {
                    throw new SignatureNotCorrectException(Signature, "DATA", er.BaseStream.Position - 4);
                }
                SectionSize       = er.ReadUInt32();
                DictionaryEntries = new DictionaryInfo[16];
                for (int i = 0; i < 16; i++)
                {
                    DictionaryEntries[i] = new DictionaryInfo(er);
                }
                Dictionaries = new DICT[16];
                for (int i = 0; i < 16; i++)
                {
                    if (i == 15 && DictionaryEntries[i].NrItems == 0x54434944)
                    {
                        DictionaryEntries[i].NrItems = 0;
                        DictionaryEntries[i].Offset  = 0;
                    }
                    if (DictionaryEntries[i].Offset != 0)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position = DictionaryEntries[i].Offset;
                        Dictionaries[i]        = new DICT(er);
                        er.BaseStream.Position = curpos;
                    }
                    else
                    {
                        Dictionaries[i] = null;
                    }
                }

                if (Dictionaries[0] != null)
                {
                    Models = new CMDL[Dictionaries[0].Count];
                    for (int i = 0; i < Dictionaries[0].Count; i++)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position = Dictionaries[0][i].DataOffset;
                        Models[i] = new CMDL(er);
                        er.BaseStream.Position = curpos;
                    }
                }

                if (Dictionaries[1] != null)
                {
                    Textures = new TXOB[Dictionaries[1].Count];
                    for (int i = 0; i < Dictionaries[1].Count; i++)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position = Dictionaries[1][i].DataOffset;
                        Textures[i]            = TXOB.FromStream(er);             //new TXOB(er);
                        er.BaseStream.Position = curpos;
                    }
                }
                if (Dictionaries[9] != null)
                {
                    SkeletonAnimations = new CANM[Dictionaries[9].Count];
                    for (int i = 0; i < Dictionaries[9].Count; i++)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position = Dictionaries[9][i].DataOffset;
                        SkeletonAnimations[i]  = new CANM(er);
                        er.BaseStream.Position = curpos;
                    }
                }
                if (Dictionaries[10] != null)
                {
                    MaterialAnimations = new CANM[Dictionaries[10].Count];
                    for (int i = 0; i < Dictionaries[10].Count; i++)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position = Dictionaries[10][i].DataOffset;
                        MaterialAnimations[i]  = new CANM(er);
                        er.BaseStream.Position = curpos;
                    }
                }
                if (Dictionaries[11] != null)
                {
                    VisibilityAnimations = new CANM[Dictionaries[11].Count];
                    for (int i = 0; i < Dictionaries[11].Count; i++)
                    {
                        long curpos = er.BaseStream.Position;
                        er.BaseStream.Position  = Dictionaries[11][i].DataOffset;
                        VisibilityAnimations[i] = new CANM(er);
                        er.BaseStream.Position  = curpos;
                    }
                }
            }
Beispiel #3
0
                public UInt16 Width; //22

                #endregion Fields

                #region Constructors

                public TexInfo(String RefTex)
                {
                    Type = 0x80000000;
                    DynamicAllocator = 0;
                    Unknown4 = 0;
                    Unknown5 = 0x8E;
                    Unknown6 = 1;
                    Unknown7 = 0xFF000000;
                    Unknown8 = 0x81;
                    Unknown9 = 0x809f;
                    Unknown12 = 0x1002206;
                    CommandSizeToSend = 0x38;
                    TextureObject = new ReferenceTexture(RefTex);
                    Sampler = new StandardTextureSamplerCtr();
                }