private ControllerInteractionEventArgs SetButtonEvent(ref bool buttonBool, bool value, float buttonPressure) { buttonBool = value; ControllerInteractionEventArgs e; e.controllerIndex = controllerIndex; e.buttonPressure = buttonPressure; e.touchpadAxis = VRTK_SDK_Bridge.GetTouchpadAxisOnIndex(controllerIndex); e.touchpadAngle = CalculateTouchpadAxisAngle(e.touchpadAxis); return(e); }
private void Update() { CacheControllerIndex(); //Only continue if the controller index has been set to a sensible number if (controllerIndex >= uint.MaxValue) { return; } Vector2 currentTriggerAxis = VRTK_SDK_Bridge.GetTriggerAxisOnIndex(controllerIndex); Vector2 currentTouchpadAxis = VRTK_SDK_Bridge.GetTouchpadAxisOnIndex(controllerIndex); //Trigger Pressed if (VRTK_SDK_Bridge.IsTriggerPressedDownOnIndex(controllerIndex)) { OnTriggerPressed(SetButtonEvent(ref triggerPressed, true, currentTriggerAxis.x)); EmitAlias(ButtonAlias.Trigger_Press, true, currentTriggerAxis.x, ref triggerPressed); } else if (VRTK_SDK_Bridge.IsTriggerPressedUpOnIndex(controllerIndex)) { OnTriggerReleased(SetButtonEvent(ref triggerPressed, false, 0f)); EmitAlias(ButtonAlias.Trigger_Press, false, 0f, ref triggerPressed); } //Trigger Touched if (VRTK_SDK_Bridge.IsTriggerTouchedDownOnIndex(controllerIndex)) { OnTriggerTouchStart(SetButtonEvent(ref triggerTouched, true, currentTriggerAxis.x)); EmitAlias(ButtonAlias.Trigger_Touch, true, currentTriggerAxis.x, ref triggerTouched); } else if (VRTK_SDK_Bridge.IsTriggerTouchedUpOnIndex(controllerIndex)) { OnTriggerTouchEnd(SetButtonEvent(ref triggerTouched, false, 0f)); EmitAlias(ButtonAlias.Trigger_Touch, false, 0f, ref triggerTouched); } //Trigger Hairline if (VRTK_SDK_Bridge.IsHairTriggerDownOnIndex(controllerIndex)) { OnTriggerHairlineStart(SetButtonEvent(ref triggerHairlinePressed, true, currentTriggerAxis.x)); EmitAlias(ButtonAlias.Trigger_Hairline, true, currentTriggerAxis.x, ref triggerHairlinePressed); } else if (VRTK_SDK_Bridge.IsHairTriggerUpOnIndex(controllerIndex)) { OnTriggerHairlineEnd(SetButtonEvent(ref triggerHairlinePressed, false, 0f)); EmitAlias(ButtonAlias.Trigger_Hairline, false, 0f, ref triggerHairlinePressed); } //Trigger Clicked if (!triggerClicked && currentTriggerAxis.x >= triggerClickThreshold) { OnTriggerClicked(SetButtonEvent(ref triggerClicked, true, currentTriggerAxis.x)); EmitAlias(ButtonAlias.Trigger_Click, true, currentTriggerAxis.x, ref triggerClicked); } else if (triggerClicked && currentTriggerAxis.x < triggerClickThreshold) { OnTriggerUnclicked(SetButtonEvent(ref triggerClicked, false, 0f)); EmitAlias(ButtonAlias.Trigger_Click, false, 0f, ref triggerClicked); } //Trigger Axis if (Vector2ShallowEquals(triggerAxis, currentTriggerAxis)) { triggerAxisChanged = false; } else { OnTriggerAxisChanged(SetButtonEvent(ref triggerAxisChanged, true, currentTriggerAxis.x)); } //ApplicationMenu if (VRTK_SDK_Bridge.IsApplicationMenuPressedDownOnIndex(controllerIndex)) { OnApplicationMenuPressed(SetButtonEvent(ref applicationMenuPressed, true, 1f)); EmitAlias(ButtonAlias.Application_Menu, true, 1f, ref applicationMenuPressed); } else if (VRTK_SDK_Bridge.IsApplicationMenuPressedUpOnIndex(controllerIndex)) { OnApplicationMenuReleased(SetButtonEvent(ref applicationMenuPressed, false, 0f)); EmitAlias(ButtonAlias.Application_Menu, false, 0f, ref applicationMenuPressed); } //Grip if (VRTK_SDK_Bridge.IsGripPressedDownOnIndex(controllerIndex)) { OnGripPressed(SetButtonEvent(ref gripPressed, true, 1f)); EmitAlias(ButtonAlias.Grip, true, 1f, ref gripPressed); } else if (VRTK_SDK_Bridge.IsGripPressedUpOnIndex(controllerIndex)) { OnGripReleased(SetButtonEvent(ref gripPressed, false, 0f)); EmitAlias(ButtonAlias.Grip, false, 0f, ref gripPressed); } //Touchpad Pressed if (VRTK_SDK_Bridge.IsTouchpadPressedDownOnIndex(controllerIndex)) { OnTouchpadPressed(SetButtonEvent(ref touchpadPressed, true, 1f)); EmitAlias(ButtonAlias.Touchpad_Press, true, 1f, ref touchpadPressed); } else if (VRTK_SDK_Bridge.IsTouchpadPressedUpOnIndex(controllerIndex)) { OnTouchpadReleased(SetButtonEvent(ref touchpadPressed, false, 0f)); EmitAlias(ButtonAlias.Touchpad_Press, false, 0f, ref touchpadPressed); } //Touchpad Touched if (VRTK_SDK_Bridge.IsTouchpadTouchedDownOnIndex(controllerIndex)) { OnTouchpadTouchStart(SetButtonEvent(ref touchpadTouched, true, 1f)); EmitAlias(ButtonAlias.Touchpad_Touch, true, 1f, ref touchpadTouched); } else if (VRTK_SDK_Bridge.IsTouchpadTouchedUpOnIndex(controllerIndex)) { OnTouchpadTouchEnd(SetButtonEvent(ref touchpadTouched, false, 0f)); EmitAlias(ButtonAlias.Touchpad_Touch, false, 0f, ref touchpadTouched); } if (Vector2ShallowEquals(touchpadAxis, currentTouchpadAxis)) { touchpadAxisChanged = false; } else { OnTouchpadAxisChanged(SetButtonEvent(ref touchpadAxisChanged, true, 1f)); } // Save current touch and trigger settings to detect next change. touchpadAxis = new Vector2(currentTouchpadAxis.x, currentTouchpadAxis.y); triggerAxis = new Vector2(currentTriggerAxis.x, currentTriggerAxis.y); hairTriggerDelta = VRTK_SDK_Bridge.GetTriggerHairlineDeltaOnIndex(controllerIndex); }
private void DisableEvents() { RemoveControllerIndexFromCache(); bool nullBool = false; OnControllerDisabled(SetButtonEvent(ref nullBool, false, 0f)); if (triggerPressed) { OnTriggerReleased(SetButtonEvent(ref triggerPressed, false, 0f)); EmitAlias(ButtonAlias.Trigger_Press, false, 0f, ref triggerPressed); } if (triggerTouched) { OnTriggerTouchEnd(SetButtonEvent(ref triggerTouched, false, 0f)); EmitAlias(ButtonAlias.Trigger_Touch, false, 0f, ref triggerTouched); } if (triggerHairlinePressed) { OnTriggerHairlineEnd(SetButtonEvent(ref triggerHairlinePressed, false, 0f)); EmitAlias(ButtonAlias.Trigger_Hairline, false, 0f, ref triggerHairlinePressed); } if (triggerClicked) { OnTriggerUnclicked(SetButtonEvent(ref triggerClicked, false, 0f)); EmitAlias(ButtonAlias.Trigger_Click, false, 0f, ref triggerClicked); } if (applicationMenuPressed) { OnApplicationMenuReleased(SetButtonEvent(ref applicationMenuPressed, false, 0f)); EmitAlias(ButtonAlias.Application_Menu, false, 0f, ref applicationMenuPressed); } if (gripPressed) { OnGripReleased(SetButtonEvent(ref gripPressed, false, 0f)); EmitAlias(ButtonAlias.Grip, false, 0f, ref gripPressed); } if (touchpadPressed) { OnTouchpadReleased(SetButtonEvent(ref touchpadPressed, false, 0f)); EmitAlias(ButtonAlias.Touchpad_Press, false, 0f, ref touchpadPressed); } if (touchpadTouched) { OnTouchpadTouchEnd(SetButtonEvent(ref touchpadTouched, false, 0f)); EmitAlias(ButtonAlias.Touchpad_Touch, false, 0f, ref touchpadTouched); } triggerAxisChanged = false; touchpadAxisChanged = false; CacheControllerIndex(); if (controllerIndex < uint.MaxValue) { Vector2 currentTriggerAxis = VRTK_SDK_Bridge.GetTriggerAxisOnIndex(controllerIndex); Vector2 currentTouchpadAxis = VRTK_SDK_Bridge.GetTouchpadAxisOnIndex(controllerIndex); // Save current touch and trigger settings to detect next change. touchpadAxis = new Vector2(currentTouchpadAxis.x, currentTouchpadAxis.y); triggerAxis = new Vector2(currentTriggerAxis.x, currentTriggerAxis.y); hairTriggerDelta = VRTK_SDK_Bridge.GetTriggerHairlineDeltaOnIndex(controllerIndex); } }