/// <summary> /// Method to parse and send an event when Pose Data is transfer from smart device /// </summary> /// <param name="recBuffer">The data that was recieved from the smart device</param> private void HandlePoseData(byte[] recBuffer) { Stream stream = new MemoryStream(recBuffer); BinaryFormatter formatter = new BinaryFormatter(); if (SDK_BUILD_NO == 1) //support in case we do not want acceleration data being streamed { PoseSerializer poseData = (PoseSerializer)formatter.Deserialize(stream); if (OnPoseData != null) { OnPoseData(poseData.V3, poseData.Q); } } else //stream of acceleration data { PoseSerializerWithAcceleration poseData = (PoseSerializerWithAcceleration)formatter.Deserialize(stream); if (OnPoseData != null) { OnPoseData(poseData.Position, poseData.Rotation); } if (OnAccelerationData != null) { OnAccelerationData(poseData.Acceleration); } } }
/// <summary> /// Method to parse and send an event when Pose Data is transfer from smart device /// </summary> /// <param name="recBuffer">The data that was recieved from the smart device</param> private void HandlePoseData(byte[] recBuffer) { Stream stream = new MemoryStream(recBuffer); BinaryFormatter formatter = new BinaryFormatter(); PoseSerializer poseData = (PoseSerializer)formatter.Deserialize(stream); if (OnPoseData != null) { OnPoseData(poseData.V3, poseData.Q); } }
// Token: 0x0600194E RID: 6478 RVA: 0x000F2FD8 File Offset: 0x000F11D8 public static void SerializePose(CosmeticScript cosmeticScript, Transform root, string poseName) { StudentCosmeticSheet studentCosmeticSheet = cosmeticScript.CosmeticSheet(); SerializedPose serializedPose; serializedPose.CosmeticData = JsonUtility.ToJson(studentCosmeticSheet); serializedPose.BoneData = PoseSerializer.getBoneData(root); string contents = JsonUtility.ToJson(serializedPose); string text = string.Format("{0}/Poses/{1}", Application.streamingAssetsPath, poseName + ".txt"); new FileInfo(text).Directory.Create(); File.WriteAllText(text, contents); }
private void HandleMessage(int bytesReceived) { MemoryStream stream = new MemoryStream(this.buf, 0, bytesReceived, false, true); ChannelSerializerInfo serializerType = ReadHeader(stream); object o = null; switch (serializerType) { case ChannelSerializerInfo.BinarySerializer: if (this.formatter == null) { this.formatter = new BinaryFormatter(); //lazy cum load. } o = this.formatter.Deserialize(stream); break; case ChannelSerializerInfo.TestSerializer: o = TestSerializer.Deserialize(stream); break; case ChannelSerializerInfo.SceneEstimatorSerializer: o = SceneEstimatorSerializer.Deserialize(stream, name); if (o == null) { return; } break; case ChannelSerializerInfo.PoseAbsoluteSerializer: case ChannelSerializerInfo.PoseRelativeSerializer: o = PoseSerializer.Deserialize(stream, serializerType, name); if (o == null) { return; } break; case ChannelSerializerInfo.SideObstacleSerializer: o = SideObstaclesSerializer.Deserialize(stream, name); if (o == null) { return; } break; case ChannelSerializerInfo.SideRoadEdgeSerializer: o = SideRoadEdgeSerializer.Deserialize(stream, name); if (o == null) { return; } break; case ChannelSerializerInfo.RoadBearing: o = RoadBearingSerializer.Deserialize(stream); if (o == null) { return; } break; case ChannelSerializerInfo.ExplicitlyUnsupported: //drop this message return; default: throw new NotImplementedException("Attempt to use unsupported deserializer for Receive: " + serializerType.ToString()); } lock (this.listeners) { foreach (KeyValuePair <uint, IChannelListener> kvp in this.listeners) { IChannelListener listener = kvp.Value; try { if (listener is IAdvancedChannelListener) { if (listener != null) { (listener as IAdvancedChannelListener).MessageArrived(this.name, o, this.seqNumberRX); } } if (listener != null) { listener.MessageArrived(this.name, o); } } catch (Exception ex) { Console.WriteLine("Listener Exception: " + ex.Message); Console.WriteLine("Stack Trace:"); Console.WriteLine(ex.StackTrace); } } } packetRXCount++; }
/// <summary> /// Handles sending all data to the VR display, this includes pose data via the naviPoseconnection and touch data via the rpcConnection /// It also handles receiving any data from the VR display. Currently, it just listens for which connection should send which type of data /// </summary> void Update() { int recHostId; int connectionId; int channelId; byte[] recBuffer = new byte[1024]; int bufferSize = 1024; int dataSize; byte error; NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out channelId, recBuffer, bufferSize, out dataSize, out error); switch (recData) { case NetworkEventType.DataEvent: if (!naviPoseAssigned || !touchConnectionAssigned) { Stream stream = new MemoryStream(recBuffer); BinaryFormatter formatter = new BinaryFormatter(); string message = formatter.Deserialize(stream) as string; AssignID(connectionId, message); } break; case NetworkEventType.DisconnectEvent: OnDisconnect(connectionId); break; default: //i.e. NetworkEventType.ConnectEvent, NetworkEventType.Nothing:\ break; } if (naviPoseConnectionID > 0) { byte[] buffer = new byte[BUFFER_SIZE]; Stream stream = new MemoryStream(buffer); BinaryFormatter formatter = new BinaryFormatter(); PoseSerializer pose = new PoseSerializer(); pose.Fill(TransformManagerInterface.Instance.transform.position, TransformManagerInterface.Instance.transform.rotation); formatter.Serialize(stream, pose); NetworkTransport.Send(socketID, naviPoseConnectionID, myUnreliableChannelId, buffer, BUFFER_SIZE, out error); //send full buffer } if (touchConnectionID > 0) { BinaryFormatter formatter = new BinaryFormatter(); foreach (Touch t in Input.touches){ byte[] buffer = new byte[BUFFER_SIZE]; Stream stream = new MemoryStream(buffer); RPCSerializer rpc = new RPCSerializer(); rpc.methodName = TOUCH_METHOD_ID; rpc.args = new object[1]; TouchSerializer ts = new TouchSerializer(); ts.Fill(t); rpc.args[0] = ts; formatter.Serialize(stream, rpc); NetworkTransport.Send(socketID, touchConnectionID, myReiliableChannelId, buffer, BUFFER_SIZE, out error); } } }
/// <summary> /// Handles sending all data to the VR display, this includes pose data via the naviPoseconnection and touch data via the rpcConnection /// It also handles receiving any data from the VR display. Currently, it just listens for which connection should send which type of data /// </summary> void Update() { int recHostId; int connectionId; int channelId; byte[] recBuffer = new byte[1024]; int bufferSize = 1024; int dataSize; byte error; NetworkEventType recData = NetworkTransport.Receive(out recHostId, out connectionId, out channelId, recBuffer, bufferSize, out dataSize, out error); switch (recData) { case NetworkEventType.DataEvent: if (!naviPoseAssigned || !touchConnectionAssigned) { Stream stream = new MemoryStream(recBuffer); BinaryFormatter formatter = new BinaryFormatter(); string message = formatter.Deserialize(stream) as string; AssignID(connectionId, message); } break; case NetworkEventType.DisconnectEvent: OnDisconnect(connectionId); break; default: //i.e. NetworkEventType.ConnectEvent, NetworkEventType.Nothing:\ break; } if (naviPoseConnectionID > 0) { byte[] buffer = new byte[BUFFER_SIZE]; Stream stream = new MemoryStream(buffer); BinaryFormatter formatter = new BinaryFormatter(); PoseSerializer pose = new PoseSerializer(); pose.Fill(TransformManagerInterface.Instance.transform.position, TransformManagerInterface.Instance.transform.rotation); formatter.Serialize(stream, pose); NetworkTransport.Send(socketID, naviPoseConnectionID, myUnreliableChannelId, buffer, BUFFER_SIZE, out error); //send full buffer } if (touchConnectionID > 0) { BinaryFormatter formatter = new BinaryFormatter(); foreach (Touch t in Input.touches) { byte[] buffer = new byte[BUFFER_SIZE]; Stream stream = new MemoryStream(buffer); RPCSerializer rpc = new RPCSerializer(); rpc.methodName = TOUCH_METHOD_ID; rpc.args = new object[1]; TouchSerializer ts = new TouchSerializer(); ts.Fill(t); rpc.args[0] = ts; formatter.Serialize(stream, rpc); NetworkTransport.Send(socketID, touchConnectionID, myReiliableChannelId, buffer, BUFFER_SIZE, out error); } } }