public void ReadFromStream(Stream stream) { Offsets = stream.ReadContent<YkdOffsets>(); Resources = new YkdResource[Offsets.Count]; for (int i = 0; i < Resources.Length; i++) { YkdResource resource = Resources[i] = new YkdResource(); stream.SetPosition(Offsets[i]); resource.ReadFromStream(stream); } if (!stream.IsEndOfStream()) throw new InvalidDataException(); }
public void ReadFromStream(Stream stream) { Offsets = stream.ReadContent <YkdOffsets>(); Resources = new YkdResource[Offsets.Count]; for (int i = 0; i < Resources.Length; i++) { YkdResource resource = Resources[i] = new YkdResource(); stream.SetPosition(Offsets[i]); resource.ReadFromStream(stream); } if (!stream.IsEndOfStream()) { throw new InvalidDataException(); } }
public void Duplicate(YkdResource item) { YkdResource[] oldResources = Resources; YkdResource[] newResources = new YkdResource[Count + 1]; int finded = 0; for (int i = 0; i < oldResources.Length; i++) { YkdResource resource = oldResources[i]; newResources[i + finded] = resource; if (resource == item) { Offsets.Insert(i, resource.CalcSize()); newResources[i + 1] = resource.Clone(); Resources = newResources; finded++; } } }
public void Remove(YkdResource item) { YkdResource[] oldResources = Resources; YkdResource[] newResources = new YkdResource[Count - 1]; int finded = 0; for (int i = 0; i < oldResources.Length; i++) { YkdResource resource = oldResources[i]; if (i - finded < newResources.Length) newResources[i - finded] = resource; if (resource == item) { Offsets.Remove(i); Resources = newResources; finded++; } } }
public void Remove(YkdResource item) { YkdResource[] oldResources = Resources; YkdResource[] newResources = new YkdResource[Count - 1]; int finded = 0; for (int i = 0; i < oldResources.Length; i++) { YkdResource resource = oldResources[i]; if (i - finded < newResources.Length) { newResources[i - finded] = resource; } if (resource == item) { Offsets.Remove(i); Resources = newResources; finded++; } } }