private void LateUpdate() { //assuming controller updates happen before/in update loop? if (Time.time > nextUpdateTime) { RecordAnalogInputs(); nextUpdateTime = Time.time + UpdateRate; } if (CurrentButtonStates.Count > 0) { List <ButtonState> copy = new List <ButtonState>(CurrentButtonStates.Count); for (int i = 0; i < CurrentButtonStates.Count; i++) { copy.Add(CurrentButtonStates[i]); } CurrentButtonStates.Clear(); DynamicManager.RecordControllerEvent(dynamic.DataId, copy); } }
private void Update() { if (controllerDynamic == null) { return; } //thumbstick button if (SvrInput.Controller.GetButtonDown(SvrController.svrControllerButton.PrimaryThumbstick)) { OnButtonChanged(controllerDynamic, true, "thumbstick", true, CurrentButtonStates); } if (SvrInput.Controller.GetButtonUp(SvrController.svrControllerButton.PrimaryThumbstick)) { OnButtonChanged(controllerDynamic, true, "thumbstick", false, CurrentButtonStates); } //trigger if (SvrInput.Controller.GetButtonDown(SvrController.svrControllerButton.PrimaryIndexTrigger)) { OnButtonChanged(controllerDynamic, true, "trigger", true, CurrentButtonStates); } if (SvrInput.Controller.GetButtonUp(SvrController.svrControllerButton.PrimaryIndexTrigger)) { OnButtonChanged(controllerDynamic, true, "trigger", false, CurrentButtonStates); } if (CurrentButtonStates.Count > 0) { List <ButtonState> copy = new List <ButtonState>(CurrentButtonStates.Count); for (int i = 0; i < CurrentButtonStates.Count; i++) { copy[i].Copy(CurrentButtonStates[i]); } CurrentButtonStates.Clear(); DynamicManager.RecordControllerEvent(controllerDynamic.DataId, copy); } }
//updates for interaction hand implementation private void Update() { if (ControllerDevice == null) { return; } //menu if (ControllerDevice.GetPressDown(Varjo.Valve.VR.EVRButtonId.k_EButton_ApplicationMenu)) { OnButtonChanged(dynamic, isRight, "vive_menubtn", true, CurrentButtonStates); } if (ControllerDevice.GetPressUp(Varjo.Valve.VR.EVRButtonId.k_EButton_ApplicationMenu)) { OnButtonChanged(dynamic, isRight, "vive_menubtn", false, CurrentButtonStates); } //home ?? doesn't record event correctly //if (ControllerDevice.GetPressDown(EVRButtonId.k_EButton_Dashboard_Back)) // OnButtonChanged(dynamic, isRight, "vive_homebtn", true); //if (ControllerDevice.GetPressUp(EVRButtonId.k_EButton_Dashboard_Back)) // OnButtonChanged(dynamic, isRight, "vive_homebtn", false); //grip if (ControllerDevice.GetPressDown(Varjo.Valve.VR.EVRButtonId.k_EButton_Grip)) { OnButtonChanged(dynamic, isRight, "vive_grip", true, CurrentButtonStates); } if (ControllerDevice.GetPressUp(Varjo.Valve.VR.EVRButtonId.k_EButton_Grip)) { OnButtonChanged(dynamic, isRight, "vive_grip", false, CurrentButtonStates); } { //touchpad touched/pressed if (ControllerDevice.GetPressDown(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad)) { CurrentTouchpadState = TouchpadState.Press; var touchpadaxis = ControllerDevice.GetAxis(Varjo.Valve.VR.EVRButtonId.k_EButton_Axis0); var x = touchpadaxis.x; var y = touchpadaxis.y; int force = 100; Vector3 currentVector = new Vector3(x, y, force); OnVectorChanged(dynamic, isRight, "vive_touchpad", force, touchpadaxis, CurrentButtonStates); LastTouchpadVector = currentVector; } else if (ControllerDevice.GetTouchDown(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad)) { CurrentTouchpadState = TouchpadState.Touch; var touchpadaxis = ControllerDevice.GetAxis(Varjo.Valve.VR.EVRButtonId.k_EButton_Axis0); var x = touchpadaxis.x; var y = touchpadaxis.y; int force = 50; Vector3 currentVector = new Vector3(x, y, force); OnVectorChanged(dynamic, isRight, "vive_touchpad", force, touchpadaxis, CurrentButtonStates); LastTouchpadVector = currentVector; } else if (ControllerDevice.GetPressUp(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad)) { CurrentTouchpadState = TouchpadState.Touch; var touchpadaxis = ControllerDevice.GetAxis(Varjo.Valve.VR.EVRButtonId.k_EButton_Axis0); var x = touchpadaxis.x; var y = touchpadaxis.y; int force = 0; if (ControllerDevice.GetTouch(Varjo.Valve.VR.EVRButtonId.k_EButton_Axis0)) { force = 50; } Vector3 currentVector = new Vector3(x, y, force); OnVectorChanged(dynamic, isRight, "vive_touchpad", force, touchpadaxis, CurrentButtonStates); LastTouchpadVector = currentVector; } else if (ControllerDevice.GetTouchUp(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad)) { CurrentTouchpadState = TouchpadState.None; var touchpadaxis = ControllerDevice.GetAxis(Varjo.Valve.VR.EVRButtonId.k_EButton_Axis0); var x = touchpadaxis.x; var y = touchpadaxis.y; int force = 0; Vector3 currentVector = new Vector3(x, y, force); OnVectorChanged(dynamic, isRight, "vive_touchpad", force, touchpadaxis, CurrentButtonStates); LastTouchpadVector = currentVector; } } //trigger clicked if (ControllerDevice.GetPressDown(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger)) { if (LastTrigger != 100) { var triggeramount = ControllerDevice.GetAxis(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger).x; int currentTrigger = (int)(triggeramount * 100); LastTrigger = currentTrigger; OnButtonChanged(dynamic, isRight, "vive_trigger", true, CurrentButtonStates); } } else if (ControllerDevice.GetPressUp(Varjo.Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger)) { if (LastTrigger != 0) { LastTrigger = 0; OnButtonChanged(dynamic, isRight, "vive_trigger", false, CurrentButtonStates); } } if (Time.time > nextUpdateTime) { RecordAnalogInputs(); //should this go at the end? double inputs on triggers nextUpdateTime = Time.time + UpdateRate; } if (CurrentButtonStates.Count > 0) { List <ButtonState> copy = new List <ButtonState>(CurrentButtonStates.Count); for (int i = 0; i < CurrentButtonStates.Count; i++) { copy.Add(CurrentButtonStates[i]); //move the reference over to the copy } CurrentButtonStates.Clear(); DynamicManager.RecordControllerEvent(dynamic.DataId, copy); } }
//have to do polling every frame to capture inputs private void Update() { //right hand a if (OVRInput.GetDown(OVRInput.Button.One, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_abtn", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Button.One, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_abtn", false, CurrentRightButtonStates); } //right hand b if (OVRInput.GetDown(OVRInput.Button.Two, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_bbtn", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Button.Two, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_bbtn", false, CurrentRightButtonStates); } //left hand X if (OVRInput.GetDown(OVRInput.Button.One, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_xbtn", true, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.One, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_xbtn", false, CurrentLeftButtonStates); } //left hand y if (OVRInput.GetDown(OVRInput.Button.Two, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_ybtn", true, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.Two, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_ybtn", false, CurrentLeftButtonStates); } //left thumbrest if (OVRInput.GetDown(OVRInput.Touch.PrimaryThumbRest, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_thumbrest", true, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Touch.PrimaryThumbRest, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_thumbrest", false, CurrentLeftButtonStates); } //right thumbrest if (OVRInput.GetDown(OVRInput.Touch.PrimaryThumbRest, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_thumbrest", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Touch.PrimaryThumbRest, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_thumbrest", false, CurrentRightButtonStates); } //start if (OVRInput.GetDown(OVRInput.Button.Start, OVRInput.Controller.LTouch)) { OnButtonChanged(RightHand, true, "rift_start", true, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.Start, OVRInput.Controller.LTouch)) { OnButtonChanged(RightHand, true, "rift_start", false, CurrentLeftButtonStates); } //trigger buttons if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_trigger", true, CurrentLeftButtonStates); } if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_trigger", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_trigger", false, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryIndexTrigger, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_trigger", false, CurrentRightButtonStates); } //grip if (OVRInput.GetDown(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_grip", true, CurrentLeftButtonStates); } if (OVRInput.GetDown(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_grip", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_grip", false, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryHandTrigger, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_grip", false, CurrentRightButtonStates); } //thumbstick buttons if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstick, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_joystick", true, CurrentLeftButtonStates); } if (OVRInput.GetDown(OVRInput.Button.PrimaryThumbstick, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_joystick", true, CurrentRightButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryThumbstick, OVRInput.Controller.LTouch)) { OnButtonChanged(LeftHand, false, "rift_joystick", false, CurrentLeftButtonStates); } if (OVRInput.GetUp(OVRInput.Button.PrimaryThumbstick, OVRInput.Controller.RTouch)) { OnButtonChanged(RightHand, true, "rift_joystick", false, CurrentRightButtonStates); } if (Time.time > nextUpdateTime) { RecordAnalogInputs(); nextUpdateTime = Time.time + UpdateRate; } if (CurrentRightButtonStates.Count > 0) { List <ButtonState> copy = new List <ButtonState>(CurrentRightButtonStates.Count); for (int i = 0; i < CurrentRightButtonStates.Count; i++) { copy.Add(CurrentRightButtonStates[i]); } CurrentRightButtonStates.Clear(); DynamicManager.RecordControllerEvent(RightHand.DataId, copy); } if (CurrentLeftButtonStates.Count > 0) { List <ButtonState> copy = new List <ButtonState>(CurrentLeftButtonStates.Count); for (int i = 0; i < CurrentLeftButtonStates.Count; i++) { copy.Add(CurrentLeftButtonStates[i]); } CurrentLeftButtonStates.Clear(); DynamicManager.RecordControllerEvent(LeftHand.DataId, copy); } }