public void Read(BinaryReader reader) { ushort entityCount = reader.ReadUInt16(); entities = new EntitySyncData[entityCount]; for (int i = 0; i < entityCount; ++i) { var edata = new EntitySyncData(); entities[i] = edata; edata.entityID = reader.ReadUInt16(); var componentCount = reader.ReadByte(); edata.components = new ComponentSyncData[componentCount]; for (int j = 0; j < componentCount; ++j) { var cdata = new ComponentSyncData(); edata.components[j] = cdata; cdata.componentID = reader.ReadByte(); var dataSize = reader.ReadUInt16(); cdata.data = reader.ReadBytes(dataSize); } } }
FramePacket BuildFramePacket() { FramePacket packet = new FramePacket(); var entities = syncedEntities.GetEntities(); packet.entities = new EntitySyncData[entities.Length]; int eidx = 0; foreach (var ent in syncedEntities.GetEntities()) { var syncData = new EntitySyncData(); packet.entities[eidx] = syncData; syncData.entityID = ent.frameSync.entityID; var syncComponents = ent.GetSyncComponents(); syncData.components = new ComponentSyncData[syncComponents.Length]; for (int j = 0; j < syncComponents.Length; ++j) { var pair = syncComponents[j]; var compData = new ComponentSyncData(); syncData.components[j] = compData; compData.componentID = (byte)pair.index; using (var stream = new MemoryStream()) { var writer = new BinaryWriter(stream); pair.component.WriteBytes(writer); compData.data = stream.ToArray(); } } ++eidx; } return(packet); }