function CameraModule.Update(W,p)if W.activeCameraController then W.activeCameraController:UpdateMouseBehavior()local S,a=W.activeCameraController:Update(p)W.activeCameraController:ApplyVRTransform()if W.activeOcclusionModule then S,a=W.activeOcclusionModule:Update(p,S,a)end game.Workspace.CurrentCamera.CFrame=S game.Workspace.CurrentCamera.Focus=a if W.activeTransparencyController then W.activeTransparencyController:Update()end if CameraInput.getInputEnabled()then CameraInput.resetInputForFrameEnd()end end end

function CameraModule:Update(dt)
	if self.activeCameraController then
		self.activeCameraController:UpdateMouseBehavior()

		local newCameraCFrame, newCameraFocus = self.activeCameraController:Update(dt)
		self.activeCameraController:ApplyVRTransform()
		if self.activeOcclusionModule then
			newCameraCFrame, newCameraFocus = self.activeOcclusionModule:Update(dt, newCameraCFrame, newCameraFocus)
		end

		-- Here is where the new CFrame and Focus are set for this render frame
		game.Workspace.CurrentCamera.CFrame = newCameraCFrame
		game.Workspace.CurrentCamera.Focus = newCameraFocus

		-- Update to character local transparency as needed based on camera-to-subject distance
		if self.activeTransparencyController then
			self.activeTransparencyController:Update()
		end

		if CameraInput.getInputEnabled() then
			CameraInput.resetInputForFrameEnd()
		end
	end
end
