public wheel(byte[] DataStream) { Buffer.BlockCopy(DataStream, 0, wheel_base_O, 0, 44); Buffer.BlockCopy(DataStream, 44, wheel_ext_E, 0, 60); this.wheel_O = new wheel_o(wheel_base_O); this.wheel_E = new wheel_e(wheel_ext_E); }
public Packet Parse(byte[] DataStream, int[] lens) { Packet pkt; wheel_o[] myWheel_O = new wheel_o[4]; b = Split(DataStream, lens); header_c _header_C = new header_c(b[0]); header_m _header_M0 = new header_m(b[1]); header_m _header_M1 = new header_m(b[2]); state _state = new state(b[3]); header_m _header_M2 = new header_m(b[4]); myWheel_O[0] = new wheel_o(b[5]); myWheel_O[1] = new wheel_o(b[6]); myWheel_O[2] = new wheel_o(b[7]); myWheel_O[3] = new wheel_o(b[8]); header_m _header_M3 = new header_m(b[9]); pkt = new Packet(_header_C, _header_M0, _header_M1, _state, _header_M2, myWheel_O, _header_M3); return(pkt); }
public byte[] Serialize(wheel_o wheel_O) { List <byte> DataStream = new List <byte>(); DataStream.AddRange(BitConverter.GetBytes(wheel_O.playerId)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.id)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.flags)); DataStream.AddRange(wheel_O.spare0); DataStream.AddRange(BitConverter.GetBytes(wheel_O.radiusStatic)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.springCompression)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.rotAngle)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.slip)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.steeringAngle)); DataStream.AddRange(BitConverter.GetBytes(wheel_O.spare1[0])); DataStream.AddRange(BitConverter.GetBytes(wheel_O.spare1[1])); DataStream.AddRange(BitConverter.GetBytes(wheel_O.spare1[2])); DataStream.AddRange(BitConverter.GetBytes(wheel_O.spare1[3])); DataStream.RemoveAt(5); DataStream.RemoveAt(6); return(DataStream.ToArray()); }
public Packet Parse(byte[] DataStream) { Packet pkt; int offset = 0; int entry_hdr_size = 16; byte[] b = new byte[4096]; byte[] filtered_packet = new byte[4096]; byte[] wheel_pkg = new byte[512]; byte[] state_pkg = new byte[512]; wheel_o[] myWheel = new wheel_o[4]; state _state = new state(new byte[1024]); header_m _header_M0 = new header_m(0, 0, 1, 0); // RDB_PKG_ID_START_OF_FRAME header_m _header_M1 = new header_m(0, 0, 0, 0); // Object state header_m _header_M2 = new header_m(0, 0, 0, 0); // Wheel frame header_m _header_M3 = new header_m(0, 0, 2, 0); // RDB_PKG_ID_END_OF_FRAME // Read main header header_c _header_C = new header_c(DataStream); // Move past header. Data segment is the first entry header. offset += (int)_header_C.headerSize; Console.WriteLine("Frame no: " + _header_C.frameNo); // Then check reamining sub packages while (offset < (int)_header_C.headerSize + (int)_header_C.dataSize) { // Read entry header Buffer.BlockCopy(DataStream, offset, b, 0, entry_hdr_size); header_m entry_header = new header_m(b); // Move ahead passed entry header, read data offset += (int)entry_header.headerSize; if (entry_header.dataSize > 0) { Buffer.BlockCopy(DataStream, offset, b, 0, (int)entry_header.dataSize); if (entry_header.pkgId == 9) // RDB_PKG_ID_OBJECT_STATE { _header_M1 = entry_header; for (int i = 0; i < entry_header.dataSize / entry_header.elementSize; i++) { Buffer.BlockCopy(b, i * (int)entry_header.elementSize, state_pkg, 0, (int)entry_header.elementSize); state state_tmp = new state(state_pkg); Console.WriteLine("state :" + state_tmp.state_base.id); if (state_tmp.state_base.id == 1) { _state = state_tmp; Console.WriteLine("------Storing state pos (" + _state.state_base.pos.x + ", " + _state.state_base.pos.y + ", " + _state.state_base.pos.z + ")"); } } } else if (entry_header.pkgId == 14) // RDB_PKG_ID_WHEEL { _header_M2 = entry_header; for (int i = 0; i < entry_header.dataSize / entry_header.elementSize; i++) { Buffer.BlockCopy(b, i * (int)entry_header.elementSize, wheel_pkg, 0, (int)entry_header.elementSize); wheel_o tmp_wheel = new wheel_o(wheel_pkg); Console.WriteLine("wheel: " + tmp_wheel.playerId); if (tmp_wheel.playerId == 1) { Console.WriteLine("------Storing wheel no " + i + " steering: " + tmp_wheel.steeringAngle); myWheel[tmp_wheel.id] = new wheel_o(wheel_pkg); } } } else { Console.WriteLine("Discarded package id: " + entry_header.pkgId); } offset += (int)entry_header.dataSize; } } if (_header_M1.pkgId == 0 | _header_M2.pkgId == 0) { Console.WriteLine("Did not get start and/or end frame!\n"); } pkt = new Packet(_header_C, _header_M0, _header_M1, _state, _header_M2, myWheel, _header_M3); return(pkt); }
public wheel(wheel_o wheel_O, wheel_e wheel_E) { this.wheel_O = wheel_O; this.wheel_E = wheel_E; }