local M=require(script.Parent:WaitForChild("\066\097\115\101\079\099\099\108\117\115\105\111\110"))local Z=setmetatable({},M)Z.__index=Z function Z.new()local U=setmetatable(M.new(),Z)U.focusExtrapolator=TransformExtrapolator.new()return U end function Z.GetOcclusionMode(M)return Enum.DevCameraOcclusionMode.Zoom end function Z.Enable(Z,M)Z.focusExtrapolator:Reset()end function Z.Update(u,M,Z,U,v)local y=CFrame.new(U.p,Z.p)*CFrame.new(0,0,0,-1,0,0,0,1,0,0,0,-1)local A=u.focusExtrapolator:Step(M,y)local C=ZoomController.Update(M,y,A)return y*CFrame.new(0,0,C),U end
--
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
