public static void Default_1_Check()
        {
            var openVRManager = OpenVRManager.GetInstance();
            var checkResult   = openVRManager.Check();

            Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"IsApiReady: {checkResult.IsApiReady}");
            Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"IsHmdPresent: {checkResult.IsHmdPresent}");
            Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"IsRuntimeInstalled: {checkResult.IsRuntimeInstalled}");
            Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"IsRuntimeRunning: {checkResult.IsRuntimeRunning}");
        }
        public static void Default_2_IsRuntimeConnected()
        {
            var openVRManager = OpenVRManager.GetInstance();
            var checkResult   = openVRManager.Check();

            if (!checkResult.IsApiReady)
            {
                Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR API is not ready. Skip");
                return;
            }
            if (!checkResult.IsRuntimeRunning)
            {
                Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR runtime is not running. Try to launch runtime");
                var success = openVRManager.LaunchRuntime();
                if (!success)
                {
                    Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR runtime can not be launched. Skip");
                    return;
                }

                SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(RuntimeLaunchingTimeInSec));
            }

            openVRManager.OnEnableHomeAppSettingsHaveChanged += OpenVRManager_OnEnableHomeAppSettingsHaveChanged;
            openVRManager.OnSceneApplicationStateChanged     += OpenVRManager_OnSceneApplicationStateChanged;

            var isRuntimeConnected = openVRManager.IsRuntimeConnected();

            if (isRuntimeConnected)
            {
                Assert.True(openVRManager.DisconnectRuntime());
            }

            Assert.False(openVRManager.IsRuntimeConnected());
            var connected = openVRManager.ConnectRuntime();

            if (!connected)
            {
                Logger.GetInstance(typeof(OpenVRManagerTests)).Error($"Con not connect to OpenVR runtime. error: {openVRManager.GetLastRuntimeConnectingError()}");
                return;
            }
            Assert.True(openVRManager.ConnectRuntime());
            Assert.True(openVRManager.IsRuntimeConnected());
            Assert.True(openVRManager.DisconnectRuntime());
            Assert.True(openVRManager.DisconnectRuntime());
            Assert.False(openVRManager.IsRuntimeConnected());
        }
        public static void Default_3_EnableHomeApp()
        {
            var openVRManager = OpenVRManager.GetInstance();
            var checkResult   = openVRManager.Check();

            if (!checkResult.IsApiReady)
            {
                Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR API is not ready. Skip");
                return;
            }
            if (!checkResult.IsRuntimeRunning)
            {
                Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR runtime is not running. Try to launch runtime");
                var success = openVRManager.LaunchRuntime();
                if (!success)
                {
                    Logger.GetInstance(typeof(OpenVRManagerTests)).Warn("OpenVR runtime can not be launched. Skip");
                    return;
                }

                SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(RuntimeLaunchingTimeInSec));
            }

            openVRManager.OnEnableHomeAppSettingsHaveChanged += OpenVRManager_OnEnableHomeAppSettingsHaveChanged;

            var isRuntimeConnected = openVRManager.IsRuntimeConnected();

            if (!isRuntimeConnected)
            {
                var connected = openVRManager.ConnectRuntime();
                if (!connected)
                {
                    Logger.GetInstance(typeof(OpenVRManagerTests)).Error($"Con not connect to OpenVR runtime. error: {openVRManager.GetLastRuntimeConnectingError()}");
                    return;
                }
            }

            var isHomeAppEnabled = openVRManager.IsHomeAppEnabled();

            if (isHomeAppEnabled)
            {
                const string homeAppKey       = "openvr.tool.steamvr_environments";
                var          homeAppProcessId = openVRManager.GetApplicationProcessId(homeAppKey);
                Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"{homeAppKey}({homeAppProcessId})");
                Assert.False(homeAppProcessId == 0);

                Assert.True(openVRManager.EnableHomeApp(false));
                Assert.True(openVRManager.EnableHomeApp(false));
                Assert.False(openVRManager.IsHomeAppEnabled());

                SpinWait.SpinUntil(() => false, TimeSpan.FromSeconds(HomeAppKillingTimeInSec));

                var applicationError = openVRManager.LaunchApplication(homeAppKey);
                Logger.GetInstance(typeof(OpenVRManagerTests)).Info($"Try to launch {homeAppKey}, error: {applicationError}");
                Assert.True(applicationError == OpenVRManager.ApplicationError.None ||
                            applicationError == OpenVRManager.ApplicationError.ApplicationAlreadyRunning);
            }
            else
            {
                Assert.True(openVRManager.EnableHomeApp(true));
                Assert.True(openVRManager.EnableHomeApp(true));
                Assert.True(openVRManager.IsHomeAppEnabled());
            }
        }
        public static void Default_0_GetInstance()
        {
            var openVRManager = OpenVRManager.GetInstance();

            Assert.NotNull(openVRManager);
        }
Ejemplo n.º 5
0
        private static void Main(string[] args)
        {
            var openVRManager = OpenVRManager.GetInstance();

            openVRManager.OnRuntimeConnected    += OpenVRManager_OnRuntimeConnected;
            openVRManager.OnRuntimeDisconnected += OpenVRManager_OnRuntimeDisconnected;
            openVRManager.OnRuntimeKilled       += OpenVRManager_OnRuntimeKilled;
            openVRManager.OnRuntimeLaunched     += OpenVRManager_OnRuntimeLaunched;
            Logger.GetInstance(typeof(Program)).Info("Start OpenVR runtime watching");
            openVRManager.StartRuntimeWatching();
            Console.ReadKey();

            var checkResult        = openVRManager.Check();
            var isApiReady         = checkResult.IsApiReady;
            var isRuntimeInstalled = checkResult.IsRuntimeInstalled;
            var isRuntimeRunning   = checkResult.IsRuntimeRunning;

            Logger.GetInstance(typeof(Program)).Info($"IsApiReady: {isApiReady}");
            Logger.GetInstance(typeof(Program)).Info($"IsHmdPresent: {checkResult.IsHmdPresent}");
            Logger.GetInstance(typeof(Program)).Info($"IsRuntimeInstalled: {isRuntimeInstalled}");
            Logger.GetInstance(typeof(Program)).Info($"IsRuntimeRunning: {isRuntimeRunning}");
            if (!isApiReady)
            {
                Logger.GetInstance(typeof(Program)).Error("OpenVR API is not ready.");
                return;
            }
            if (!isRuntimeInstalled)
            {
                Logger.GetInstance(typeof(Program)).Error("OpenVR runtime is not installed.");
                return;
            }
            if (!isRuntimeRunning)
            {
                Logger.GetInstance(typeof(Program)).Error("OpenVR runtime is not running. Try to launch runtime");
                var success = openVRManager.LaunchRuntime();
                if (!success)
                {
                    Logger.GetInstance(typeof(Program)).Warn("OpenVR runtime can not be launched. Skip");
                    return;
                }
            }
            Console.ReadKey();

            openVRManager.OnEnableHomeAppSettingsHaveChanged += OpenVRManager_OnEnableHomeAppSettingsHaveChanged;
            openVRManager.OnSceneApplicationStateChanged     += OpenVRManager_OnSceneApplicationStateChanged;
            var isRuntimeConnected = openVRManager.IsRuntimeConnected();

            if (!isRuntimeConnected)
            {
                Logger.GetInstance(typeof(Program)).Info("OpenVR runtime is not connected yet. try to connect.");
                var connected = openVRManager.ConnectRuntime();
                if (!connected)
                {
                    Logger.GetInstance(typeof(Program)).Error($"Con not connect to OpenVR runtime. error: {openVRManager.GetLastRuntimeConnectingError()}");
                    return;
                }
            }
            Logger.GetInstance(typeof(Program)).Info("OpenVR runtime is connected.");
            Logger.GetInstance(typeof(Program)).Info($"EnableHomeApp: {openVRManager.IsHomeAppEnabled()}");
            Logger.GetInstance(typeof(Program)).Info($"SceneApplicationState: {openVRManager.GetSceneApplicationState()}");
            Console.ReadKey();

            Logger.GetInstance(typeof(Program)).Info("Try to disconnect and reconnect OpenVR runtime.");
            var disconnected = openVRManager.DisconnectRuntime();

            if (!disconnected)
            {
                Logger.GetInstance(typeof(Program)).Error("Con not disconnect to OpenVR runtime. part 1");
                return;
            }
            isRuntimeConnected = openVRManager.IsRuntimeConnected();
            if (isRuntimeConnected)
            {
                Logger.GetInstance(typeof(Program)).Error("Con not disconnect to OpenVR runtime. part 2");
                return;
            }
            var reconnected = openVRManager.ConnectRuntime();

            if (!reconnected)
            {
                Logger.GetInstance(typeof(Program)).Error("Con not reconnect to OpenVR runtime. part 1");
                return;
            }
            isRuntimeConnected = openVRManager.IsRuntimeConnected();
            if (!isRuntimeConnected)
            {
                Logger.GetInstance(typeof(Program)).Error("Con not reconnect to OpenVR runtime. part 2");
                return;
            }
            Logger.GetInstance(typeof(Program)).Info("OpenVR runtime is reconnected.");
            Console.ReadKey();

            var killed = openVRManager.KillRuntime();

            if (!killed)
            {
                Logger.GetInstance(typeof(Program)).Error("Can not kill OpenVR runtime");
            }
            Console.ReadKey();

            Logger.GetInstance(typeof(Program)).Info("Stop OpenVR runtime watching");
            openVRManager.StopRuntimeWatching();
            Console.ReadKey();

            Logger.GetInstance(typeof(Program)).Info("Done");
        }