private void NoteSpawnedHandler(Note noteSpawned, Vector3 locationInNoteLane) { NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Control); if (forceScalingModeToggle.isOn) { outMessage.WriteInt32((int)MessageType.ControlType.SpawnForceScalingNote); } else { outMessage.WriteInt32((int)MessageType.ControlType.SpawnNote); } outMessage.WriteInt32(noteSpawned.noteLaneIndex); outMessage.WriteFloat(noteSpawned.duration); outMessage.WriteVector3(locationInNoteLane); if (forceScalingModeToggle.isOn) { outMessage.WriteFloat(noteSpawner.noteScales[noteSpawned.noteLaneIndex]); } m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); }
private void FingerForceDataReceivedHandler(Dictionary <Finger, double> fingerData) { if (m_isRunning) { double val = 0; foreach (Finger finger in fingerData.Keys) { double value = fingerData[finger] - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); if (value < 0.0) { value = 0.0; } Toggle fingerToggle = GetFingerToggle(finger); if (fingerToggle != null && fingerToggle.isOn) { val += value; } } lineGraph.Plot(m_forceTrackTime, val, Constants.FORCE_PLOT_SERIES_NAME); if (!string.IsNullOrEmpty(m_appState.HololensIP)) { NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Data); outMessage.WriteFloat(m_forceTrackTime); outMessage.WriteFloat((float)val); m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); } } }
private void StartMeasurement() { m_isRunning = true; // Disable the start button if we're running the measurements. // Enable the stop button as a result. startButton.interactable = false; stopButton.interactable = true; m_forceTrackTime = 0.0f; lineGraph.ClearPlot(Constants.FORCE_PLOT_SERIES_NAME); NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Control); outMessage.WriteInt32((int)MessageType.ControlType.Start); List <Finger> fingersToPress = new List <Finger>(); for (int i = 0; i < 5; i++) { Finger temp = (Finger)i; Toggle toggle = GetFingerToggle(temp); if (toggle.isOn) { fingersToPress.Add(temp); } } outMessage.WriteInt32(fingersToPress.Count); for (int i = 0; i < fingersToPress.Count; i++) { outMessage.WriteInt32((int)fingersToPress[i]); } double totalMaxForce = 0.0; foreach (Finger finger in Constants.FINGER_LIST) { totalMaxForce += m_appState.GetCurrentHandData().GetFingerMaxForce(finger) - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); } lineGraph.maxY = (float)totalMaxForce; outMessage.WriteDouble(totalMaxForce); outMessage.WriteFloat(m_appState.StaticPhaseDuration); outMessage.WriteFloat(m_appState.IncreasingPhaseDuration); outMessage.WriteFloat(m_appState.PlateauPhaseDuration); outMessage.WriteFloat(m_appState.DecreasingPhaseDuration); outMessage.WriteFloat(m_appState.StaticEndPhaseDuration); outMessage.WriteDouble(GetPlateauPhaseValue()); m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); }
private void FingerForceDataReceivedHandler(Dictionary <Finger, double> fingerData) { if (m_isRunning) { NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Data); foreach (Finger finger in fingerData.Keys) { int fingerNumber = (int)finger; double value = fingerData[finger] - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); if (value < 0.0) { value = 0.0; } BarGraph fingerGraph = GetFingerGraph(finger); double maxForce = m_appState.GetCurrentHandData().GetFingerMaxForce(finger); float plotValue = 0.0f; if (!double.IsNaN(maxForce)) { plotValue = (float)(value / maxForce * 100); fingerGraph.PlotY(plotValue); } outMessage.WriteInt32(fingerNumber); outMessage.WriteFloat(plotValue); } m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); } }
private void UpdateForceIndicator(int index) { Finger finger = (Finger)index; float forceLeeway = GetForceLeewayValue(); double maxFingerForce = m_appState.GetCurrentHandData().GetFingerMaxForce(finger) - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); float forcePercentage = GetFingerForcePercentage(index); float targetValue = (float)maxFingerForce * forcePercentage; float forceThresholdMin = Mathf.Clamp((float)maxFingerForce * (forcePercentage - forceLeeway / 2.0f), (float)m_appState.GetCurrentHandData().GetFingerBaseForce(finger), (float)maxFingerForce); float forceThresholdMax = Mathf.Clamp((float)maxFingerForce * (forcePercentage + forceLeeway / 2.0f), (float)m_appState.GetCurrentHandData().GetFingerBaseForce(finger), (float)maxFingerForce); m_fingerInputController.fingerForceMinThresholds[index] = forceThresholdMin; m_fingerInputController.fingerForceMaxThresholds[index] = forceThresholdMax; fingerForceGraphs[index].minTargetValue = Mathf.FloorToInt((float)(forceThresholdMin / maxFingerForce) * 100.0f); fingerForceGraphs[index].maxTargetValue = Mathf.FloorToInt((float)(forceThresholdMax / maxFingerForce) * 100.0f); forceScalingNoteActivators[index].GetComponent <ForceScalingNoteActivatorController>().SetForceRangePercentage((float)(forceThresholdMin / maxFingerForce) * 100.0f, (float)(forceThresholdMax / maxFingerForce) * 100.0f); noteSpawner.noteScales[index] = forcePercentage; NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Control); outMessage.WriteInt32((int)MessageType.ControlType.InitVisualizations); for (int i = 0; i < 5; i++) { outMessage.WriteInt32(i); outMessage.WriteFloat(fingerForceGraphs[i].minTargetValue); outMessage.WriteFloat(fingerForceGraphs[i].maxTargetValue); } m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); }
private void FingerForceDataReceivedHandler(Dictionary <Finger, double> fingerData) { NetOutMessage outMessage = new NetOutMessage(); outMessage.WriteInt32((int)MessageType.Command.Data); foreach (Finger finger in fingerData.Keys) { outMessage.WriteInt32((int)finger); double adjustedForceValue = fingerData[finger] - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); double adjustedMaxValue = m_appState.GetCurrentHandData().GetFingerMaxForce(finger) - m_appState.GetCurrentHandData().GetFingerBaseForce(finger); float percentage = (float)(adjustedForceValue / adjustedMaxValue * 100.0f); fingerForceGraphs[(int)finger].value = Mathf.FloorToInt(percentage); outMessage.WriteFloat(percentage); int fingerIndex = (int)finger; forceScalingNoteActivators[fingerIndex].GetComponent <ForceScalingNoteActivatorController>().SetForcePercentage(percentage); } m_udpHelper.Send(outMessage, m_appState.HololensIP, Constants.NETWORK_PORT); }