private void CheckChirality(bool vibrate)
        {
            FinchChirality left  = FinchCore.GetCapacitySensor(FinchNodeType.LeftHand);
            FinchChirality right = FinchCore.GetCapacitySensor(FinchNodeType.RightHand);

            if (left == FinchChirality.Unknown && FinchController.Left.IsConnected && right == FinchChirality.Unknown && FinchController.Right.IsConnected)
            {
                Sprite.sprite = NoneHoldBoth;
                return;
            }

            if (left == FinchChirality.Unknown && FinchController.Left.IsConnected || right == FinchChirality.Unknown && FinchController.Right.IsConnected)
            {
                Sprite.sprite = NoneHoldOne;
                return;
            }

            if (left == FinchChirality.Both && FinchController.Left.IsConnected && right == FinchChirality.Both && FinchController.Right.IsConnected)
            {
                Sprite.sprite = BothHoldBoth;
                return;
            }

            if (left == FinchChirality.Both && FinchController.Left.IsConnected || right == FinchChirality.Both && FinchController.Right.IsConnected)
            {
                Sprite.sprite = BothHoldOne;
                return;
            }

            if (left == FinchChirality.Left && FinchController.Left.IsConnected && right == FinchChirality.Left && FinchController.Right.IsConnected)
            {
                Sprite.sprite = BothLeftHold;
                return;
            }

            if (left == FinchChirality.Right && FinchController.Left.IsConnected && right == FinchChirality.Right && FinchController.Right.IsConnected)
            {
                Sprite.sprite = BothRightHold;
                return;
            }

            if (FinchCore.NodesState.GetControllersCount() == 0)
            {
                Sprite.sprite = NoneHoldBoth;
                return;
            }

            if (vibrate)
            {
                FinchController.Left.HapticPulse(100);
                FinchController.Right.HapticPulse(100);
            }

            FinchCore.BindsControllers();
            PlayableSet.RememberNodes();
            NextStep();
        }
Beispiel #2
0
        private void TryPassStep()
        {
            bool correctSet = FinchCore.NodesState.GetControllersCount() == 1 && FinchCore.NodesState.GetUpperArmCount() == 1;

            bool leftCapacityCorrect  = !FinchController.Left.IsConnected || FinchCore.GetCapacitySensor(FinchNodeType.LeftHand) == GetUpperArmChirality();
            bool rightCapacityCorrect = !FinchController.Right.IsConnected || FinchCore.GetCapacitySensor(FinchNodeType.RightHand) == GetUpperArmChirality();

            if (!correctSet || leftCapacityCorrect && rightCapacityCorrect)
            {
                NextStep();
            }
        }
        private void TryCalibrate()
        {
            bool leftReady     = !FinchController.Left.IsConnected || leftReadyCalibrate && FinchController.Left.GetPressTime(FinchControllerElement.HomeButton) > Settings.TimeToCallModule;
            bool rightReady    = !FinchController.Right.IsConnected || rightReadyCalibrate && FinchController.Right.GetPressTime(FinchControllerElement.HomeButton) > Settings.TimeToCallModule;
            bool fastCalibrate = Settings.Calibration == CalibrationType.FastCalibration && PlayableSet.AllPlayableNodesConnected;
            bool useDash       = FinchCore.Settings.ControllerType == FinchControllerType.Dash;

            if (fastCalibrate && useDash)
            {
                if (leftReady)
                {
                    FastCalibrate(FinchController.Left);
                    leftReadyCalibrate = false;
                }

                if (rightReady)
                {
                    FastCalibrate(FinchController.Right);
                    rightReadyCalibrate = false;
                }
            }
            else if (FinchCore.NodesState.GetControllersCount() > 0 && leftReady && rightReady && !IsCalbrating)
            {
                leftReadyCalibrate  = false;
                rightReadyCalibrate = false;

                ResetCalibration();

                bool leftCapacityCorrect  = !FinchController.Left.IsConnected || FinchCore.GetCapacitySensor(FinchNodeType.LeftHand) == FinchChirality.Left;
                bool rightCapacityCorrect = !FinchController.Right.IsConnected || FinchCore.GetCapacitySensor(FinchNodeType.RightHand) == FinchChirality.Right;
                bool angleCorrect         = NodeAngleChecker.IsCorrectAngle;
                bool momentalCalibration  = leftCapacityCorrect && rightCapacityCorrect && angleCorrect && !useDash;

                if (fastCalibrate && momentalCalibration)
                {
                    FinchController.Left.HapticPulse(Settings.HapticTime);
                    FinchController.Right.HapticPulse(Settings.HapticTime);
                    FinchCore.Calibration(FinchChirality.Both);
                }
                else
                {
                    if (!(PlayableSet.AllPlayableNodesConnected))
                    {
                        PlayableSet.ResetSaveComlect();
                    }

                    Calibrate(PlayableSet.AllPlayableNodesConnected ? Settings.Calibration : CalibrationType.FullCalibration);
                }
            }
        }