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;
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
        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;
        }
    }
Example #5
0
        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();
            }
        }
Example #6
0
        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);
     }
 }
Example #10
0
    private void OnModuleActivated(VRModuleActiveEnum activatedModule)
    {
        if (activatedModule == VRModuleActiveEnum.SteamVR)
        {
            if (GetComponent <SteamVR_Camera>() == null)
            {
                gameObject.AddComponent <SteamVR_Camera>();
            }

            VRModule.onActiveModuleChanged -= OnModuleActivated;
        }
    }
Example #11
0
        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);
        }
Example #12
0
        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;
            }
        }
Example #13
0
        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();
        }
    }
Example #16
0
        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();
        }
Example #17
0
        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;
            }
        }
Example #18
0
        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();
 }