Example #1
0
 void ReadGameObjectReferences()
 {
     //Starts directly after the name table. Assume we're already there
     gameObjectReferences = new GameObjectTableHead[refGameObjectCount];
     for(int i = 0; i<refGameObjectCount; i++)
     {
         GameObjectTableHead h = GameObjectTableHead.ReadEntry(stream, this);
         gameObjectReferences[i] = h;
         DebugDump($"Game Object Reference {i} @ {h.startPos}", ConsoleColor.Blue, "cType", h.coreType, "u1", h.unknown1.ToString(), "oType", h.objectType, "u2", h.unknown2.ToString(), "i", h.index.ToString(), "name", h.name, "u4", h.unknown4.ToString());
     }
 }
Example #2
0
 public string GetReferencedUAssetPathname(int index)
 {
     if (index < 0)
     {
         GameObjectTableHead hr = gameObjectReferences[-index - 1];
         return GetReferencedUAssetPathname(hr);
     }
     else
     {
         GameObjectTableHead hr = gameObjectReferences[index];
         return GetReferencedUAssetPathname(hr);
     }
 }
        public static GameObjectTableHead ReadEntry(IOMemoryStream ms, UAssetFile f)
        {
            //Read in
            GameObjectTableHead g = new GameObjectTableHead();

            g.startPos   = ms.position;
            g.coreType   = ms.ReadNameTableEntry(f);
            g.unknown1   = ms.ReadInt();
            g.objectType = ms.ReadNameTableEntry(f);
            g.unknown2   = ms.ReadInt();
            g.index      = ms.ReadInt();
            g.name       = ms.ReadNameTableEntry(f);
            g.unknown4   = ms.ReadInt();
            return(g);
        }
Example #4
0
        public string GetReferencedUAssetPathname(GameObjectTableHead h)
        {
            //Check if we're actually looking for something else
            if (h.index < 0)
            {
                GameObjectTableHead hr = gameObjectReferences[-h.index - 1];
                return GetReferencedUAssetPathname(hr);
            }

            //Get the full path
            bool ok = TryGetFullPackagePath(h.name, out string pathname);

            //Stop if not ok
            if (!ok)
                return null;

            return pathname;
        }