protected override void LoadPreset(PresetScriptableObject preset)
        {
            ForceCalibrationPresetScriptableObject forceCalibrationPreset = preset as ForceCalibrationPresetScriptableObject;

            HandData leftHandData = new HandData();

            leftHandData.SetFingerMaxForce(Finger.Thumb, forceCalibrationPreset.leftThumbMaxForce);
            leftHandData.SetFingerMaxForce(Finger.Index, forceCalibrationPreset.leftIndexFingerMaxForce);
            leftHandData.SetFingerMaxForce(Finger.Middle, forceCalibrationPreset.leftMiddleFingerMaxForce);
            leftHandData.SetFingerMaxForce(Finger.Ring, forceCalibrationPreset.leftRingFingerMaxForce);
            leftHandData.SetFingerMaxForce(Finger.Pinky, forceCalibrationPreset.leftPinkyMaxForce);

            leftHandData.SetFingerBaseForce(Finger.Thumb, m_appState.LeftHandData.GetFingerBaseForce(Finger.Thumb));
            leftHandData.SetFingerBaseForce(Finger.Index, m_appState.LeftHandData.GetFingerBaseForce(Finger.Index));
            leftHandData.SetFingerBaseForce(Finger.Middle, m_appState.LeftHandData.GetFingerBaseForce(Finger.Middle));
            leftHandData.SetFingerBaseForce(Finger.Ring, m_appState.LeftHandData.GetFingerBaseForce(Finger.Ring));
            leftHandData.SetFingerBaseForce(Finger.Pinky, m_appState.LeftHandData.GetFingerBaseForce(Finger.Pinky));

            HandData rightHandData = new HandData();

            rightHandData.SetFingerMaxForce(Finger.Thumb, forceCalibrationPreset.rightThumbMaxForce);
            rightHandData.SetFingerMaxForce(Finger.Index, forceCalibrationPreset.rightIndexFingerMaxForce);
            rightHandData.SetFingerMaxForce(Finger.Middle, forceCalibrationPreset.rightMiddleFingerMaxForce);
            rightHandData.SetFingerMaxForce(Finger.Ring, forceCalibrationPreset.rightRingFingerMaxForce);
            rightHandData.SetFingerMaxForce(Finger.Pinky, forceCalibrationPreset.rightPinkyMaxForce);

            rightHandData.SetFingerBaseForce(Finger.Thumb, m_appState.RightHandData.GetFingerBaseForce(Finger.Thumb));
            rightHandData.SetFingerBaseForce(Finger.Index, m_appState.RightHandData.GetFingerBaseForce(Finger.Index));
            rightHandData.SetFingerBaseForce(Finger.Middle, m_appState.RightHandData.GetFingerBaseForce(Finger.Middle));
            rightHandData.SetFingerBaseForce(Finger.Ring, m_appState.RightHandData.GetFingerBaseForce(Finger.Ring));
            rightHandData.SetFingerBaseForce(Finger.Pinky, m_appState.RightHandData.GetFingerBaseForce(Finger.Pinky));

            m_appState.SetHandData(leftHandData, rightHandData);
        }
        private void FingerForceDataReceivedHandler(Dictionary <Finger, double> fingerData)
        {
            if (m_isCalibrating || m_isCalibratingPETS)
            {
                foreach (Finger finger in fingerData.Keys)
                {
                    double value = fingerData[finger];

                    if (m_isCalibrating)
                    {
                        if (finger == m_calibratingFinger)
                        {
                            HandData handData = m_isCalibratingLeftHand ? m_appState.LeftHandData : m_appState.RightHandData;
                            value -= handData.GetFingerBaseForce(finger);

                            double currentMax = handData.GetFingerMaxForce(finger);
                            handData.SetFingerMaxForce(finger, double.IsNaN(currentMax) ? value : MathUtils.Max(value, currentMax));
                        }
                    }
                    else if (m_isCalibratingPETS)
                    {
                        m_petsCalibrationTask.FeedSample(finger, value);
                    }
                }

                if (m_isCalibratingPETS)
                {
                    if (m_petsCalibrationTask.IsDone())
                    {
                        m_isCalibratingPETS = false;
                        OnPETSCalibrationFinished();

                        Dictionary <Finger, double> calibrationResult = m_petsCalibrationTask.GetCalibrationResult();
                        if (calibrationResult != null)
                        {
                            foreach (Finger finger in calibrationResult.Keys)
                            {
                                m_appState.LeftHandData.SetFingerBaseForce(finger, calibrationResult[finger]);
                                m_appState.RightHandData.SetFingerBaseForce(finger, calibrationResult[finger]);
                            }
                        }
                        else
                        {
                            Debug.LogError("Failed to calibrate PETS!");
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        private void Awake()
        {
            LeftHandData  = new HandData();
            RightHandData = new HandData();

            IsLeftHand         = new ObservableValue <bool>(true);
            ForceTrackMVCRatio = 1.0;

            Mode = AppMode.Dynamic;

            StaticPhaseDuration     = 5.0f;
            IncreasingPhaseDuration = 5.0f;
            PlateauPhaseDuration    = 5.0f;
            DecreasingPhaseDuration = 5.0f;
            StaticEndPhaseDuration  = 5.0f;

            HololensIP = "";
        }
Exemplo n.º 4
0
 public void SetHandData(HandData leftHand, HandData rightHand)
 {
     LeftHandData  = leftHand;
     RightHandData = rightHand;
 }