Exemplo n.º 1
0
        /// <summary>
        /// Returns element pressed up state.
        /// </summary>
        /// <param name="chirality">Controller chirality</param>
        /// <param name="element">Controller element</param>
        /// <returns>Was the controller element pressed up</returns>
        public static bool GetPressUp(FinchChirality chirality, FinchControllerElement element)
        {
            bool leftUp  = FinchInput.GetPressUp(FinchNodeType.LeftHand, element);
            bool rightUp = FinchInput.GetPressUp(FinchNodeType.RightHand, element);

            bool leftPress  = FinchInput.GetPress(FinchNodeType.LeftHand, element);
            bool rightPress = FinchInput.GetPress(FinchNodeType.RightHand, element);

            switch (chirality)
            {
            case FinchChirality.Right:
                return(rightUp);

            case FinchChirality.Left:
                return(leftUp);

            case FinchChirality.Any:
                return(leftUp || rightUp);

            case FinchChirality.Both:
                return(leftUp && !rightPress || rightUp && !leftPress);

            default:
                return(false);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Returns time of pressing.
        /// </summary>
        /// <param name="chirality">Controller chirality</param>
        /// <param name="element">Controller element</param>
        /// <returns>Controller element pressing time.</returns>
        public static float GetPressTime(FinchChirality chirality, FinchControllerElement element)
        {
            if (chirality > FinchChirality.Left)
            {
                throw new ArgumentException();
            }

            return(FinchInput.GetPressTime((FinchNodeType)chirality, element));
        }
 private void TriggerAnimation(FinchController controller, FinchControllerElement element, GameObject model)
 {
     if (controller.GetPressDown(element))
     {
         model.transform.localPosition = new Vector3(0, 0, 0.021f);
     }
     else if (controller.GetPressUp(element))
     {
         model.transform.localPosition = new Vector3(0, 0, 0);
     }
 }
Exemplo n.º 4
0
        protected static void UpdateLongPressDetection(FinchControllerElement element, bool handsDevice, PlayerState outState)
        {
            for (FinchChirality i = 0; i < FinchChirality.Last; ++i)
            {
                if (handsDevice)
                {
                    calibrationButtonState[(int)i] = false;
                }
                else
                {
                    outState.CalibrationButtonPressed[(int)i] = false;
                }

                if (FinchCore.GetEvent(i, element, FinchEventType.Begin))
                {
                    calibrationLongPressStopWatch[(int)i].Start();
                }

                if (FinchCore.GetEvent(i, element, FinchEventType.End))
                {
                    calibrationLongPressStopWatch[(int)i].Reset();
                }

                if (calibrationLongPressStopWatch[(int)i].ElapsedMilliseconds >= LongPressTimeMs)
                {
                    if (handsDevice)
                    {
                        calibrationButtonState[(int)i] = true;
                    }
                    else
                    {
                        outState.CalibrationButtonPressed[(int)i] = true;
                        calibrationLongPressStopWatch[(int)i].Reset();
                    }
                }
            }
        }
Exemplo n.º 5
0
 /// <summary>
 ///     Returns the selected event of controller's element.
 /// </summary>
 /// <param name="chirality"></param>
 /// <param name="element"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 public static bool GetEvent(FinchChirality chirality, FinchControllerElement element, FinchEventType type)
 {
     return((Interop.FinchGetEvents(chirality, type) & (0x1 << (int)element)) != 0);
 }
Exemplo n.º 6
0
 /// <summary>
 /// Returns time of pressing.
 /// </summary>
 /// <param name="node">Certain node</param>
 /// <param name="element">Controller element</param>
 /// <returns>Controller element pressing time.</returns>
 public static float GetPressTime(FinchNodeType node, FinchControllerElement element)
 {
     return(FinchCore.GetTimeEvents(node, element));
 }
Exemplo n.º 7
0
 /// <summary>
 /// Returns element pressed up state.
 /// </summary>
 /// <param name="node">Certain node</param>
 /// <param name="element">Controller element</param>
 /// <returns>Was the controller element pressed up</returns>
 public static bool GetPressUp(FinchNodeType node, FinchControllerElement element)
 {
     return(FinchCore.GetEndEvent(node, element));
 }
Exemplo n.º 8
0
        /// <summary>
        /// Returns true, if element has just been unpressed.
        /// </summary>
        /// <param name="element">Button, touchpad or another controller element</param>
        /// <returns>Controller element state. True, if element has just been unpressed</returns>
        public bool GetPressUp(FinchControllerElement element)
        {
            ushort events = FinchVR.State.ElementsEndEvents[(int)Chirality];

            return((events & (0x1 << (int)element)) != 0);
        }
 private void HandleMaterialChange(FinchController controller, MeshRenderer Renderer, int materialIndex, Material pressed, Material unpressed, FinchControllerElement element)
 {
     if (controller.GetPressDown(element))
     {
         Material[] arrayCopy = Renderer.materials;
         arrayCopy[materialIndex] = pressed;
         Renderer.materials       = arrayCopy;
     }
     else if (controller.GetPressUp(element))
     {
         Material[] arrayCopy = Renderer.materials;
         arrayCopy[materialIndex] = unpressed;
         Renderer.materials       = arrayCopy;
     }
 }
Exemplo n.º 10
0
 /// <summary>
 /// Returns time of pressing.
 /// </summary>
 /// <param name="element">Controller element</param>
 /// <returns>Controller element press time state.</returns>
 public float GetPressTime(FinchControllerElement element)
 {
     return(FinchInput.GetPressTime(Node, element));
 }
Exemplo n.º 11
0
 /// <summary>
 /// Returns element pressed up state.
 /// </summary>
 /// <param name="element">Controller element</param>
 /// <returns>Was the controller element pressed up</returns>
 public bool GetPressUp(FinchControllerElement element)
 {
     return(FinchInput.GetPressUp(Node, element));
 }
Exemplo n.º 12
0
 /// <summary>
 /// Returns time of pressing.
 /// </summary>
 /// <param name="chirality">Controller chirality</param>
 /// <param name="element">Controller element</param>
 /// <returns>Controller element pressing time.</returns>
 public static float GetPressTime(FinchChirality chirality, FinchControllerElement element)
 {
     return(FinchInput.GetPressTime((FinchNodeType)chirality, element));
 }