local E=require(script.Parent:WaitForChild("\066\097\115\101\079\099\099\108\117\115\105\111\110"))local u=setmetatable({},E)u.__index=u function u.new()local z=setmetatable(E.new(),u)z.focusExtrapolator=TransformExtrapolator.new()return z end function u.GetOcclusionMode(E)return Enum.DevCameraOcclusionMode.Zoom end function u.Enable(u,E)u.focusExtrapolator:Reset()end function u.Update(G,E,u,z,o)local r=CFrame.new(z.p,u.p)*CFrame.new(0,0,0,-1,0,0,0,1,0,0,0,-1)local f=G.focusExtrapolator:Step(E,r)local v=ZoomController.Update(E,r,f)return r*CFrame.new(0,0,v),z end
--[[ The Module ]]
--
local BaseOcclusion = require(script.Parent:WaitForChild("BaseOcclusion"))
local Poppercam = setmetatable({}, BaseOcclusion)
Poppercam.__index = Poppercam

function Poppercam.new()
	local self = setmetatable(BaseOcclusion.new(), Poppercam)
	self.focusExtrapolator = TransformExtrapolator.new()
	return self
end

function Poppercam:GetOcclusionMode()
	return Enum.DevCameraOcclusionMode.Zoom
end

function Poppercam:Enable(enable)
	self.focusExtrapolator:Reset()
end

function Poppercam:Update(renderDt, desiredCameraCFrame, desiredCameraFocus, cameraController)
	local rotatedFocus = CFrame.new(desiredCameraFocus.p, desiredCameraCFrame.p)
		* CFrame.new(0, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1)
	local extrapolation = self.focusExtrapolator:Step(renderDt, rotatedFocus)
	local zoom = ZoomController.Update(renderDt, rotatedFocus, extrapolation)
	return rotatedFocus * CFrame.new(0, 0, zoom), desiredCameraFocus
end
