private void OnModuleActivated(VRModuleActiveEnum activatedModule) { switch (activatedModule) { #if VIU_STEAMVR case VRModuleActiveEnum.SteamVR: if (GetComponent <SteamVR_Camera>() == null) { gameObject.AddComponent <SteamVR_Camera>(); } break; #endif #if VIU_WAVEVR case VRModuleActiveEnum.WaveVR: if (GetComponent <WaveVR_Render>() == null) { gameObject.AddComponent <WaveVR_Render>(); } if (GetComponent <VivePoseTracker>() == null) { gameObject.AddComponent <VivePoseTracker>().viveRole.SetEzx(DeviceRole.Hmd); } break; #endif default: break; } if (activatedModule != VRModuleActiveEnum.Uninitialized) { VRModule.onActiveModuleChanged -= OnModuleActivated; } }
protected override void OnSingletonBehaviourInitialized() { if (m_dontDestroyOnLoad && transform.parent == null && Application.isPlaying) { DontDestroyOnLoad(gameObject); } m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; m_modules = new ModuleBase[EnumUtils.GetMaxValue(typeof(VRModuleActiveEnum)) + 1]; m_modules[(int)VRModuleActiveEnum.None] = new DefaultModule(); m_modules[(int)VRModuleActiveEnum.Simulator] = s_simulator; m_modules[(int)VRModuleActiveEnum.UnityNativeVR] = new UnityEngineVRModule(); m_modules[(int)VRModuleActiveEnum.SteamVR] = new SteamVRModule(); m_modules[(int)VRModuleActiveEnum.OculusVR] = new OculusVRModule(); m_modules[(int)VRModuleActiveEnum.DayDream] = new GoogleVRModule(); m_modules[(int)VRModuleActiveEnum.WaveVR] = new WaveVRModule(); s_deviceSerialNumberTable.Clear(); m_currStates = new DeviceState[MAX_DEVICE_COUNT]; for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { m_currStates[i] = new DeviceState(i); } m_prevStates = new DeviceState[MAX_DEVICE_COUNT]; for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { m_prevStates[i] = new DeviceState(i); } }
private void CleanUp() { // copy status to from current state to previous state, and reset current state for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { if (m_prevStates[i].isConnected || m_currStates[i].isConnected) { m_prevStates[i].CopyFrom(m_currStates[i]); m_currStates[i].Reset(); } } // send disconnect event for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { if (m_prevStates[i].isConnected) { VRModule.InvokeDeviceConnectedEvent(i, false); } } if (m_activatedModuleBase != null) { var deactivatedModuleBase = m_activatedModuleBase; m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; deactivatedModuleBase.OnDeactivated(); VRModule.InvokeActiveModuleChangedEvent(VRModuleActiveEnum.Uninitialized); } }
private void OnModuleActivated(VRModuleActiveEnum activatedModule) { if (activatedModule == VRModuleActiveEnum.SteamVR) { var earsComp = default(SteamVR_Ears); for (int i = transform.childCount - 1; i >= 0; --i) { earsComp = transform.GetChild(i).GetComponentInChildren <SteamVR_Ears>(); if (earsComp != null) { break; } } if (earsComp == null) { var ears = new GameObject("Camera (ears)", typeof(AudioListener), typeof(SteamVR_Ears)); ears.transform.SetParent(transform, false); } if (GetComponent <SteamVR_Camera>() == null) { gameObject.AddComponent <SteamVR_Camera>(); } VRModule.onActiveModuleChanged -= OnModuleActivated; } }
private void UpdateActivatedModule() { var currentSelectedModule = GetSelectedModule(m_selectModule); if (m_activatedModule == currentSelectedModule) { return; } // clean up if previous active module is not null if (m_activatedModule != VRModuleActiveEnum.Uninitialized) { CleanUp(); // m_activatedModule will reset to SupportedVRModule.Uninitialized after CleanUp() } // activate the selected module if (currentSelectedModule != VRModuleActiveEnum.Uninitialized) { m_activatedModule = currentSelectedModule; m_activatedModuleBase = m_modules[(int)currentSelectedModule]; m_activatedModuleBase.OnActivated(); VRModule.InvokeActiveModuleChangedEvent(m_activatedModule); } // update module if (currentSelectedModule != VRModuleActiveEnum.Uninitialized) { m_activatedModuleBase.Update(); } }
private void ActivateModule(VRModuleActiveEnum module) { if (m_activatedModule != VRModuleActiveEnum.Uninitialized) { Debug.LogError("Must deactivate before activate module! Current activatedModule:" + m_activatedModule); return; } if (module == VRModuleActiveEnum.Uninitialized) { Debug.LogError("Activate module cannot be Uninitialized! Use DeactivateModule instead"); return; } m_activatedModule = module; m_activatedModuleBase = m_modules[(int)module]; m_activatedModuleBase.Activated(); #if UNITY_2017_1_OR_NEWER Application.onBeforeRender += BeforeRenderUpdateModule; #else Camera.onPreCull += OnCameraPreCull; #endif InvokeActiveModuleChangedEvent(m_activatedModule); }
private static void OnActiveModuleChanged(VRModuleActiveEnum activatedModule) { if (activatedModule != VRModuleActiveEnum.Uninitialized) { VRModule.onActiveModuleChanged -= OnActiveModuleChanged; AutoLoadConfig(); } }
private static void OnActiveModuleChanged(VRModuleActiveEnum activatedModule) { if (activatedModule != VRModuleActiveEnum.Uninitialized) { VRModule.onActiveModuleChanged -= OnActiveModuleChanged; TryInitializeOnLoad(); } }
private static void InvokeActiveModuleChangedEvent(VRModuleActiveEnum activeModule) { if (s_onActiveModuleChanged != null) { s_onActiveModuleChanged(activeModule); } if (Active) { Instance.m_onActiveModuleChanged.Invoke(activeModule); } }
private void OnModuleActivated(VRModuleActiveEnum activatedModule) { if (activatedModule == VRModuleActiveEnum.SteamVR) { if (GetComponent <SteamVR_Camera>() == null) { gameObject.AddComponent <SteamVR_Camera>(); } VRModule.onActiveModuleChanged -= OnModuleActivated; } }
private void DeactivateModule() { if (m_activatedModule == VRModuleActiveEnum.Uninitialized) { return; } if (m_activatedModuleBase == null) { return; } m_delayDeactivate = false; #if UNITY_2017_1_OR_NEWER Application.onBeforeRender -= BeforeRenderUpdateModule; #else Camera.onPreCull -= OnCameraPreCull; #endif DeviceState prevState; DeviceState currState; // copy status to from current state to previous state, and reset current state for (uint i = 0u, imax = GetDeviceStateLength(); i < imax; ++i) { if (!TryGetValidDeviceState(i, out prevState, out currState)) { continue; } if (prevState.isConnected || currState.isConnected) { prevState.CopyFrom(currState); currState.Reset(); } } s_deviceSerialNumberTable.Clear(); // send disconnect event SendAllDeviceConnectedEvent(); var deactivatedModuleBase = m_activatedModuleBase; m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; deactivatedModuleBase.Deactivated(); InvokeActiveModuleChangedEvent(VRModuleActiveEnum.Uninitialized); }
private void ActivateModule(VRModuleActiveEnum module) { if (m_activatedModule != VRModuleActiveEnum.Uninitialized) { Debug.LogError("Must deactivate before activate module! Current activatedModule:" + m_activatedModule); return; } if (module == VRModuleActiveEnum.Uninitialized) { Debug.LogError("Activate module cannot be Uninitialized! Use DeactivateModule instead"); return; } m_activatedModule = module; m_activatedModuleBase = m_modules[(int)module]; m_activatedModuleBase.OnActivated(); VRModule.InvokeActiveModuleChangedEvent(m_activatedModule); switch (m_activatedModule) { #if VIU_STEAMVR case VRModuleActiveEnum.SteamVR: #if VIU_STEAMVR_1_2_3_OR_NEWER && !UNITY_2017_1_OR_NEWER Camera.onPreCull += OnCameraPreCull; #elif VIU_STEAMVR_1_2_0_OR_NEWER SteamVR_Events.NewPoses.AddListener(OnSteamVRNewPose); #elif VIU_STEAMVR_1_1_1 SteamVR_Utils.Event.Listen("new_poses", OnSteamVRNewPoseArgs); #endif break; #endif #if VIU_WAVEVR case VRModuleActiveEnum.WaveVR: WaveVR_Utils.Event.Listen(WaveVR_Utils.Event.NEW_POSES, OnWaveVRNewPoseArgs); break; #endif default: #if UNITY_2017_1_OR_NEWER Application.onBeforeRender += UpdateActiveModuleDeviceState; #else Camera.onPreCull += OnCameraPreCull; #endif break; } }
private void OnModuleActivated(VRModuleActiveEnum activatedModule) { foreach (var creator in m_creators) { if (creator.shouldActive) { creator.CreateCamera(this); break; } } if (activatedModule != VRModuleActiveEnum.Uninitialized) { VRModule.onActiveModuleChanged -= OnModuleActivated; } }
protected override void OnSingletonBehaviourInitialized() { if (m_dontDestroyOnLoad && transform.parent == null && Application.isPlaying) { DontDestroyOnLoad(gameObject); } m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; try { var modules = new List <ModuleBase>(); foreach (var type in Assembly.GetAssembly(typeof(ModuleBase)).GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(ModuleBase)))) { var inst = type == typeof(SimulatorVRModule) ? s_simulator : (ModuleBase)Activator.CreateInstance(type); var index = inst.moduleIndex; if (index < 0) { Debug.LogWarning("Invalid module index, module will not be activated! module name=" + type.Name + " index=" + index); } else if (index < modules.Count && modules[index] != null) { Debug.LogWarning("Duplicated module index, module will not be activated! module name=" + type.Name + " index=" + index); } else { while (index >= modules.Count) { modules.Add(null); } modules[index] = inst; //Debug.LogError(index+" " + modules[index]); } } m_modules = modules.ToArray(); } catch (Exception e) { m_modules = new ModuleBase[] { new DefaultModule() }; Debug.LogError(e); } }
private static void AutoLoadConfig(VRModuleActiveEnum activatedModule) { VRModule.onActiveModuleChanged -= AutoLoadConfig; if (activatedModule != VRModuleActiveEnum.SteamVR) { return; } if (!Active && !string.IsNullOrEmpty(AUTO_LOAD_CONFIG_PATH) && File.Exists(AUTO_LOAD_CONFIG_PATH)) { Initialize(); } if (Active) { Instance.UpdateActivity(); } }
protected override void OnSingletonBehaviourInitialized() { if (m_dontDestroyOnLoad && transform.parent == null && Application.isPlaying) { DontDestroyOnLoad(gameObject); } m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; m_modules = new ModuleBase[EnumUtils.GetMaxValue(typeof(VRModuleActiveEnum)) + 1]; m_modules[(int)VRModuleActiveEnum.None] = new DefaultModule(); m_modules[(int)VRModuleActiveEnum.Simulator] = s_simulator; m_modules[(int)VRModuleActiveEnum.UnityNativeVR] = new UnityEngineVRModule(); m_modules[(int)VRModuleActiveEnum.SteamVR] = new SteamVRModule(); m_modules[(int)VRModuleActiveEnum.OculusVR] = new OculusVRModule(); m_modules[(int)VRModuleActiveEnum.DayDream] = new GoogleVRModule(); m_modules[(int)VRModuleActiveEnum.WaveVR] = new WaveVRModule(); }
private void OnModuleActivated(VRModuleActiveEnum activatedModule) { switch (activatedModule) { #if VIU_STEAMVR && !VIU_STEAMVR_2_0_0_OR_NEWER case VRModuleActiveEnum.SteamVR: if (GetComponent <SteamVR_Camera>() == null) { // FIXME: SteamVR_Camera 2.0 is removed gameObject.AddComponent <SteamVR_Camera>(); } break; #endif #if VIU_WAVEVR case VRModuleActiveEnum.WaveVR: if (GetComponent <WaveVR_Render>() == null) { gameObject.AddComponent <WaveVR_Render>(); } if (GetComponent <VivePoseTracker>() == null) { gameObject.AddComponent <VivePoseTracker>().viveRole.SetEx(DeviceRole.Hmd); } if (GetComponentsInChildren <AudioListener>().Length > 1) { var listener = GetComponent <AudioListener>(); if (listener != null) { Destroy(listener); } } break; #endif default: break; } if (activatedModule != VRModuleActiveEnum.Uninitialized) { VRModule.onActiveModuleChanged -= OnModuleActivated; } }
private void DeactivateModule() { if (m_activatedModule == VRModuleActiveEnum.Uninitialized) { Debug.LogError("activatedModule is already Uninitialized!"); return; } if (m_activatedModuleBase == null) { Debug.LogError("activatedModule is already null!"); return; } switch (m_activatedModule) { #if VIU_STEAMVR case VRModuleActiveEnum.SteamVR: #if VIU_STEAMVR_1_2_3_OR_NEWER && !UNITY_2017_1_OR_NEWER Camera.onPreCull -= OnCameraPreCull; #elif VIU_STEAMVR_1_2_0_OR_NEWER SteamVR_Events.NewPoses.RemoveListener(OnSteamVRNewPose); #elif VIU_STEAMVR_1_1_1 SteamVR_Utils.Event.Remove("new_poses", OnSteamVRNewPoseArgs); #endif break; #endif #if VIU_WAVEVR case VRModuleActiveEnum.WaveVR: WaveVR_Utils.Event.Remove(WaveVR_Utils.Event.NEW_POSES, OnWaveVRNewPoseArgs); break; #endif default: #if UNITY_2017_1_OR_NEWER Application.onBeforeRender -= UpdateActiveModuleDeviceState; #else Camera.onPreCull -= OnCameraPreCull; #endif break; } // copy status to from current state to previous state, and reset current state for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { if (m_prevStates[i].isConnected || m_currStates[i].isConnected) { m_prevStates[i].CopyFrom(m_currStates[i]); m_currStates[i].Reset(); } } // send disconnect event for (var i = 0u; i < MAX_DEVICE_COUNT; ++i) { if (m_prevStates[i].isConnected) { VRModule.InvokeDeviceConnectedEvent(i, false); } } var deactivatedModuleBase = m_activatedModuleBase; m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; deactivatedModuleBase.OnDeactivated(); VRModule.InvokeActiveModuleChangedEvent(VRModuleActiveEnum.Uninitialized); }
private static void OnModuleActive(VRModuleActiveEnum activatedModule) { Initialize(); }
private void OnActiveModuleChanged(VRModuleActiveEnum module) { UpdateModel(); }
protected override void OnSingletonBehaviourInitialized() { if (m_dontDestroyOnLoad && transform.parent == null && Application.isPlaying) { DontDestroyOnLoad(gameObject); } SetDefaultInitGameObjectGetter(GetDefaultInitGameObject); s_defaultState = new DeviceState(INVALID_DEVICE_INDEX); s_simulator = new SimulatorVRModule(); s_deviceSerialNumberTable = new Dictionary <string, uint>(16); m_activatedModule = VRModuleActiveEnum.Uninitialized; m_activatedModuleBase = null; try { var modules = new List <ModuleBase>(); var modulesOrdered = new List <ModuleBase>(); foreach (var type in Assembly.GetAssembly(typeof(ModuleBase)).GetTypes().Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(ModuleBase)))) { var inst = type == typeof(SimulatorVRModule) ? s_simulator : (ModuleBase)Activator.CreateInstance(type); var index = inst.moduleIndex; if (index < 0) { Debug.LogWarning("Invalid module index, module will not be activated! module name=" + type.Name + " index=" + index); } else if (index < modules.Count && modules[index] != null) { Debug.LogWarning("Duplicated module index, module will not be activated! module name=" + type.Name + " index=" + index); } else { while (index >= modules.Count) { modules.Add(null); } modules[index] = inst; } var order = inst.moduleOrder; if (order < 0) { Debug.LogWarning("Invalid module order, module will not be activated! module name=" + type.Name + " order=" + order); } else if (order < modulesOrdered.Count && modulesOrdered[order] != null) { Debug.LogWarning("Duplicated module order, module will not be activated! module name=" + type.Name + " order=" + order); } else { while (order >= modulesOrdered.Count) { modulesOrdered.Add(null); } modulesOrdered[order] = inst; } } m_modules = modules.ToArray(); m_modulesOrdered = modulesOrdered.ToArray(); } catch (Exception e) { m_modules = new ModuleBase[] { new DefaultModule() }; m_modulesOrdered = new ModuleBase[] { new DefaultModule() }; Debug.LogError(e); } }
private void OnActiveModuleChanged(VRModuleActiveEnum activeModule) { UpdateHeight(); }
private void UpdateModel(VRModuleActiveEnum module) { UpdateModel(); }