private void EnsureLoaded() { lock (this) { if (_array != null) { return; } _array = new T[Length]; BspFile.ReadLumpValues(LumpType, 0, _array, 0, Length); } }
private T GetSingle(int index) { if (_array != null) { return(_array[index]); } if (_sSingleArray == null) { _sSingleArray = new T[1]; } BspFile.ReadLumpValues(LumpType, index, _sSingleArray, 0, 1); return(_sSingleArray[0]); }
public IEnumerable <T> Range(int start, int count) { if (_array != null) { return(_array.Skip(start).Take(count)); } if (start + count > Length) { count = Length - start; } if (count <= 0) { return(Enumerable.Empty <T>()); } var array = new T[count]; BspFile.ReadLumpValues(LumpType, start, array, 0, count); return(array); }