Пример #1
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
                );
        }
Пример #2
0
 public override void Read(ResourceDataReader reader, params object[] parameters)
 {
     Value = reader.ReadUInt32();
 }
Пример #3
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            base.Read(reader, parameters);

            this.NodesPointer                = reader.ReadUInt64();
            this.NodesCount                  = reader.ReadUInt32();
            this.NodesCountVehicle           = reader.ReadUInt32();
            this.NodesCountPed               = reader.ReadUInt32();
            this.Unk24                       = reader.ReadUInt32();
            this.LinksPtr                    = reader.ReadUInt64();
            this.LinksCount                  = reader.ReadUInt32();
            this.Unk34                       = reader.ReadUInt32();
            this.JunctionsPtr                = reader.ReadUInt64();
            this.JunctionHeightmapBytesPtr   = reader.ReadUInt64();
            this.Unk48                       = reader.ReadUInt32();
            this.Unk4C                       = reader.ReadUInt32();
            this.JunctionRefsPtr             = reader.ReadUInt64();
            this.JunctionRefsCount0          = reader.ReadUInt16();
            this.JunctionRefsCount1          = reader.ReadUInt16();
            this.Unk5C                       = reader.ReadUInt32();
            this.JunctionsCount              = reader.ReadUInt32();
            this.JunctionHeightmapBytesCount = reader.ReadUInt32();
            this.Unk68                       = reader.ReadUInt32();
            this.Unk6C                       = reader.ReadUInt32();

            this.Nodes     = reader.ReadStructsAt <Node>(this.NodesPointer, this.NodesCount);
            this.Links     = reader.ReadStructsAt <NodeLink>(this.LinksPtr, this.LinksCount);
            this.Junctions = reader.ReadStructsAt <NodeJunction>(this.JunctionsPtr, this.JunctionsCount);
            this.JunctionHeightmapBytes = reader.ReadBytesAt(this.JunctionHeightmapBytesPtr, this.JunctionHeightmapBytesCount);
            this.JunctionRefs           = reader.ReadStructsAt <NodeJunctionRef>(this.JunctionRefsPtr, this.JunctionRefsCount1);
        }
Пример #4
0
        /// <summary>
        /// Reads the data-block from a stream.
        /// </summary>
        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.ReadUInt32();
            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());
            }
        }
Пример #5
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
        }
Пример #6
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
        }
Пример #7
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            base.Read(reader, parameters);

            ContentFlags       = (NavMeshFlags)reader.ReadUInt32();
            VersionUnk1        = reader.ReadUInt32();
            Unused_018h        = reader.ReadUInt32();
            Unused_01Ch        = reader.ReadUInt32();
            Transform          = reader.ReadMatrix();
            AABBSize           = reader.ReadVector3();
            AABBUnk            = reader.ReadUInt32();
            VerticesPointer    = reader.ReadUInt64();
            Unused_078h        = reader.ReadUInt32();
            Unused_07Ch        = reader.ReadUInt32();
            IndicesPointer     = reader.ReadUInt64();
            EdgesPointer       = reader.ReadUInt64();
            EdgesIndicesCount  = reader.ReadUInt32();
            AdjAreaIDs         = reader.ReadStruct <NavMeshUintArray>();
            PolysPointer       = reader.ReadUInt64();
            SectorTreePointer  = reader.ReadUInt64();
            PortalsPointer     = reader.ReadUInt64();
            PortalLinksPointer = reader.ReadUInt64();
            VerticesCount      = reader.ReadUInt32();
            PolysCount         = reader.ReadUInt32();
            AreaID             = reader.ReadUInt32();
            TotalBytes         = reader.ReadUInt32();
            PointsCount        = reader.ReadUInt32();
            PortalsCount       = reader.ReadUInt32();
            PortalLinksCount   = reader.ReadUInt32();
            Unused_154h        = reader.ReadUInt32();
            Unused_158h        = reader.ReadUInt32();
            Unused_15Ch        = reader.ReadUInt32();
            VersionUnk2        = reader.ReadUInt32();
            Unused_164h        = reader.ReadUInt32();
            Unused_168h        = reader.ReadUInt32();
            Unused_16Ch        = reader.ReadUInt32();



            Vertices    = reader.ReadBlockAt <NavMeshList <NavMeshVertex> >(VerticesPointer);
            Indices     = reader.ReadBlockAt <NavMeshList <ushort> >(IndicesPointer);
            Edges       = reader.ReadBlockAt <NavMeshList <NavMeshEdge> >(EdgesPointer);
            Polys       = reader.ReadBlockAt <NavMeshList <NavMeshPoly> >(PolysPointer);
            SectorTree  = reader.ReadBlockAt <NavMeshSector>(SectorTreePointer);
            Portals     = reader.ReadStructsAt <NavMeshPortal>(PortalsPointer, PortalsCount);
            PortalLinks = reader.ReadUshortsAt(PortalLinksPointer, PortalLinksCount);



            ////testing!
            //if (VersionUnk1 != 0x00010011)
            //{ }
            //if (Unused_018h != 0)
            //{ }
            //if (Unused_01Ch != 0)
            //{ }
            //if (AABBUnk != 0x7F800001)
            //{ }
            //if (Unused_078h != 0)
            //{ }
            //if (Unused_07Ch != 0)
            //{ }
            //if (Unused_154h != 0)
            //{ }
            //if (Unused_158h != 0)
            //{ }
            //if (Unused_15Ch != 0)
            //{ }
            //if (Unused_164h != 0)
            //{ }
            //if (Unused_168h != 0)
            //{ }
            //if (Unused_16Ch != 0)
            //{ }
            //switch (VersionUnk2.Hash)
            //{
            //    case 0: //vehicle
            //        break;
            //    case 0x85CB3561: //grid
            //        break;
            //    default:
            //        break;
            //}
            //UpdateCounts();
        }
Пример #8
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_10h             = reader.ReadInt32();
            this.Unknown_14h             = reader.ReadInt16();
            this.HasEncryptedStrings     = reader.ReadByte();
            this.Unknown_17h             = reader.ReadByte();
            this.Unknown_18h             = reader.ReadInt32();
            this.RootBlockIndex          = reader.ReadInt32();
            this.StructureInfosPointer   = reader.ReadInt64();
            this.EnumInfosPointer        = reader.ReadInt64();
            this.DataBlocksPointer       = reader.ReadInt64();
            this.NamePointer             = reader.ReadInt64();
            this.EncryptedStringsPointer = reader.ReadInt64();
            this.StructureInfosCount     = reader.ReadInt16();
            this.EnumInfosCount          = reader.ReadInt16();
            this.DataBlocksCount         = reader.ReadInt16();
            this.Unknown_4Eh             = reader.ReadInt16();
            this.Unknown_50h             = reader.ReadUInt32();
            this.Unknown_54h             = reader.ReadUInt32();
            this.Unknown_58h             = reader.ReadUInt32();
            this.Unknown_5Ch             = reader.ReadUInt32();
            this.Unknown_60h             = reader.ReadUInt32();
            this.Unknown_64h             = reader.ReadUInt32();
            this.Unknown_68h             = reader.ReadUInt32();
            this.Unknown_6Ch             = reader.ReadUInt32();

            // read reference data
            this.StructureInfos = reader.ReadBlockAt <ResourceSimpleArray <MetaStructureInfo> >(
                (ulong)this.StructureInfosPointer, // offset
                this.StructureInfosCount
                );

            this.EnumInfos = reader.ReadBlockAt <ResourceSimpleArray <MetaEnumInfo> >(
                (ulong)this.EnumInfosPointer, // offset
                this.EnumInfosCount
                );

            this.DataBlocks = reader.ReadBlockAt <ResourceSimpleArray <MetaDataBlock> >(
                (ulong)this.DataBlocksPointer, // offset
                this.DataBlocksCount
                );

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

            if (!string.IsNullOrEmpty(Name))
            {
            }

            //Strings = MetaTypes.GetStrings(this);

#if DEBUG
            EncryptedStrings = reader.ReadBlockAt <MetaEncryptedStringsBlock>((ulong)EncryptedStringsPointer);

            Analyzer = new ResourceAnalyzer(reader);
#endif
        }
Пример #9
0
        public override void Read(ResourceDataReader reader, params object[] parameters)
        {
            base.Read(reader, parameters);

            ContentFlags         = (NavMeshFlags)reader.ReadUInt32();
            VersionUnk1          = reader.ReadUInt32();
            Unused_018h          = reader.ReadUInt32();
            Unused_01Ch          = reader.ReadUInt32();
            Transform            = reader.ReadMatrix();
            AABBSize             = reader.ReadVector3();
            AABBUnk              = reader.ReadSingle();
            VerticesPointer      = reader.ReadUInt64();
            Unused_078h          = reader.ReadUInt32();
            Unused_07Ch          = reader.ReadUInt32();
            IndicesPointer       = reader.ReadUInt64();
            AdjPolysPointer      = reader.ReadUInt64();
            AdjPolysIndicesCount = reader.ReadUInt32();
            AdjAreaIDs           = reader.ReadStruct <NavMeshUintArray>();
            PolysPointer         = reader.ReadUInt64();
            SectorTreePointer    = reader.ReadUInt64();
            PortalsPointer       = reader.ReadUInt64();
            PortalLinksPointer   = reader.ReadUInt64();
            VerticesCount        = reader.ReadUInt32();
            PolysCount           = reader.ReadUInt32();
            AreaID           = reader.ReadUInt32();
            TotalBytes       = reader.ReadUInt32();
            PointsCount      = reader.ReadUInt32();
            PortalsCount     = reader.ReadUInt32();
            PortalLinksCount = reader.ReadUInt32();
            Unused_154h      = reader.ReadUInt32();
            Unused_158h      = reader.ReadUInt32();
            Unused_15Ch      = reader.ReadUInt32();
            VersionUnk2      = reader.ReadUInt32();
            Unused_164h      = reader.ReadUInt32();
            Unused_168h      = reader.ReadUInt32();
            Unused_16Ch      = reader.ReadUInt32();



            Vertices    = reader.ReadBlockAt <NavMeshList <NavMeshVertex> >(VerticesPointer);
            Indices     = reader.ReadBlockAt <NavMeshList <ushort> >(IndicesPointer);
            AdjPolys    = reader.ReadBlockAt <NavMeshList <NavMeshAdjPoly> >(AdjPolysPointer);
            Polys       = reader.ReadBlockAt <NavMeshList <NavMeshPoly> >(PolysPointer);
            SectorTree  = reader.ReadBlockAt <NavMeshSector>(SectorTreePointer);
            Portals     = reader.ReadStructsAt <NavMeshPortal>(PortalsPointer, PortalsCount);
            PortalLinks = reader.ReadUshortsAt(PortalLinksPointer, PortalLinksCount);
        }