Exemplo n.º 1
0
 protected override IEnumerable <IShortcut> CreateShortcuts()
 {
     return(base.CreateShortcuts().Concat(new IShortcut[] {
         new MultiKeyboardShortcut(new KeyStroke("Ctrl+C"), new KeyStroke("Ctrl+C"), () => { VRLog.Info("Mode Change to Standing Mode"); VR.Manager.SetMode(ModeType.StandingMode); }),
         new KeyboardShortcut(new KeyStroke("Ctrl+Space"), () => {
             if (monitor != null)
             {
                 if (monitor.activeSelf)
                 {
                     monitor.SetActive(false);
                     VRLog.Info("Monitor inactive");
                 }
                 else
                 {
                     MoveMonitor(VR.Camera.Head);
                     monitor.SetActive(true);
                     VRLog.Info($"Monitor active, show position is {monitor.transform.position}");
                 }
             }
             else
             {
                 VRLog.Info($"Monitor is Destroyed, Recreated Yet");
                 monitor = DesktopMonitor.Create(DesktopMonitor.CreateType.Stationary);
             }
         }),
         new MultiKeyboardShortcut(new KeyStroke("Ctrl+C"), new KeyStroke("Ctrl+R"), () => { SteamVR.instance.hmd.ResetSeatedZeroPose(); })
     }));
 }
Exemplo n.º 2
0
        protected override void OnAwake()
        {
            VRLog.Info("OnAwake");
            base.OnAwake();
            VR.Render.trackingSpace = Valve.VR.ETrackingUniverseOrigin.TrackingUniverseStanding;
            VR.Camera.Origin.transform.Reset();
            Monitor  = DesktopMonitor.Create(DesktopMonitor.CreateType.RoomScale);
            Emulator = TouchEmulator.Create();
            Emulator.transform.SetParent(Right.transform, false);

            DontDestroyOnLoad(Monitor.gameObject);
            DontDestroyOnLoad(Emulator.gameObject);
        }
Exemplo n.º 3
0
        private void MonitorDisplayChange()
        {
            // モニタをメニューボタンを押下した側に移動するか、関連付け中にメニューボタンを押したら表示/非表示を切り替える.
            if (Monitor != null)
            {
                if (Left.MenuButtonDown)
                {
                    if (Monitor.transform.parent == Left.transform)
                    {
                        var activated = !Monitor.isActiveAndEnabled;
                        Monitor.SetActive(activated);
                        Left.SetModelActive(!activated);
                    }
                    else
                    {
                        Monitor.transform.SetParent(Left.transform, false);
                        Emulator.transform.SetParent(Right.transform, false);
                        Emulator.controller = Right;
                        Monitor.SetActive(true);
                        Left.SetModelActive(false);
                        Right.SetModelActive(true);
                    }
                }
                else if (Right.MenuButtonDown)
                {
                    if (Monitor.transform.parent == Right.transform)
                    {
                        var activated = !Monitor.isActiveAndEnabled;

                        Monitor.SetActive(activated);
                        Right.SetModelActive(!activated);
                    }
                    else
                    {
                        Monitor.transform.SetParent(Right.transform, false);
                        Emulator.transform.SetParent(Left.transform, false);
                        Emulator.controller = Left;
                        Monitor.SetActive(true);
                        Left.SetModelActive(true);
                        Right.SetModelActive(false);
                    }
                }
            }
            else
            {
                VRLog.Info("Monitor Destroyed Recreated Yet");
                Monitor = DesktopMonitor.Create(DesktopMonitor.CreateType.RoomScale);
            }
        }
Exemplo n.º 4
0
        protected override void OnAwake()
        {
            base.OnAwake();
            VRLog.Info("OnAWake()");
            // 座位モードに変更.
            VR.Render.trackingSpace = Valve.VR.ETrackingUniverseOrigin.TrackingUniverseSeated;
            monitor = DesktopMonitor.Create(DesktopMonitor.CreateType.Stationary);
            MoveMonitor(VR.Camera.Head);

            Left.enabled  = false;
            Right.enabled = false;

            DontDestroyOnLoad(monitor.gameObject);

            return;
        }
Exemplo n.º 5
0
        internal void BuildObjectGraph(Action shutdown)
        {
            const int FIVE_SECONDS   = 5000;
            const int THIRTY_SECONDS = 30000;

            logger     = new Logger();
            systemInfo = new SystemInfo();

            InitializeConfiguration();
            InitializeLogging();
            InitializeText();

            var args                  = Environment.GetCommandLineArgs();
            var messageBox            = new MessageBoxFactory(text);
            var nativeMethods         = new NativeMethods();
            var uiFactory             = new UserInterfaceFactory(text);
            var desktopFactory        = new DesktopFactory(ModuleLogger(nameof(DesktopFactory)));
            var desktopMonitor        = new DesktopMonitor(ModuleLogger(nameof(DesktopMonitor)));
            var explorerShell         = new ExplorerShell(ModuleLogger(nameof(ExplorerShell)), nativeMethods);
            var fileSystem            = new FileSystem();
            var processFactory        = new ProcessFactory(ModuleLogger(nameof(ProcessFactory)));
            var proxyFactory          = new ProxyFactory(new ProxyObjectFactory(), ModuleLogger(nameof(ProxyFactory)));
            var remoteSessionDetector = new RemoteSessionDetector(ModuleLogger(nameof(RemoteSessionDetector)));
            var runtimeHost           = new RuntimeHost(appConfig.RuntimeAddress, new HostObjectFactory(), ModuleLogger(nameof(RuntimeHost)), FIVE_SECONDS);
            var runtimeWindow         = uiFactory.CreateRuntimeWindow(appConfig);
            var server                = new ServerProxy(appConfig, ModuleLogger(nameof(ServerProxy)));
            var serviceProxy          = new ServiceProxy(appConfig.ServiceAddress, new ProxyObjectFactory(), ModuleLogger(nameof(ServiceProxy)), Interlocutor.Runtime);
            var sessionContext        = new SessionContext();
            var splashScreen          = uiFactory.CreateSplashScreen(appConfig);
            var userInfo              = new UserInfo(ModuleLogger(nameof(UserInfo)));
            var vmDetector            = new VirtualMachineDetector(ModuleLogger(nameof(VirtualMachineDetector)), systemInfo);

            var bootstrapOperations = new Queue <IOperation>();
            var sessionOperations   = new Queue <IRepeatableOperation>();

            bootstrapOperations.Enqueue(new I18nOperation(logger, text));
            bootstrapOperations.Enqueue(new CommunicationHostOperation(runtimeHost, logger));

            sessionOperations.Enqueue(new SessionInitializationOperation(configuration, fileSystem, logger, runtimeHost, sessionContext));
            sessionOperations.Enqueue(new ConfigurationOperation(args, configuration, new FileSystem(), new HashAlgorithm(), logger, sessionContext));
            sessionOperations.Enqueue(new DisclaimerOperation(logger, sessionContext));
            sessionOperations.Enqueue(new ServerOperation(args, configuration, fileSystem, logger, sessionContext, server));
            sessionOperations.Enqueue(new RemoteSessionOperation(remoteSessionDetector, logger, sessionContext));
            sessionOperations.Enqueue(new VirtualMachineOperation(vmDetector, logger, sessionContext));
            sessionOperations.Enqueue(new ServiceOperation(logger, runtimeHost, serviceProxy, sessionContext, THIRTY_SECONDS, userInfo));
            sessionOperations.Enqueue(new ClientTerminationOperation(logger, processFactory, proxyFactory, runtimeHost, sessionContext, THIRTY_SECONDS));
            sessionOperations.Enqueue(new ProctoringWorkaroundOperation(logger, sessionContext));
            sessionOperations.Enqueue(new KioskModeOperation(desktopFactory, desktopMonitor, explorerShell, logger, processFactory, sessionContext));
            sessionOperations.Enqueue(new ClientOperation(logger, processFactory, proxyFactory, runtimeHost, sessionContext, THIRTY_SECONDS));
            sessionOperations.Enqueue(new SessionActivationOperation(logger, sessionContext));

            var bootstrapSequence = new OperationSequence(logger, bootstrapOperations);
            var sessionSequence   = new RepeatableOperationSequence(logger, sessionOperations);

            RuntimeController = new RuntimeController(
                appConfig,
                logger,
                messageBox,
                bootstrapSequence,
                sessionSequence,
                runtimeHost,
                runtimeWindow,
                serviceProxy,
                sessionContext,
                shutdown,
                splashScreen,
                text,
                uiFactory);
        }