Exemplo n.º 1
0
        public virtual HandTrackingOffsets GetControllerTrackingOffsets(TBInput.Controller controller)
        {
            if (controller == TBInput.Controller.Active)
            {
                controller = GetActiveController();
            }

            switch (controller)
            {
            case TBInput.Controller.LHandController:
                return(controller_LHand.GetTrackingOffsets());

            case TBInput.Controller.RHandController:
                return(controller_RHand.GetTrackingOffsets());

            case TBInput.Controller.Mobile3DOFController:
                return(controller_3DOF.GetTrackingOffsets());

            case TBInput.Controller.ClickRemote:
                return(controller_ClickRemote.GetTrackingOffsets());

            case TBInput.Controller.Gamepad:
                return(controller_Gamepad.GetTrackingOffsets());
            }

            return(new HandTrackingOffsets());
        }
Exemplo n.º 2
0
        public virtual void Initialize()
        {
            emptyLookupTable  = new TBInput.ButtonLookupTable <T>();
            _activeController = GetActiveController();

            // Load supported input types.
            if (TBSettings.GetControlSettings().supportsHandControllers)
            {
                LoadHandControllers();
            }
            if (TBSettings.GetControlSettings().supports3DOFControllers)
            {
                Load3DOFControllers();
            }
            if (TBSettings.GetControlSettings().supportsClickRemote)
            {
                LoadClickRemotes();
            }
            if (TBSettings.GetControlSettings().supportsGamepad)
            {
                LoadGamepads();
            }

            TBCore.Events.OnSystemMenu += RefreshInput;
        }
Exemplo n.º 3
0
 public override bool ResolveTouchUp(GvrControllerButton button, TBInput.Controller controller)
 {
     if (button == GvrControllerButton.TouchPadButton)
     {
         return(GetGoogleControllerID(controller).GetButtonUp(GvrControllerButton.TouchPadTouch));
     }
     return(false);
 }
Exemplo n.º 4
0
 public override bool SetRumble(TBInput.Controller controller, float strength)
 {
     #if UNITY_2018_3_OR_NEWER
     return(false);
     #else
     return(false);
     #endif
 }
Exemplo n.º 5
0
 public override bool SetRumble(TBInput.Controller controller, float strength)
 {
     #if UNITY_2018_3_OR_NEWER
     return(GetUnityXRInputDevice(controller).SendHapticImpulse(0, strength, Time.deltaTime));
     #else
     return(false);
     #endif
 }
Exemplo n.º 6
0
 public virtual bool ControllerHasRumbleSupport(TBInput.Controller controller)
 {
     if (GetControllerForType(controller) != null)
     {
         return(GetControllerForType(controller).HasRumbleSupport());
     }
     return(false);
 }
Exemplo n.º 7
0
        public override bool GetTouchDown(TBInput.Button button, TBInput.Controller controller)
        {
            if (ShouldRouteThroughXInput(controller))
            {
                return(TBXInput.instance.GetTouchDown(button, controller));
            }

            return(base.GetTouchDown(button, controller));
        }
Exemplo n.º 8
0
        public override string GetControllerName(TBInput.Controller controller)
        {
            if (ShouldRouteThroughXInput(controller))
            {
                return(TBXInput.instance.GetControllerName(controller));
            }

            return(base.GetControllerName(controller));
        }
Exemplo n.º 9
0
        public override bool SupportsAxis2D(TBInput.Button button, TBInput.Controller controller)
        {
            if (ShouldRouteThroughXInput(controller))
            {
                return(TBXInput.instance.SupportsAxis2D(button, controller));
            }

            return(base.SupportsAxis2D(button, controller));
        }
Exemplo n.º 10
0
        public override bool ControllerHasRumbleSupport(TBInput.Controller controller)
        {
            if (ShouldRouteThroughXInput(controller))
            {
                return(TBXInput.instance.ControllerHasRumbleSupport(controller));
            }

            return(base.ControllerHasRumbleSupport(controller));
        }
Exemplo n.º 11
0
        public override Vector2 GetAxis2D(TBInput.Button button, TBInput.Controller controller)
        {
            if (ShouldRouteThroughXInput(controller))
            {
                return(TBXInput.instance.GetAxis2D(button, controller));
            }

            return(base.GetAxis2D(button, controller));
        }
Exemplo n.º 12
0
        protected virtual T[] GetButtonArray(TBInput.Button button, ref TBInput.Controller controller)
        {
            if (controller == TBInput.Controller.Active)
            {
                controller = TBInput.GetActiveController();
            }

            return(TBInput.GetRawButtons <T>(button, GetButtonLookupTableForController(controller)));
        }
Exemplo n.º 13
0
 public override bool ResolveTouch(OVRInput.RawButton button, TBInput.Controller controller)
 {
     OVRInput.Controller ctrl = GetOculusControllerID(controller);
     if (OVRInput.Get(GetTouchEnum(button), ctrl))
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 14
0
 public override bool ResolveButtonUp(OVRInput.RawButton button, TBInput.Controller controller)
 {
     OVRInput.Controller ctrl = GetOculusControllerID(controller);
     if (OVRInput.GetUp(button, ctrl))
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 15
0
        /// <summary>
        /// Needed for generating a controller type compatible with Oculus SDK calls.
        /// </summary>
        /// <param name="controller"></param>
        /// <returns></returns>
        public static OVRInput.Controller GetOculusControllerID(TBInput.Controller controller)
        {
            if (controller == TBInput.Controller.Active)
            {
                controller = TBInput.GetActiveController();
            }

            switch (controller)
            {
            case TBInput.Controller.LHandController:
                return(OVRInput.Controller.LTouch);

            case TBInput.Controller.RHandController:
                return(OVRInput.Controller.RTouch);

            case TBInput.Controller.Mobile3DOFController:
                if (TBCore.UsingEditorMode() || TBCore.GetActivePlatform() == VRPlatform.OculusPC)
                {
                    if (TBSettings.GetControlSettings().handedness3DOF == TBSettings.TBHardwareHandedness.Left)
                    {
                        return(OVRInput.Controller.LTouch);
                    }
                    else
                    {
                        return(OVRInput.Controller.RTouch);
                    }
                }
                else
                {
                    if (OVRInput.IsControllerConnected(OVRInput.Controller.LTrackedRemote))
                    {
                        return(OVRInput.Controller.LTrackedRemote);
                    }
                    else
                    {
                        return(OVRInput.Controller.RTrackedRemote);
                    }
                }

            case TBInput.Controller.ClickRemote:
                if (TBCore.GetActivePlatform() == VRPlatform.OculusMobile)
                {
                    return(OVRInput.Controller.Touchpad);
                }
                else
                {
                    return(OVRInput.Controller.Remote);
                }

            case TBInput.Controller.Gamepad:
                return(OVRInput.Controller.Gamepad);
            }

            TBLogging.LogError("Controller type " + controller + " has no match for Oculus.");
            return(OVRInput.Controller.None);
        }
Exemplo n.º 16
0
        public void SetButton(TBInput.Button button, TBInput.Controller controller)
        {
            _button     = button;
            _controller = controller;

            if (!TBInput.SupportsAxis1D(button, controller))
            {
                transform.parent.gameObject.SetActive(false);
            }
        }
Exemplo n.º 17
0
        public override Vector2 ResolveAxis2D(EVRButtonId button, TBInput.Controller controller)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                return(SteamVR_Controller.Input((int)id).GetAxis(button));
            }
            return(Vector2.zero);
        }
Exemplo n.º 18
0
        public override bool SetRumble(TBInput.Controller controller, float strength)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                SteamVR_Controller.Input((int)id).TriggerHapticPulse((ushort)(3999 * strength), EVRButtonId.k_EButton_SteamVR_Touchpad);
            }
            return(true);
        }
Exemplo n.º 19
0
        public void SetButton(TBInput.Button button, TBInput.Controller controller)
        {
            _button     = button;
            _controller = controller;

            if (!TBInput.SupportsButton(button, controller))
            {
                gameObject.SetActive(false);
            }
        }
Exemplo n.º 20
0
        protected virtual void SetActiveController(TBInput.Controller controller)
        {
            if (_activeController == controller)
            {
                return;
            }

            _activeController = controller;
            // TODO: fire an event when controller is changed
        }
Exemplo n.º 21
0
        public override Vector3 GetAngularVelocity(TBInput.Controller controller)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                return(SteamVR_Controller.Input((int)id).angularVelocity);
            }

            return(Vector3.zero);
        }
Exemplo n.º 22
0
        public override Vector3 GetRawPosition(TBInput.Controller controller)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                return(SteamVR_Controller.Input((int)id).transform.pos);
            }

            return(Vector3.zero);
        }
Exemplo n.º 23
0
        public override Quaternion GetRawRotation(TBInput.Controller controller)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                return(SteamVR_Controller.Input((int)id).transform.rot);
            }

            return(Quaternion.identity);
        }
 private void AnimateInput(ref float time, TBInput.Controller controller)
 {
     if (TBInput.GetButton(TBInput.Button.Any, controller))
     {
         AddTime(ref time);
     }
     else
     {
         ResolveTime(ref time);
     }
 }
Exemplo n.º 25
0
 public override bool ResolveButton(TBXInputButton button, TBInput.Controller controller)
 {
     if (GetState(button, _reading))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 26
0
 protected TBInput.ButtonLookupTable <T> GetButtonLookupTableForController(TBInput.Controller controller)
 {
     if (GetControllerForType(controller) != null)
     {
         return(GetControllerForType(controller).GetLookupTable());
     }
     else
     {
         return(emptyLookupTable);
     }
 }
Exemplo n.º 27
0
 public override Vector2 ResolveAxis2D(GvrControllerButton button, TBInput.Controller controller)
 {
     if (button == GvrControllerButton.TouchPadButton)
     {
         if (GetGoogleControllerID(controller).GetButton(GvrControllerButton.TouchPadTouch))
         {
             return(GetGoogleControllerID(controller).TouchPos);
         }
     }
     return(Vector2.zero);
 }
Exemplo n.º 28
0
 public override bool ResolveButton(TBXInputButton button, TBInput.Controller controller)
 {
     if (GetState(button, _state) == ButtonState.Pressed)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 29
0
 public virtual bool SupportsInputType(TBInput.Button button, TBInput.Controller controller)
 {
     T[] buttons = GetButtonArray(button, ref controller);
     if (buttons == null)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
Exemplo n.º 30
0
        public override bool ResolveTouch(EVRButtonId button, TBInput.Controller controller)
        {
            uint id = GetSteamVRControllerID(controller);

            if (OpenVR.System.IsTrackedDeviceConnected(id))
            {
                if (SteamVR_Controller.Input((int)id).GetTouch(button))
                {
                    return(true);
                }
            }
            return(false);
        }