void MLControllerTriggerUp(byte controllerId, float triggerValue) { if (controllerId == this.mlController.Id) { IMixedRealityInputSystem inputSystem = CoreServices.InputSystem; Interactions[1].BoolData = false; inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[1].MixedRealityInputAction); } }
void MLControllerButtonUp(byte controllerId, MLInput.Controller.Button button) { //Implement bumper and home buttons up if (controllerId == this.mlController.Id) { IMixedRealityInputSystem inputSystem = CoreServices.InputSystem; switch (button) { case MLInput.Controller.Button.Bumper: Interactions[2].BoolData = false; inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[2].MixedRealityInputAction); break; case MLInput.Controller.Button.HomeTap: Interactions[3].BoolData = false; inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[3].MixedRealityInputAction); break; } } }
public void UpdatePoses() { MixedRealityPose pointerPose = new MixedRealityPose(mlController.Position, mlController.Orientation);; Interactions[0].PoseData = pointerPose; CoreServices.InputSystem?.RaiseSourcePoseChanged(InputSource, this, pointerPose); CoreServices.InputSystem?.RaisePoseInputChanged(InputSource, ControllerHandedness, Interactions[0].MixedRealityInputAction, pointerPose); //This is also a good time to implement the Touchpad if you want to update that source type if (Interactions.Length > 4) { IMixedRealityInputSystem inputSystem = CoreServices.InputSystem; // Test out touch Interactions[4].BoolData = mlController.Touch1Active; if (mlController.Touch1Active) { lastTouchVector = mlController.Touch1PosAndForce; lastPressure = mlController.Touch1PosAndForce.z; } if (Interactions[4].Changed) { if (mlController.Touch1Active) { inputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[4].MixedRealityInputAction); } else { inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[4].MixedRealityInputAction); } } if (mlController.Touch1Active) { Interactions[5].Vector2Data = lastTouchVector; if (Interactions[5].Changed) { inputSystem?.RaisePositionInputChanged(InputSource, ControllerHandedness, Interactions[5].MixedRealityInputAction, Interactions[5].Vector2Data); } if (Interactions[6].BoolData) // Pressure was last down { if (lastPressure < 0.25f) { Interactions[6].BoolData = false; inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[6].MixedRealityInputAction); } } else // Pressure was last off { if (lastPressure > 0.5f) { Interactions[6].BoolData = true; inputSystem?.RaiseOnInputDown(InputSource, ControllerHandedness, Interactions[6].MixedRealityInputAction); } } } else if (Interactions[6].BoolData) { Interactions[6].BoolData = false; inputSystem?.RaiseOnInputUp(InputSource, ControllerHandedness, Interactions[6].MixedRealityInputAction); lastPressure = 0; } } }