public bool Write(DAIIO io, bool skiplength = false) { if (!skiplength) { io.WriteBits(Length, LengthBits); } if (LookupTables == null) { LookupTables = new LookupTable[LookupTableCount]; for (int xb = 0; xb < LookupTableCount; xb++) { LookupTables[xb] = new LookupTable(); } } LookupTableCount = (short)LookupTables.Length; io.WriteBits(LookupTableCount, 0x10); for (int i = 0; i < LookupTableCount; i++) { LookupTables[i].Write(io); } if (InternalReferences == null) { InternalReferences = new int[InternalReferenceCount]; } InternalReferenceCount = (short)InternalReferences.Length; io.WriteBits(InternalReferenceCount, 0x10); for (int i = 0; i < InternalReferenceCount; i++) { io.WriteBits(InternalReferences[i], 0x20); } if (ExternalReferences == null) { ExternalReferences = new ExternalReference[ExternalReferenceCount]; for (int xb = 0; xb < ExternalReferenceCount; xb++) { ExternalReferences[xb] = new ExternalReference(); } } ExternalReferenceCount = (short)ExternalReferences.Length; io.WriteBits(ExternalReferenceCount, 0x10); for (int i = 0; i < ExternalReferenceCount; i++) { ExternalReferences[i].Write(io); } if (DeletedEntities == null) { DeletedEntities = new int[DeletedEntityCount]; } DeletedEntityCount = (short)DeletedEntities.Length; io.WriteBits(DeletedEntityCount, 0x10); for (int i = 0; i < DeletedEntityCount; i++) { io.WriteBits(DeletedEntities[i], 0x20); } return(true); }
public EntityMeta Read(DAIIO io) { xLength = io.ReadBit2(LengthBits); LookupTableCount = (short)io.ReadBit2(0x10); LookupTables = new LookupTable[LookupTableCount]; for (int i = 0; i < LookupTableCount; i++) { LookupTables[i] = new LookupTable().Read(io); } InternalReferenceCount = (short)io.ReadBit2(0x10); InternalReferences = new int[InternalReferenceCount]; for (int i = 0; i < InternalReferenceCount; i++) { InternalReferences[i] = io.ReadBit2(0x20); } ExternalReferenceCount = (short)io.ReadBit2(0x10); ExternalReferences = new ExternalReference[ExternalReferenceCount]; for (int i = 0; i < ExternalReferenceCount; i++) { ExternalReferences[i] = new ExternalReference().Read(io); } DeletedEntityCount = (short)io.ReadBit2(0x10); DeletedEntities = new int[DeletedEntityCount]; for (int i = 0; i < DeletedEntityCount; i++) { DeletedEntities[i] = io.ReadBit2(0x20); } return(this); }