public override TBInput.Mobile3DOFHandedness Get3DOFHandedness() { if (TBCore.UsingEditorMode() || TBCore.GetActivePlatform() == VRPlatform.OculusPC) { if (TBSettings.GetControlSettings().handedness3DOF == TBSettings.TBHardwareHandedness.Left) { return(TBInput.Mobile3DOFHandedness.Left); } else { return(TBInput.Mobile3DOFHandedness.Right); } } else { if (OVRInput.IsControllerConnected(OVRInput.Controller.LTrackedRemote)) { return(TBInput.Mobile3DOFHandedness.Left); } else if (OVRInput.IsControllerConnected(OVRInput.Controller.RTrackedRemote)) { return(TBInput.Mobile3DOFHandedness.Right); } else { return(TBInput.Mobile3DOFHandedness.Center); } } }
/// <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); }
protected override void LoadClickRemotes() { if (TBCore.UsingEditorMode() || (TBCore.GetActivePlatform() == VRPlatform.OculusPC)) // Oculus Remote is only supported click remote when in the editor or on PC builds. { controller_ClickRemote = TBController_Oculus_Remote.instance; #if UNITY_ANDROID TBLogging.LogMessage("Using Oculus Remote instead of Gear VR Touchpad when running Gear VR builds in the editor."); #endif } else if (TBCore.GetActivePlatform() == VRPlatform.OculusMobile) // Use Gear VR Touchpad when in Android builds { switch (Settings.TBOculusSettings.GetOculusDeviceFamily()) { case Settings.TBOculusSettings.OculusDeviceFamily.GearVR: case Settings.TBOculusSettings.OculusDeviceFamily.Unknown: controller_ClickRemote = TBController_Oculus_GearVRTouchpad.instance; break; } } }
protected override void Load3DOFControllers() { // 3DOF Controller emulation in the editor. if (TBCore.UsingEditorMode() && TBSettings.GetControlSettings().emulate3DOFArmModel) { if (TBSettings.GetControlSettings().handedness3DOF == TBSettings.TBHardwareHandedness.Left) { switch (TBCore.GetActiveHeadset()) { case VRHeadset.OculusRift: controller_3DOF = TBController_SteamVR_OculusTouchLeft.instance; break; case VRHeadset.WindowsMR: controller_3DOF = TBController_SteamVR_WindowsMixedRealityLeft.instance; break; default: controller_3DOF = TBController_SteamVR_ViveControllerLeft.instance; break; } } else { switch (TBCore.GetActiveHeadset()) { case VRHeadset.OculusRift: controller_3DOF = TBController_SteamVR_OculusTouchRight.instance; break; case VRHeadset.WindowsMR: controller_3DOF = TBController_SteamVR_WindowsMixedRealityRight.instance; break; default: controller_3DOF = TBController_SteamVR_ViveControllerRight.instance; break; } } } }
protected override void Load3DOFControllers() { if (!TBCore.UsingEditorMode() && (TBCore.GetActivePlatform() == VRPlatform.OculusMobile)) // Prevents 3DOF controller from initializing when on PC unless we're in the editor. { controller_3DOF = TBController_Oculus_GearVRController.instance; } else if (TBCore.UsingEditorMode() || (TBCore.GetActivePlatform() == VRPlatform.OculusPC)) { if (TBSettings.GetControlSettings().handedness3DOF == TBSettings.TBHardwareHandedness.Left) { controller_3DOF = TBController_Oculus_TouchLeft.instance; } else { controller_3DOF = TBController_Oculus_TouchRight.instance; } TBLogging.LogMessage("Emulating 3DOF Controller with Oculus Touch controller with " + TBSettings.GetControlSettings().handedness3DOF + " handedness."); } else { base.Load3DOFControllers(); } }