// Load the standard pattern of [UINT COUNT][UINT OFFSET TO TABLE] -> [UINT OFFSET 1][UINT OFFSET 2]... public IEnumerable <TDICTObj> LoadDICTObjList <TDICTObj>() where TDICTObj : ChunkDICTObject, new() { TDICTObj[] result = null; CGFXDebug.LoadStart($"HEADER of list of {typeof(TDICTObj).Name} [LoadDICTObjList]", this); var count = ReadU32(); var locationTable = ReadOffset(); if (count > 0) { result = new TDICTObj[count]; PushReadPosition(); SetReadPosition(locationTable); CGFXDebug.LoadStart($"List of {typeof(TDICTObj).Name} [LoadDICTObjList]", this); for (var index = 0; index < count; index++) { result[index] = LoadDICTObj <TDICTObj>(); } PopReadPosition(); } return(result); }
// Load standard pattern of offset to another object elsewhere (not inline) public TDICTObj LoadDICTObj <TDICTObj>() where TDICTObj : ChunkDICTObject, new() { TDICTObj result = null; LoadIndirect(() => { var obj = new TDICTObj(); obj.Load(this); result = obj; }); return(result); }