示例#1
0
 public void Read(Reader reader, bool inline = false)
 {
     if (inline)
     {
         ReadInternal(reader);
         Size = Pointer.Current(reader).offset - Offset.offset;
     }
     else
     {
         Pointer.DoAt(ref reader, Offset, () => {
             ReadInternal(reader);
             Size = Pointer.Current(reader).offset - Offset.offset;
         });
     }
 }
示例#2
0
        public static GameMaterial FromOffsetOrRead(Pointer offset, Reader reader)
        {
            if (offset == null)
            {
                return(null);
            }
            GameMaterial gm = FromOffset(offset);

            if (gm == null)
            {
                Pointer.DoAt(ref reader, offset, () => {
                    gm = GameMaterial.Read(reader, offset);
                    MapLoader.Loader.gameMaterials.Add(gm);
                });
            }
            return(gm);
        }