local N local K;(camera:GetPropertyChangedSignal("\067\097\109\101\114\097\083\117\098\106\101\099\116")):Connect(function()local N=camera.CameraSubject if N:IsA("\072\117\109\097\110\111\105\100")then K=N.RootPart elseif N:IsA("\066\097\115\101\080\097\114\116")then K=N else K=nil end end)local function o(K)return getTotalTransparency(K)<.25 and(K.CanCollide and(N~=(K:GetRootPart()or K)and not K:IsA("\084\114\117\115\115\080\097\114\116")))end


local subjectRoot
local subjectPart

camera:GetPropertyChangedSignal("CameraSubject"):Connect(function()
	local subject = camera.CameraSubject
	if subject:IsA("Humanoid") then
		subjectPart = subject.RootPart
	elseif subject:IsA("BasePart") then
		subjectPart = subject
	else
		subjectPart = nil
	end
end)

local function canOcclude(part)
	-- Occluders must be:
	-- 1. Opaque
	-- 2. Interactable
	-- 3. Not in the same assembly as the subject

	return
		getTotalTransparency(part) < 0.25 and
		part.CanCollide and
		subjectRoot ~= (part:GetRootPart() or part) and
		not part:IsA("TrussPart")
end
