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; }); } }
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); }