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(); }) })); }
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); }
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); } }
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; }
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); }