local VRService = game:GetService("VRService") local CoreGui = game:GetService("CoreGui") local RobloxGui = CoreGui.RobloxGui local Panel3D = require(RobloxGui.Modules.VR.Panel3D) local VRHub = require(RobloxGui.Modules.VR.VRHub) local VRKeyboard = require(RobloxGui.Modules.VR.VirtualKeyboard) local UserGuiModule = {} UserGuiModule.ModuleName = "UserGui" UserGuiModule.KeepVRTopbarOpen = false UserGuiModule.VRIsExclusive = false UserGuiModule.VRClosesNonExclusive = false VRHub:RegisterModule(UserGuiModule) local userGuiPanel = Panel3D.Get(UserGuiModule.ModuleName) userGuiPanel:SetType(Panel3D.Type.Standard) userGuiPanel:ResizeStuds(4, 4, 128) userGuiPanel:SetVisible(false) VRHub.ModuleOpened.Event:connect(function(moduleName) if moduleName ~= UserGuiModule.ModuleName then local module = VRHub:GetModule(moduleName) if module.VRClosesNonExclusive and userGuiPanel:IsVisible() then UserGuiModule:SetVisible(false) end end end) local KeyboardOpen = false local GuiVisible = false function UserGuiModule:SetVisible(visible) GuiVisible = visible userGuiPanel:SetVisible(GuiVisible) if GuiVisible then VRHub:FireModuleOpened(UserGuiModule.ModuleName) else VRHub:FireModuleClosed(UserGuiModule.ModuleName) end -- We need to hide the UserGui when typing on the keyboard so that the textbox doesn't sink events from the keyboard local showGui = GuiVisible and not KeyboardOpen CoreGui:SetUserGuiRendering(true, showGui and userGuiPanel:GetPart() or nil, Enum.NormalId.Front) end function UserGuiModule:IsVisible() return GuiVisible end function UserGuiModule:Update() self:SetVisible(GuiVisible) end local function OnVREnabledChanged() if not VRService.VREnabled then userGuiPanel:SetVisible(false) CoreGui:SetUserGuiRendering(false, nil, Enum.NormalId.Front) end end VRService:GetPropertyChangedSignal("VREnabled"):connect(OnVREnabledChanged) OnVREnabledChanged() VRKeyboard.OpenedEvent:connect(function() KeyboardOpen = true UserGuiModule:Update() end) VRKeyboard.ClosedEvent:connect(function() KeyboardOpen = false UserGuiModule:Update() end) UserGuiModule:SetVisible(false) return UserGuiModule