Clients/Client2018/content/internal/AppShell/Modules/Shell/CameraManagerModules/CameraManager_ZoneManager.lua

123 lines
2.1 KiB
Lua

-- Clean up this file when remove FIntXboxAvatarEditorRolloutPercent2
-- Written by Tomarty, Copyright Roblox 2015
local runService = game:GetService("RunService")
local ZoneAnimator;
do
local animators = {}
local function GetAnimator(zone)
if animators[zone] then
return animators[zone]
end
local moduleScript = script.Parent:WaitForChild("CameraManager_Zones"):FindFirstChild("CameraManagerZone_" .. tostring(zone))
if not moduleScript then
return
end
local animator = require(moduleScript)
animators[zone] = animator
return animator
end
ZoneAnimator = {
CurrentZone = nil;
}
local connection;
function ZoneAnimator:SetZone(zone)
if ZoneAnimator.CurrentZone == zone then
return
end
ZoneAnimator.CurrentZone = zone
if connection then
connection:disconnect()
connection = nil
end
local animator = GetAnimator(zone)
if not animator then
return
end
animator:SetEnabled(true)
connection = {
disconnect = function()
animator:SetEnabled(false)
end
}
end
end
local SkyboxManager;
do
SkyboxManager = {}
local activeSkybox = nil
function SkyboxManager:SetZone(id)
if activeSkybox then
activeSkybox.Parent = nil
activeSkybox = nil
end
local Skyboxes = game:GetService("ReplicatedStorage"):WaitForChild("Skyboxes")
local skybox = Skyboxes:FindFirstChild(id or "default")
if skybox then
activeSkybox = skybox:Clone()
local lighting = game:GetService("Lighting")
skybox.Parent = lighting
pcall(function()
for k, v in pairs(skybox:GetChildren()) do
lighting[v.Name] = v.Value
end
end)
end
end
end
local ZoneManager = {
Zone = nil;
}
--local ZoneAnimator = require(script.ZoneAnimator)
--local Skybox = require(script.Skybox)
local function setZoneInternal(zone)
ZoneManager.Zone = zone
SkyboxManager:SetZone(zone)
ZoneAnimator:SetZone(zone)
end
function ZoneManager:SetZone(zone)
if zone == ZoneManager.Zone then
return
end
if runService:IsRunning() then
setZoneInternal(zone)
else
spawn(function()
while not runService:IsRunning() do wait() end
setZoneInternal(zone)
end)
end
end
return ZoneManager