Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }