// キーボードでもWebXRモードのUIの切り替えが疑似的に行えるようにするためのスクリプト // 使用する際は「m_IsDebug = true」に変更しYキーでUIの切り替えを行う // WebXRモードに入らず確認する場合は「dialog.json」の{"Func" : {"Name" : "enter_webxr"}}を削除する component WebXRTest { bool m_IsDebug; bool m_IsPreKeyPressed; public WebXRTest() { m_IsDebug = false; m_IsPreKeyPressed = false; } public void Update() { // デバッグ中のみ許可する if(!m_IsDebug) return; // Yボタンでの切り替え処理 // 本来はVRコントローラのYボタンで切り替え予定だが、テストなのでキーボードのYキーで代用 bool isKeyPressed = hsInputIsKeyDown(HSKey_Y); if(isKeyPressed && !m_IsPreKeyPressed) { // カメラモード中に切り替えが発生すれば撮影用UIを消してHUDを表示 if(hsCameraGetPhotoMode()) { // 撮影モード停止 hsCameraSetPhotoMode(false); // 撮影用UI非表示、HUD表示 hsCanvasResetToggleDefault("Toggle_MoveKeyOnly"); hsCanvasResetToggleDefault("Toggle_Photo_MoveDir"); hsCanvasResetToggleDefault("Toggle_nameplate_delete"); hsCanvasResetToggleDefault("Toggle_camera_gaze"); hsCanvasResetToggleDefault("Toggle_ShowPreviewPhoto"); hsCanvasResetToggleDefault("action_palette_toggle"); hsCanvasResetToggleDefault("Toggle_camera_focus"); hsCanvasSetLayerShow( "camera_layer", false); hsCanvasSetLayerShow( "camera_focus_layer", false); hsCanvasSetLayerShow( "mainmenu_home", false); hsCanvasCloseAllLayer(); hsCanvasResetToggleDefault("Toggle_HUD_Open_Close"); hsCanvasResetToggleDefault("Toggle_MainMenu_On"); hsCanvasSetLayerShow( "hud_webxr", true); } // MENU画面が開いている間は処理しない if(hsCanvasGetLayerShow("mainmenu_home")) return; if(hsCanvasGetLayerShow("mainmenu_webxr")) { hsCanvasSetLayerShow( "hud_webxr", true); hsCanvasSetLayerShow( "mainmenu_webxr", false); hsCanvasSetLayerShow( "mainmenu_side_home_webxr", false); // テキストチャットを閉じる { LayerBundle layer = hsLayerGet("textchat_common"); if(layer !== null) { layer.CallComponentMethod("TCViewModel", "CloseTextChat", ""); } } // ボイスチャットを閉じる { LayerBundle layer = hsLayerGet("vcc_icon_only_base"); if(layer === null) return; layer.CallComponentMethod("VCCViewModel", "ClearAllVCCLayer", ""); } // エモートを閉じる { hsCanvasResetToggleDefault("action_palette_toggle"); hsCanvasSetLayerShow("action_list",false); } } else if(hsCanvasGetLayerShow("hud_webxr")) { // WebXR用メインメニュー表示 hsCanvasSetLayerShow( "hud_webxr", false); hsCanvasSetLayerShow( "mainmenu_webxr", true); hsCanvasSetLayerShow( "mainmenu_side_home_webxr", true); //hsCanvasSetLayerShow(CHAT_TYPE_PUBLIC, true); // エモート LayerBundle layer = hsLayerGet("action_palette"); if(layer !== null) { string paletteClassName="ActionPalette"; if(g_UseServerForEmote){ paletteClassName="ActionPaletteWithServer"; } layer.CallComponentMethod(paletteClassName,"OnShowActionPalette",""); } // テキストチャット { LayerBundle layer = hsLayerGet("textchat_common"); if(layer !== null) { layer.CallComponentMethod("TCViewModel", "OpenGlobalTextChat", ""); } } // VCC { LayerBundle layer = hsLayerGet("vcc_icon_only_base"); if(layer === null) return; layer.CallComponentMethod("VCCViewModel", "ClearAllVCCLayer", ""); } if(hsSystemIsVRMode()) { LayerBundle layer = hsLayerGet("mainmenu_webxr"); if(layer !== null) { layer.CallComponentMethod("TCViewModel", "EnterWebXRMode", ""); } } } } m_IsPreKeyPressed = isKeyPressed; } }