Files
watrbx-game-engine/Android/NativeShell/obb/content/scripts/Modules/VR/Recenter.lua
T
2025-09-18 17:55:52 -04:00

97 lines
2.3 KiB
Lua

local InputService = game:GetService("UserInputService")
local CoreGui = game:GetService("CoreGui")
local RobloxGui = CoreGui:WaitForChild("RobloxGui")
local Panel3D = require(RobloxGui.Modules.VR.Panel3D)
local VRHub = require(RobloxGui.Modules.VR.VRHub)
local Util = require(RobloxGui.Modules.Settings.Utility)
local RecenterModule = {}
RecenterModule.ModuleName = "Recenter"
RecenterModule.KeepVRTopbarOpen = true
RecenterModule.VRIsExclusive = true
RecenterModule.VRClosesNonExclusive = false
VRHub:RegisterModule(RecenterModule)
local countdownPanel = Panel3D.Get("RecenterCountdown")
countdownPanel:SetType(Panel3D.Type.HorizontalFollow)
countdownPanel:ResizeStuds(5, 3, 128)
countdownPanel:SetCanFade(false)
local countdown = Util:Create "TextLabel" {
Parent = countdownPanel:GetGUI(),
Position = UDim2.new(0.5, -64, 0.5, -64),
Size = UDim2.new(0, 128, 0, 128),
BackgroundTransparency = 0.9,
BackgroundColor3 = Color3.new(0.2, 0.2, 0.2),
TextColor3 = Color3.new(1, 1, 1),
Text = "",
TextScaled = true,
Font = Enum.Font.SourceSansBold,
Visible = true
}
local recenterFrame = Util:Create "ImageLabel" {
Parent = countdownPanel:GetGUI(),
Position = UDim2.new(0, 0, 0, 0),
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
Image = "rbxasset://textures/ui/VR/recenterFrame.png"
}
countdownPanel:SetVisible(false)
local isCountingDown = false
VRHub.ModuleOpened.Event:connect(function(moduleName)
if moduleName ~= RecenterModule.ModuleName then
local module = VRHub:GetModule(moduleName)
if module.VRIsExclusive then
isCountingDown = false
countdownPanel:SetVisible(false)
end
end
end)
function RecenterModule:SetVisible(visible)
if visible then
if isCountingDown then
isCountingDown = false
VRHub:FireModuleClosed(RecenterModule.ModuleName)
return
else
VRHub:FireModuleOpened(RecenterModule.ModuleName)
end
spawn(function()
isCountingDown = true
countdownPanel:SetVisible(true)
for i = 3, 1, -1 do
if isCountingDown then
countdown.Text = tostring(i)
wait(1)
end
end
if isCountingDown then
InputService:RecenterUserHeadCFrame()
end
countdownPanel:SetVisible(false)
isCountingDown = false
VRHub:FireModuleClosed(RecenterModule.ModuleName)
end)
else
VRHub:FireModuleClosed(RecenterModule.ModuleName)
end
end
return RecenterModule