local G=require(script.Parent:WaitForChild("\066\097\115\101\079\099\099\108\117\115\105\111\110"))local w=setmetatable({},G)w.__index=w function w.new()local E=setmetatable(G.new(),w)E.char=nil E.humanoidRootPart=nil E.torsoPart=nil E.headPart=nil E.childAddedConn=nil E.childRemovedConn=nil E.behaviors={}E.behaviors[MODE.LIMBS]=E.LimbBehavior E.behaviors[MODE.MOVEMENT]=E.MoveBehavior E.behaviors[MODE.CORNERS]=E.CornerBehavior E.behaviors[MODE.CIRCLE1]=E.CircleBehavior E.behaviors[MODE.CIRCLE2]=E.CircleBehavior E.behaviors[MODE.LIMBMOVE]=E.LimbMoveBehavior E.behaviors[MODE.SMART_CIRCLE]=E.SmartCircleBehavior E.behaviors[MODE.CHAR_OUTLINE]=E.CharacterOutlineBehavior E.mode=MODE.SMART_CIRCLE E.behaviorFunction=E.SmartCircleBehavior E.savedHits={}E.trackedLimbs={}E.camera=game.Workspace.CurrentCamera E.enabled=false return E end function w.Enable(w,G)w.enabled=G if not G then w:Cleanup()end end function w.GetOcclusionMode(G)return Enum.DevCameraOcclusionMode.Invisicam end
--[[ The Module ]]
--
local BaseOcclusion = require(script.Parent:WaitForChild("BaseOcclusion"))
local Invisicam = setmetatable({}, BaseOcclusion)
Invisicam.__index = Invisicam

function Invisicam.new()
	local self = setmetatable(BaseOcclusion.new(), Invisicam)

	self.char = nil
	self.humanoidRootPart = nil
	self.torsoPart = nil
	self.headPart = nil

	self.childAddedConn = nil
	self.childRemovedConn = nil

	self.behaviors = {} -- Map of modes to behavior fns
	self.behaviors[MODE.LIMBS] = self.LimbBehavior
	self.behaviors[MODE.MOVEMENT] = self.MoveBehavior
	self.behaviors[MODE.CORNERS] = self.CornerBehavior
	self.behaviors[MODE.CIRCLE1] = self.CircleBehavior
	self.behaviors[MODE.CIRCLE2] = self.CircleBehavior
	self.behaviors[MODE.LIMBMOVE] = self.LimbMoveBehavior
	self.behaviors[MODE.SMART_CIRCLE] = self.SmartCircleBehavior
	self.behaviors[MODE.CHAR_OUTLINE] = self.CharacterOutlineBehavior

	self.mode = MODE.SMART_CIRCLE
	self.behaviorFunction = self.SmartCircleBehavior

	self.savedHits = {} -- Objects currently being faded in/out
	self.trackedLimbs = {} -- Used in limb-tracking casting modes

	self.camera = game.Workspace.CurrentCamera

	self.enabled = false
	return self
end

function Invisicam:Enable(enable)
	self.enabled = enable

	if not enable then
		self:Cleanup()
	end
end

function Invisicam:GetOcclusionMode()
	return Enum.DevCameraOcclusionMode.Invisicam
end
