/// <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); } }
/// <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); } }
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(); } } } }
/// <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); }
/// <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)); }
/// <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)); }
/// <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; } }
/// <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)); }
/// <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)); }
/// <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)); }