示例#1
0
文件: Nav.cs 项目: asm512/CodeWalker
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            UnkOffset      = reader.ReadUInt32();
            Unused_04h     = reader.ReadUInt32();
            PolyIDsPointer = reader.ReadUInt64();
            UnkDataPointer = reader.ReadUInt64();
            PolyIDsCount   = reader.ReadUInt16();
            UnkDataCount   = reader.ReadUInt16();
            Unused_1Ch     = reader.ReadUInt32();

            PolyIDs = reader.ReadUshortsAt(PolyIDsPointer, PolyIDsCount);
            UnkData = reader.ReadStructsAt <NavMeshSectorDataUnk>(UnkDataPointer, UnkDataCount);
        }
示例#2
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            PointsStartID  = reader.ReadUInt32();
            Unused_04h     = reader.ReadUInt32();
            PolyIDsPointer = reader.ReadUInt64();
            PointsPointer  = reader.ReadUInt64();
            PolyIDsCount   = reader.ReadUInt16();
            PointsCount    = reader.ReadUInt16();
            Unused_1Ch     = reader.ReadUInt32();

            PolyIDs = reader.ReadUshortsAt(PolyIDsPointer, PolyIDsCount);
            Points  = reader.ReadStructsAt <NavMeshPoint>(PointsPointer, PointsCount);
        }
示例#3
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            // read structure data
            this.VFT         = reader.ReadUInt32();
            this.Unknown_4h  = reader.ReadUInt32();
            this.Unknown_8h  = reader.ReadUInt32();
            this.Unknown_Ch  = reader.ReadUInt32();
            this.Unknown_10h = reader.ReadUInt32();
            this.Unknown_14h = reader.ReadUInt32();
            this.Unknown_18h = reader.ReadUInt32();
            this.Unknown_1Ch = reader.ReadUInt32();
            this.Unknown_20h = reader.ReadUInt32();
            this.Unknown_24h = reader.ReadUInt32();
            this.NamePointer = reader.ReadUInt64();
            this.Unknown_30h = reader.ReadUInt16();
            this.Unknown_32h = reader.ReadUInt16();
            this.Unknown_34h = reader.ReadUInt32();
            this.Unknown_38h = reader.ReadUInt32();
            this.Unknown_3Ch = reader.ReadUInt32();

            // read reference data
            this.Name = reader.ReadStringAt( //BlockAt<string_r>(
                this.NamePointer             // offset
                );

            if (!string.IsNullOrEmpty(Name))
            {
                NameHash = JenkHash.GenHash(Name.ToLowerInvariant());
            }

            switch (Unknown_32h)
            {
            case 0x20:
            case 0x28:
            case 0x30:
            case 0x38:
            case 0x40:
            case 0x48:
            case 0x80:
            case 0x90:
            case 0x2:    //embedded
                break;

            default:
                break;
            }
        }
示例#4
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            this.EntriesPointer  = reader.ReadUInt64();
            this.EntriesCount    = reader.ReadUInt16();
            this.EntriesCapacity = reader.ReadUInt16();
            reader.Position     += 4;

            //this.Entries = reader.ReadBlockAt<ResourcePointerArray64<T>>(
            //    this.EntriesPointer, // offset
            //    this.EntriesCount
            //);

            data_pointers = reader.ReadUlongsAt(EntriesPointer, EntriesCount);
            data_items    = new T[EntriesCount];
            for (int i = 0; i < EntriesCount; i++)
            {
                data_items[i] = reader.ReadBlockAt <T>(data_pointers[i]);
            }
        }
示例#5
0
 /// <summary>
 /// Reads the data-block from a stream.
 /// </summary>
 public override void Read(ResourceDataReader reader, params object[] parameters)
 {
     // read structure data
     this.Unknown_0h         = reader.ReadUInt32();
     this.Unknown_4h         = reader.ReadUInt32();
     this.SystemPagesCount   = reader.ReadByte();
     this.GraphicsPagesCount = reader.ReadByte();
     this.Unknown_Ah         = reader.ReadUInt16();
     this.Unknown_Ch         = reader.ReadUInt32();
     this.Unknown_10h        = reader.ReadUInt32();
 }
示例#6
0
        /// <summary>
        /// Reads the data-block from a stream.
        /// </summary>
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            base.Read(reader, parameters);

            // read structure data
            this.Unknown_40h = reader.ReadUInt32();
            this.Unknown_44h = reader.ReadUInt32();
            this.Unknown_48h = reader.ReadUInt32();
            this.Unknown_4Ch = reader.ReadUInt32();
            this.Width       = reader.ReadUInt16();
            this.Height      = reader.ReadUInt16();
            this.Unknown_54h = reader.ReadUInt16();
            this.Stride      = reader.ReadUInt16();
            this.Format      = (TextureFormat)reader.ReadUInt32();
            this.Unknown_5Ch = reader.ReadByte();
            this.Levels      = reader.ReadByte();
            this.Unknown_5Eh = reader.ReadUInt16();
            this.Unknown_60h = reader.ReadUInt32();
            this.Unknown_64h = reader.ReadUInt32();
            this.Unknown_68h = reader.ReadUInt32();
            this.Unknown_6Ch = reader.ReadUInt32();
            this.DataPointer = reader.ReadUInt64();
            this.Unknown_78h = reader.ReadUInt32();
            this.Unknown_7Ch = reader.ReadUInt32();
            this.Unknown_80h = reader.ReadUInt32();
            this.Unknown_84h = reader.ReadUInt32();
            this.Unknown_88h = reader.ReadUInt32();
            this.Unknown_8Ch = reader.ReadUInt32();

            // read reference data
            this.Data = reader.ReadBlockAt <TextureData>(
                this.DataPointer, // offset
                this.Format,
                this.Width,
                this.Height,
                this.Levels,
                this.Stride
                );
        }
示例#7
0
文件: Texture.cs 项目: q4a/CodeWalker
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            // read structure data
            this.VFT         = reader.ReadUInt32();
            this.Unknown_4h  = reader.ReadUInt32();
            this.Unknown_8h  = reader.ReadUInt32();
            this.Unknown_Ch  = reader.ReadUInt32();
            this.Unknown_10h = reader.ReadUInt32();
            this.Unknown_14h = reader.ReadUInt32();
            this.Unknown_18h = reader.ReadUInt32();
            this.Unknown_1Ch = reader.ReadUInt32();
            this.Unknown_20h = reader.ReadUInt32();
            this.Unknown_24h = reader.ReadUInt32();
            this.NamePointer = reader.ReadUInt64();
            this.Unknown_30h = reader.ReadUInt16();
            this.Unknown_32h = reader.ReadUInt16();
            this.Unknown_34h = reader.ReadUInt32();
            this.Unknown_38h = reader.ReadUInt32();
            this.Unknown_3Ch = reader.ReadUInt32();
            this.UsageData   = reader.ReadUInt32();
            this.Unknown_44h = reader.ReadUInt32();
            this.ExtraFlags  = reader.ReadUInt32();
            this.Unknown_4Ch = reader.ReadUInt32();



            // read reference data
            this.Name = reader.ReadStringAt( //BlockAt<string_r>(
                this.NamePointer             // offset
                );

            if (!string.IsNullOrEmpty(Name))
            {
                NameHash = JenkHash.GenHash(Name.ToLowerInvariant());
            }

            //switch (Unknown_32h)
            //{
            //    case 0x20:
            //    case 0x28:
            //    case 0x30:
            //    case 0x38:
            //    case 0x40:
            //    case 0x48:
            //    case 0x80:
            //    case 0x90:
            //    case 0x2://base/shaderparam
            //        break;
            //    default:
            //        break;//no hit
            //}

            //switch (Usage)
            //{
            //    case TextureUsage.UNKNOWN:// = 0,
            //    case TextureUsage.DEFAULT:// = 1,
            //    case TextureUsage.TERRAIN:// = 2,
            //    case TextureUsage.CLOUDDENSITY:// = 3,
            //    case TextureUsage.CLOUDNORMAL:// = 4,
            //    case TextureUsage.CABLE:// = 5,
            //    case TextureUsage.FENCE:// = 6,
            //    case TextureUsage.SCRIPT:// = 8,
            //    case TextureUsage.WATERFLOW:// = 9,
            //    case TextureUsage.WATERFOAM:// = 10,
            //    case TextureUsage.WATERFOG:// = 11,
            //    case TextureUsage.WATEROCEAN:// = 12,
            //    case TextureUsage.FOAMOPACITY:// = 14,
            //    case TextureUsage.DIFFUSEMIPSHARPEN:// = 16,
            //    case TextureUsage.DIFFUSEDARK:// = 18,
            //    case TextureUsage.DIFFUSEALPHAOPAQUE:// = 19,
            //    case TextureUsage.DIFFUSE:// = 20,
            //    case TextureUsage.DETAIL:// = 21,
            //    case TextureUsage.NORMAL:// = 22,
            //    case TextureUsage.SPECULAR:// = 23,
            //    case TextureUsage.EMISSIVE:// = 24,
            //    case TextureUsage.TINTPALETTE:// = 25,
            //    case TextureUsage.SKIPPROCESSING:// = 26,
            //        break;
            //    case TextureUsage.ENVEFF:// = 7, //unused by V
            //    case TextureUsage.WATER:// = 13, //unused by V
            //    case TextureUsage.FOAM:// = 15,  //unused by V
            //    case TextureUsage.DIFFUSEDETAIL:// = 17, //unused by V
            //    case TextureUsage.DONOTOPTIMIZE:// = 27, //unused by V
            //    case TextureUsage.TEST:// = 28,  //unused by V
            //    case TextureUsage.COUNT:// = 29, //unused by V
            //        break;//no hit
            //    default:
            //        break;//no hit
            //}

            //var uf = UsageFlags;
            //if ((uf & TextureUsageFlags.EMBEDDEDSCRIPTRT) > 0) // .ydr embedded script_rt textures, only 3 uses
            //{ }
            //if ((uf & TextureUsageFlags.UNK19) > 0)
            //{ }//no hit
            //if ((uf & TextureUsageFlags.UNK20) > 0)
            //{ }//no hit
            //if ((uf & TextureUsageFlags.UNK21) > 0)
            //{ }//no hit
            //if ((uf & TextureUsageFlags.UNK24) == 0)//wtf isthis? only 0 on special resident(?) textures and some reused ones
            //{ }

            //if (!(this is Texture))
            //{
            //    if (Unknown_32h != 0x2)//base/shaderparam
            //    { }//no hit
            //    if (UsageData != 0)
            //    { }//no hit
            //    if (Unknown_44h != 0)
            //    { }//no hit
            //    if (ExtraFlags != 0)
            //    { }//no hit
            //    if (Unknown_4Ch != 0)
            //    { }//no hit
            //}
        }
示例#8
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            base.Read(reader, parameters);

            // read structure data
            this.UsageData   = reader.ReadUInt32();
            this.Unknown_44h = reader.ReadUInt32();
            this.ExtraFlags  = reader.ReadUInt32();
            this.Unknown_4Ch = reader.ReadUInt32();
            this.Width       = reader.ReadUInt16();
            this.Height      = reader.ReadUInt16();
            this.Depth       = reader.ReadUInt16();
            this.Stride      = reader.ReadUInt16();
            this.Format      = (TextureFormat)reader.ReadUInt32();
            this.Unknown_5Ch = reader.ReadByte();
            this.Levels      = reader.ReadByte();
            this.Unknown_5Eh = reader.ReadUInt16();
            this.Unknown_60h = reader.ReadUInt32();
            this.Unknown_64h = reader.ReadUInt32();
            this.Unknown_68h = reader.ReadUInt32();
            this.Unknown_6Ch = reader.ReadUInt32();
            this.DataPointer = reader.ReadUInt64();
            this.Unknown_78h = reader.ReadUInt32();
            this.Unknown_7Ch = reader.ReadUInt32();
            this.Unknown_80h = reader.ReadUInt32();
            this.Unknown_84h = reader.ReadUInt32();
            this.Unknown_88h = reader.ReadUInt32();
            this.Unknown_8Ch = reader.ReadUInt32();

            // read reference data
            this.Data = reader.ReadBlockAt <TextureData>(this.DataPointer, this.Format, this.Width, this.Height, this.Levels, this.Stride);


            switch (Usage)
            {
            case TextureUsage.UNKNOWN:            // = 0,
            case TextureUsage.DEFAULT:            // = 1,
            case TextureUsage.TERRAIN:            // = 2,
            case TextureUsage.CLOUDDENSITY:       // = 3,
            case TextureUsage.CLOUDNORMAL:        // = 4,
            case TextureUsage.CABLE:              // = 5,
            case TextureUsage.FENCE:              // = 6,
            case TextureUsage.SCRIPT:             // = 8,
            case TextureUsage.WATERFLOW:          // = 9,
            case TextureUsage.WATERFOAM:          // = 10,
            case TextureUsage.WATERFOG:           // = 11,
            case TextureUsage.WATEROCEAN:         // = 12,
            case TextureUsage.FOAMOPACITY:        // = 14,
            case TextureUsage.DIFFUSEMIPSHARPEN:  // = 16,
            case TextureUsage.DIFFUSEDARK:        // = 18,
            case TextureUsage.DIFFUSEALPHAOPAQUE: // = 19,
            case TextureUsage.DIFFUSE:            // = 20,
            case TextureUsage.DETAIL:             // = 21,
            case TextureUsage.NORMAL:             // = 22,
            case TextureUsage.SPECULAR:           // = 23,
            case TextureUsage.EMISSIVE:           // = 24,
            case TextureUsage.TINTPALETTE:        // = 25,
            case TextureUsage.SKIPPROCESSING:     // = 26,
                break;

            case TextureUsage.ENVEFF:        // = 7, //unused by V
            case TextureUsage.WATER:         // = 13, //unused by V
            case TextureUsage.FOAM:          // = 15,  //unused by V
            case TextureUsage.DIFFUSEDETAIL: // = 17, //unused by V
            case TextureUsage.DONOTOPTIMIZE: // = 27, //unused by V
            case TextureUsage.TEST:          // = 28,  //unused by V
            case TextureUsage.COUNT:         // = 29, //unused by V
                break;

            default:
                break;
            }

            var uf = UsageFlags;

            if ((uf & TextureUsageFlags.EMBEDDEDSCRIPTRT) > 0) // .ydr embedded script_rt textures, only 3 uses
            {
            }
            if ((uf & TextureUsageFlags.UNK19) > 0)
            {
            }
            if ((uf & TextureUsageFlags.UNK20) > 0)
            {
            }
            if ((uf & TextureUsageFlags.UNK21) > 0)
            {
            }
            if ((uf & TextureUsageFlags.UNK24) == 0)//wtf isthis? only 0 on special resident(?) textures and some reused ones
            {
            }
        }
示例#9
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            // read structure data
            this.Unknown_0h  = reader.ReadUInt32();
            this.Data1Length = reader.ReadUInt32();
            this.Data2Length = reader.ReadUInt32();
            this.Data3Length = reader.ReadUInt16();
            this.Unknown_Eh  = reader.ReadUInt16();
            this.Data1       = reader.ReadBytes((int)Data1Length);
            this.Data2       = reader.ReadBytes((int)Data2Length);
            this.Data3       = reader.ReadBytes((int)Data3Length);


            var treereader = new ExpressionTreeReader(Data1, Data2, Data3);

            Items = treereader.ReadItems();
            Roots = treereader.ReadTree();

            #region testing
            //switch (Unknown_Eh)
            //{
            //    case 2:
            //    case 8:
            //    case 4:
            //    case 6:
            //    case 59:
            //    case 5:
            //    case 12:
            //    case 58:
            //    case 20:
            //    case 10:
            //    case 9:
            //    case 1:
            //    case 50:
            //    case 14:
            //    case 19:
            //    case 7:
            //    case 25:
            //    case 15:
            //    case 13:
            //    case 28:
            //    case 17:
            //    case 22:
            //    case 26:
            //    case 18:
            //    case 21:
            //    case 23:
            //    case 11:
            //    case 24:
            //    case 27:
            //    case 30:
            //    case 16:
            //    case 377:
            //    case 31:
            //    case 125:
            //    case 32:
            //    case 34:
            //    case 52:
            //    case 51:
            //    case 345:
            //    case 399:
            //        break;
            //    default:
            //        break;//no hit
            //}
            #endregion
        }
示例#10
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            // read structure data
            this.VFT            = reader.ReadUInt32();
            this.Unknown_4h     = reader.ReadUInt32();
            this.Unknown_8h     = reader.ReadUInt32();
            this.Unknown_Ch     = reader.ReadUInt32();
            this.Unknown_10h    = reader.ReadUInt32();
            this.Unknown_14h    = reader.ReadUInt32();
            this.Unknown_18h    = reader.ReadUInt32();
            this.Unknown_1Ch    = reader.ReadUInt32();
            this.Unknown_20h    = reader.ReadBlock <ResourcePointerList64 <ExpressionUnk1> >();
            this.BoneTracks     = reader.ReadBlock <ResourceSimpleList64_s <ExpressionBoneTrack> >();
            this.Unknown_40h    = reader.ReadBlock <ResourceSimpleList64 <ExpressionUnk2> >();
            this.Unknown_50h    = reader.ReadBlock <ResourceSimpleList64_s <MetaHash> >();
            this.NamePointer    = reader.ReadUInt64();
            this.NameLength     = reader.ReadUInt16();
            this.NameCapacity   = reader.ReadUInt16();
            this.Unknown_6Ch    = reader.ReadUInt32();
            this.Unknown_70h    = reader.ReadUInt32();
            this.Unknown_74h    = reader.ReadUInt32();
            this.Unk1ItemLength = reader.ReadUInt16();
            this.Unknown_7Ah    = reader.ReadUInt16();
            this.Unknown_7Ch    = reader.ReadUInt32();
            this.Unknown_80h    = reader.ReadUInt32();
            this.Unknown_84h    = reader.ReadUInt32();
            this.Unknown_88h    = reader.ReadUInt32();
            this.Unknown_8Ch    = reader.ReadUInt32();

            // read reference data
            this.Name = reader.ReadBlockAt <string_r>(
                this.NamePointer // offset
                );

            //if (Unknown_50h?.data_items?.Length > 0)
            //{ } // faceinit.expr, independent_mover.expr

            BuildBoneTracksDict();

            #region testing
            //long tlen = 0;
            //if (Unknown_20h?.data_items != null) foreach (var item in Unknown_20h.data_items) tlen = Math.Max(tlen, item.BlockLength);
            //if (Unk1ItemLength != tlen)
            //{ }//no hit

            //if (Unknown_4h != 1)
            //{ }//no hit
            //if (Unknown_8h != 0)
            //{ }//no hit
            //if (Unknown_Ch != 0)
            //{ }//no hit
            //if (Unknown_10h != 0)
            //{ }//no hit
            //if (Unknown_14h != 0)
            //{ }//no hit
            //if (Unknown_18h != 0)
            //{ }//no hit
            //if (Unknown_1Ch != 0)
            //{ }//no hit
            //if (NameLength != (Name?.Value?.Length ?? 0))
            //{ }//no hit
            //if (NameCapacity != (NameLength + 1))
            //{ }//no hit
            //if (Unknown_6Ch != 0)
            //{ }//no hit
            //if (Unknown_70h != 1)
            //{ }//no hit
            //switch (Unknown_74h)
            //{
            //    default:
            //        break;
            //}
            //if (Unknown_7Ah != 0)
            //{ }//no hit
            //switch (Unknown_7Ch)
            //{
            //    case 3:
            //    case 2:
            //        break;
            //    default:
            //        break;//no hit
            //}
            //if (Unknown_80h != 0)
            //{ }//no hit
            //if (Unknown_84h != 0)
            //{ }//no hit
            //if (Unknown_88h != 0)
            //{ }//no hit
            //if (Unknown_8Ch != 0)
            //{ }//no hit
            #endregion
        }