obs = obslua
pause_scene = ""

function on_event(event)
	if event == obs.OBS_FRONTEND_EVENT_SCENE_CHANGED then
		local scene = obs.obs_frontend_get_current_scene()
		local scene_name = obs.obs_source_get_name(scene)
		if pause_scene == scene_name then
			obs.obs_frontend_recording_pause(true)
		else
			obs.obs_frontend_recording_pause(false)
		end

		obs.obs_source_release(scene);
	end
end

function script_properties()
	local props = obs.obs_properties_create()

	local p = obs.obs_properties_add_list(props, "pause_scene", "Pause Scene", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING)
	local scenes = obs.obs_frontend_get_scenes()
	if scenes ~= nil then
		for _, scene in ipairs(scenes) do
			local name = obs.obs_source_get_name(scene);
			obs.obs_property_list_add_string(p, name, name)
		end
	end
	obs.source_list_release(scenes)

	return props
end

function script_description()
	return "Adds the ability to pause recording when switching to a specific scene"
end

function script_update(settings)
	pause_scene = obs.obs_data_get_string(settings, "pause_scene")
end

function script_load(settings)
	obs.obs_frontend_add_event_callback(on_event)
end