/// <remarks> /// Noticed that the "active" controllers also mark the Tracked state. /// </remarks> private void RefreshDevices() { // override locally derived active and connected controllers if plugin provides more accurate data OculusApi.connectedControllerTypes = OculusApi.GetConnectedControllers(); OculusApi.activeControllerType = OculusApi.GetActiveController(); if (OculusApi.connectedControllerTypes == OculusApi.Controller.None) { return; } if (activeControllers.Count > 0) { var controllers = new OculusApi.Controller[activeControllers.Count]; activeControllers.Keys.CopyTo(controllers, 0); if (lastDeviceList != OculusApi.Controller.None && OculusApi.connectedControllerTypes != lastDeviceList) { for (var i = 0; i < controllers.Length; i++) { var activeController = controllers[i]; switch (activeController) { case OculusApi.Controller.Touch when((OculusApi.Controller.LTouch & OculusApi.connectedControllerTypes) != OculusApi.Controller.LTouch): RaiseSourceLost(OculusApi.Controller.LTouch); break; case OculusApi.Controller.Touch when((OculusApi.Controller.RTouch & OculusApi.connectedControllerTypes) != OculusApi.Controller.RTouch): RaiseSourceLost(OculusApi.Controller.RTouch); break; default: if ((activeController & OculusApi.connectedControllerTypes) != activeController) { RaiseSourceLost(activeController); } break; } } } } for (var i = 0; i < OculusApi.Controllers.Length; i++) { if (OculusApi.ShouldResolveController(OculusApi.Controllers[i].controllerType, OculusApi.connectedControllerTypes)) { if (OculusApi.Controllers[i].controllerType == OculusApi.Controller.Touch) { if (!activeControllers.ContainsKey(OculusApi.Controller.LTouch)) { RaiseSourceDetected(OculusApi.Controller.LTouch); } if (!activeControllers.ContainsKey(OculusApi.Controller.RTouch)) { RaiseSourceDetected(OculusApi.Controller.RTouch); } } else if (!activeControllers.ContainsKey(OculusApi.Controllers[i].controllerType)) { RaiseSourceDetected(OculusApi.Controllers[i].controllerType); } } } lastDeviceList = OculusApi.connectedControllerTypes; }
private void RefreshDevices() { // override locally derived active and connected controllers if plugin provides more accurate data OculusApi.connectedControllerTypes = (OculusApi.Controller)OculusApi.GetConnectedControllers(); OculusApi.activeControllerType = (OculusApi.Controller)OculusApi.GetActiveController(); //Noticed that the "active" controllers also mark the Tracked state. //Debug.LogError($"Connected =[{OculusApi.connectedControllerTypes}] - Active = [{OculusApi.activeControllerType}]"); if (OculusApi.connectedControllerTypes == OculusApi.Controller.None) { return; } if (ActiveControllers.Count > 0) { OculusApi.Controller[] activeControllers = new OculusApi.Controller[ActiveControllers.Count]; ActiveControllers.Keys.CopyTo(activeControllers, 0); if (lastDeviceList != OculusApi.Controller.None && OculusApi.connectedControllerTypes != lastDeviceList) { foreach (var activeController in activeControllers) { if (activeController == OculusApi.Controller.Touch && ((OculusApi.Controller.LTouch & OculusApi.connectedControllerTypes) != OculusApi.Controller.LTouch)) { RaiseSourceLost(OculusApi.Controller.LTouch); } else if (activeController == OculusApi.Controller.Touch && ((OculusApi.Controller.RTouch & OculusApi.connectedControllerTypes) != OculusApi.Controller.RTouch)) { RaiseSourceLost(OculusApi.Controller.RTouch); } else if ((activeController & OculusApi.connectedControllerTypes) != activeController) { RaiseSourceLost(activeController); } } } } for (var i = 0; i < OculusApi.Controllers.Length; i++) { if (OculusApi.ShouldResolveController(OculusApi.Controllers[i].controllerType, OculusApi.connectedControllerTypes)) { if (OculusApi.Controllers[i].controllerType == OculusApi.Controller.Touch) { if (!ActiveControllers.ContainsKey(OculusApi.Controller.LTouch)) { RaiseSourceDetected(OculusApi.Controller.LTouch); } if (!ActiveControllers.ContainsKey(OculusApi.Controller.RTouch)) { RaiseSourceDetected(OculusApi.Controller.RTouch); } } else if (!ActiveControllers.ContainsKey(OculusApi.Controllers[i].controllerType)) { RaiseSourceDetected(OculusApi.Controllers[i].controllerType); } } } lastDeviceList = OculusApi.connectedControllerTypes; }