예제 #1
0
        public override bool Initialize()
        {
#if UNITY_INPUT_SYSTEM
            //InputLayoutLoader.RegisterInputLayouts();
#endif


//this only works at the right time in editor. In builds we use a different method (reading the asset manually)
#if UNITY_EDITOR
            OpenVRSettings settings = OpenVRSettings.GetSettings();
            if (settings != null)
            {
                if (string.IsNullOrEmpty(settings.EditorAppKey))
                {
                    settings.EditorAppKey = settings.GenerateEditorAppKey();
                }

                UserDefinedSettings userDefinedSettings;
                userDefinedSettings.stereoRenderingMode = (ushort)settings.GetStereoRenderingMode();
                userDefinedSettings.initializationType  = (ushort)settings.GetInitializationType();
                userDefinedSettings.applicationName     = null;
                userDefinedSettings.editorAppKey        = null;
                userDefinedSettings.mirrorViewMode      = (ushort)settings.GetMirrorViewMode();

                userDefinedSettings.editorAppKey = settings.EditorAppKey; //only set the key if we're in the editor. Otherwise let steamvr set the key.

                if (OpenVRHelpers.IsUsingSteamVRInput())
                {
                    userDefinedSettings.editorAppKey = OpenVRHelpers.GetEditorAppKeyFromPlugin();
                }

                userDefinedSettings.applicationName = string.Format("[Testing] {0}", GetEscapedApplicationName());
                settings.InitializeActionManifestFileRelativeFilePath();

                userDefinedSettings.actionManifestPath = settings.ActionManifestFileRelativeFilePath;

                SetUserDefinedSettings(userDefinedSettings);
            }
#endif

            CreateSubsystem <XRDisplaySubsystemDescriptor, XRDisplaySubsystem>(s_DisplaySubsystemDescriptors, "OpenVR Display");

            EVRInitError result = GetInitializationResult();
            if (result != EVRInitError.None)
            {
                DestroySubsystem <XRDisplaySubsystem>();
                Debug.LogError("<b>[OpenVR]</b> Could not initialize OpenVR. Error code: " + result.ToString());
                return(false);
            }

            CreateSubsystem <XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "OpenVR Input");

            OpenVREvents.Initialize();
            TickCallbackDelegate callback = TickCallback;
            RegisterTickCallback(callback);
            callback(0);

            return(displaySubsystem != null && inputSubsystem != null);
        }
예제 #2
0
        public override bool Initialize()
        {
            Debug.Log("Initialize openvr loader");

#if UNITY_INPUT_SYSTEM
            InputLayoutLoader.RegisterInputLayouts();
#endif

            OpenVRSettings settings = OpenVRSettings.GetSettings();
            if (settings != null)
            {
                if (string.IsNullOrEmpty(settings.EditorAppKey))
                {
                    settings.EditorAppKey = settings.GenerateEditorAppKey();
                }

                UserDefinedSettings userDefinedSettings;
                userDefinedSettings.stereoRenderingMode  = (ushort)settings.GetStereoRenderingMode();
                userDefinedSettings.initializationType   = (ushort)settings.GetInitializationType();
                userDefinedSettings.applicationName      = null;
                userDefinedSettings.editorAppKey         = null;
                userDefinedSettings.isSteamVRLegacyInput = settings.IsLegacy;
                userDefinedSettings.mirrorViewMode       = (ushort)settings.GetMirrorViewMode();
                //todo: determine legacy state?

#if UNITY_EDITOR
                userDefinedSettings.editorAppKey    = settings.EditorAppKey; //only set the key if we're in the editor. Otherwise let steamvr set the key.
                userDefinedSettings.applicationName = string.Format("[Testing] {0}", GetEscapedApplicationName());

                settings.InitializeActionManifestFileRelativeFilePath();
#endif
                //only set the path if the file exists
                FileInfo actionManifestFileInfo = new FileInfo(settings.ActionManifestFileRelativeFilePath);
                if (actionManifestFileInfo.Exists)
                {
                    userDefinedSettings.actionManifestPath = actionManifestFileInfo.FullName.Replace("\\", "\\\\");
                }
                else
                {
                    userDefinedSettings.actionManifestPath = null;
                }


                SetUserDefinedSettings(userDefinedSettings);
            }

            CreateSubsystem <XRDisplaySubsystemDescriptor, XRDisplaySubsystem>(s_DisplaySubsystemDescriptors, "OpenVR Display");
            CreateSubsystem <XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "OpenVR Input");

            Debug.Log(displaySubsystem);
            Debug.Log(inputSubsystem);


            return(displaySubsystem != null && inputSubsystem != null);
        }
예제 #3
0
        public override bool Start()
        {
            WatchForReload();

            StartSubsystem <XRDisplaySubsystem>();
            StartSubsystem <XRInputSubsystem>();

            EVRInitError result = GetInitializationResult();

            if (result != EVRInitError.None)
            {
                Debug.LogError("<b>[OpenVR]</b> Could not initialize OpenVR. Error code: " + result.ToString());
                return(false);
            }

#if !UNITY_METRO
            try
            {
                settings = OpenVRSettings.GetSettings();

                // Listen for changes in the mirror mode file
                if (watcher == null)
                {
                    var fi = new System.IO.FileInfo(mirrorViewPath);
                    watcher = new System.IO.FileSystemWatcher(fi.DirectoryName, fi.Name);
                    watcher.NotifyFilter        = System.IO.NotifyFilters.LastWrite;
                    watcher.Created            += OnChanged;
                    watcher.Changed            += OnChanged;
                    watcher.EnableRaisingEvents = true;
                    if (fi.Exists)
                    {
                        OnChanged(null, null);
                    }
                }
            } catch {}
#endif

            return(true);
        }
예제 #4
0
        private void SetupFileSystemWatcher()
        {
            try
            {
                settings = OpenVRSettings.GetSettings();

                // Listen for changes in the mirror mode file
                if (watcher == null && running)
                {
                    watcherFile                 = new System.IO.FileInfo(mirrorViewPath);
                    watcher                     = new System.IO.FileSystemWatcher(watcherFile.DirectoryName, watcherFile.Name);
                    watcher.NotifyFilter        = System.IO.NotifyFilters.LastWrite;
                    watcher.Created            += OnChanged;
                    watcher.Changed            += OnChanged;
                    watcher.EnableRaisingEvents = true;
                    if (watcherFile.Exists)
                    {
                        OnChanged(null, null);
                    }
                }
            }
            catch { }
        }
예제 #5
0
        public override bool Initialize()
        {
#if UNITY_INPUT_SYSTEM
            InputLayoutLoader.RegisterInputLayouts();
#endif


//this only works at the right time in editor. In builds we use a different method (reading the asset manually)
#if UNITY_EDITOR
            OpenVRSettings settings = OpenVRSettings.GetSettings();
            if (settings != null)
            {
                if (string.IsNullOrEmpty(settings.EditorAppKey))
                {
                    settings.EditorAppKey = settings.GenerateEditorAppKey();
                }

                UserDefinedSettings userDefinedSettings;
                userDefinedSettings.stereoRenderingMode  = (ushort)settings.GetStereoRenderingMode();
                userDefinedSettings.initializationType   = (ushort)settings.GetInitializationType();
                userDefinedSettings.applicationName      = null;
                userDefinedSettings.editorAppKey         = null;
                userDefinedSettings.isSteamVRLegacyInput = settings.IsLegacy;
                userDefinedSettings.mirrorViewMode       = (ushort)settings.GetMirrorViewMode();

                if (OpenVRHelpers.IsUsingSteamVRInput())
                {
                    userDefinedSettings.isSteamVRLegacyInput = false;
                    settings.IsLegacy = false;
                }

                userDefinedSettings.editorAppKey = settings.EditorAppKey; //only set the key if we're in the editor. Otherwise let steamvr set the key.

                if (OpenVRHelpers.IsUsingSteamVRInput())
                {
                    userDefinedSettings.editorAppKey = OpenVRHelpers.GetEditorAppKeyFromPlugin();
                }

                userDefinedSettings.applicationName = string.Format("[Testing] {0}", GetEscapedApplicationName());
                settings.InitializeActionManifestFileRelativeFilePath();

                userDefinedSettings.actionManifestPath = settings.ActionManifestFileRelativeFilePath;


                //only set the path if the file exists
                FileInfo actionManifestFileInfo = new FileInfo(userDefinedSettings.actionManifestPath);
                if (actionManifestFileInfo.Exists)
                {
                    userDefinedSettings.actionManifestPath = actionManifestFileInfo.FullName.Replace("\\", "\\\\");
                }
                else
                {
                    userDefinedSettings.actionManifestPath = null;
                }


                SetUserDefinedSettings(userDefinedSettings);
            }
#endif

            CreateSubsystem <XRDisplaySubsystemDescriptor, XRDisplaySubsystem>(s_DisplaySubsystemDescriptors, "OpenVR Display");
            CreateSubsystem <XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "OpenVR Input");

            OpenVREvents.Initialize();
            TickCallbackDelegate callback = TickCallback;
            RegisterTickCallback(callback);
            callback(0);

            return(displaySubsystem != null && inputSubsystem != null);
        }