public void FillFromNetworkBuffer(ref Byte[] buffer) { int offset = 24; num_image_slices = NetworkReaderHelper.ReadInt32(ref buffer, offset); image_slice_format = NetworkReaderHelper.ReadInt32(ref buffer, offset + 4); }
public void FillFromNetworkBuffer(ref Byte[] buffer) { int offset = 2080; exposure = NetworkReaderHelper.ReadInt32(ref buffer, offset); exposure_time = NetworkReaderHelper.ReadFloat(ref buffer, offset + 4); gain = NetworkReaderHelper.ReadFloat(ref buffer, offset + 8); pitch_angle = NetworkReaderHelper.ReadFloat(ref buffer, offset + 12); pitch_angle_estimate = NetworkReaderHelper.ReadFloat(ref buffer, offset + 16); }
public void FillFromNetworkBuffer(ref Byte[] buffer, int i) { int offset = 1076 + i * 132; len = NetworkReaderHelper.ReadInt32(ref buffer, offset); for (int x = 0; x < PSMoveSharpConstants.numButtons; x++) { button[x] = NetworkReaderHelper.ReadUint16(ref buffer, offset + 4 + x * 2); } }
protected void ReceiveCallback(IAsyncResult ar) { UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u; IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e; Byte[] buffer = null; try { buffer = u.EndReceive(ar, ref e); } catch (System.ObjectDisposedException) { _reading = false; return; } catch (System.Net.Sockets.SocketException) { _reading = false; return; } int packet_length = NetworkReaderHelper.ReadInt32(ref buffer, 12); int magic = NetworkReaderHelper.ReadInt32(ref buffer, 0); int code = NetworkReaderHelper.ReadInt32(ref buffer, 8); uint packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16); if (code == 1) { _latest_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16); _latest_state.serverConfig.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++) { _latest_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i); } _latest_state.navInfo.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++) { _latest_state.padData[i].FillFromNetworkBuffer(ref buffer, i); } if (_state_update_delegate != null) { _state_update_delegate(_latest_state); } // fire delegate here } _reading = false; }
protected void ReceiveCallback(IAsyncResult ar) { UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u; IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e; Byte[] buffer = null; try { buffer = u.EndReceive(ar, ref e); } catch (System.ObjectDisposedException) { _reading = false; return; } catch (System.Net.Sockets.SocketException) { _reading = false; return; } _rwl.AcquireWriterLock(-1); int packet_length = NetworkReaderHelper.ReadInt32(ref buffer, 12); int magic = NetworkReaderHelper.ReadInt32(ref buffer, 0); int code = NetworkReaderHelper.ReadInt32(ref buffer, 8); uint packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16); //UnityEngine.Debug.Log(code); if (code == 1) { _latest_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16); _latest_state.serverConfig.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++) { _latest_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i); _latest_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i); } _latest_state.navInfo.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++) { _latest_state.padData[i].FillFromNetworkBuffer(ref buffer, i); } } else if (code == 2) { byte[] slice = new byte[packet_length - 3]; int slice_num = NetworkReaderHelper.ReadByte(ref buffer, 20); int num_slices = NetworkReaderHelper.ReadByte(ref buffer, 21); int format = NetworkReaderHelper.ReadByte(ref buffer, 22); int row_height = 480 / num_slices; int row_start = row_height * slice_num; Array.Copy(buffer, 23, slice, 0, packet_length - 3); /* * System.IO.MemoryStream jpeg_stream = new System.IO.MemoryStream(jpeg_data); * System.Drawing.Image slice = null; * try * { * slice = Image.FromStream(jpeg_stream); * testByte = jpeg_data; * } * catch * { * // server sent a bad frame * } */ if (slice != null) { _latest_camera_frame_state.ProcessPacket((int)packet_index, slice, row_start, row_height); //_latest_camera_frame_state.BlitSliceOntoFullImage(slice, row_start, row_height); } } else if (code == 3) { PSMoveSharpState camera_state = new PSMoveSharpState(); camera_state.packet_index = NetworkReaderHelper.ReadUint32(ref buffer, 16); camera_state.serverConfig.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpState.PSMoveSharpNumMoveControllers; i++) { camera_state.gemStatus[i].FillFromNetworkBuffer(ref buffer, i); camera_state.gemStates[i].FillFromNetworkBuffer(ref buffer, i); camera_state.imageStates[i].FillFromNetworkBuffer(ref buffer, i); camera_state.pointerStates[i].FillFromNetworkBuffer(ref buffer, i); camera_state.sphereStates[i].FillFromNetworkBuffer(ref buffer, i); camera_state.positionPointerStates[i].FillFromNetworkBuffer(ref buffer, i); } camera_state.navInfo.FillFromNetworkBuffer(ref buffer); for (int i = 0; i < PSMoveSharpNavInfo.PSMoveSharpNumNavControllers; i++) { camera_state.padData[i].FillFromNetworkBuffer(ref buffer, i); } _latest_camera_frame_state.ProcessStatePacket((int)packet_index, camera_state); } _rwl.ReleaseWriterLock(); _reading = false; }