local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE) local M = SLE.Misc local _G = _G M.ViewportInitialized = false --Viewports function M:SetAllPoints() if InCombatLockdown() or SLE._Compatibility['SunnArt'] or not M.ViewportInitialized or not E.private.sle.viewport.enable then return end M:SetViewport() end function M:SetViewport(event) if SLE._Compatibility['SunnArt'] or not M.ViewportInitialized or not E.private.sle.viewport.enable then return end --compatibility check in the func itself just in case if InCombatLockdown() then --Don't touch stuff in combat M:RegisterEvent("PLAYER_REGEN_ENABLED", M.SetViewport) --Register as M, cause self may be the world frame itself when called from WorldFrame.SetAllPoints/M:SetAllPoints return end if event == "PLAYER_REGEN_ENABLED" then M:UnregisterEvent(event) end --Unreg combat end event, cause we need it only once anyways local scale = E.global.general.UIScale --Get UI scale --Reposition world frame, this actually creating viewport _G.WorldFrame:ClearAllPoints() _G.WorldFrame:SetPoint('TOPLEFT', (M.db.viewport.left * scale), -(M.db.viewport.top * scale)) _G.WorldFrame:SetPoint('BOTTOMRIGHT', -(M.db.viewport.right * scale), (M.db.viewport.bottom * scale)) end function M:Initialize() if not SLE.initialized then return end M.db = E.db.sle.misc --Viewport if SLE._Compatibility['SunnArt'] or not E.private.sle.viewport.enable then return end --do not enable if otherr stuff is there M.ViewportInitialized = true WorldFrame.ORSetAll = WorldFrame.SetAllPoints WorldFrame.SetAllPoints = M.SetAllPoints -- Possible Fix for Cut Scene issues during a raid CinematicFrame:SetScript('OnShow', nil) CinematicFrame:SetScript('OnHide', nil) hooksecurefunc(E, 'PixelScaleChanged', M.SetViewport) function M:ForUpdateAll() M.db = E.db.sle.misc M:SetViewport() end M:RegisterEvent("LOADING_SCREEN_DISABLED", M.SetViewport) M:RegisterEvent("CINEMATIC_STOP", M.SetViewport) end SLE:RegisterModule(M:GetName())