#include #include "Utils.h" #include "WSRequestHandler.h" /** * Switch to the specified scene. * * @param {String} `scene-name` Name of the scene to switch to. * * @api requests * @name SetCurrentScene * @category scenes * @since 0.3 */ void WSRequestHandler::HandleSetCurrentScene(WSRequestHandler* req) { if (!req->hasField("scene-name")) { req->SendErrorResponse("missing request parameters"); return; } const char* sceneName = obs_data_get_string(req->data, "scene-name"); OBSSourceAutoRelease source = obs_get_source_by_name(sceneName); if (source) { obs_frontend_set_current_scene(source); req->SendOKResponse(); } else { req->SendErrorResponse("requested scene does not exist"); } } /** * Get the current scene's name and source items. * * @return {String} `name` Name of the currently active scene. * @return {Source|Array} `sources` Ordered list of the current scene's source items. * * @api requests * @name GetCurrentScene * @category scenes * @since 0.3 */ void WSRequestHandler::HandleGetCurrentScene(WSRequestHandler* req) { OBSSourceAutoRelease currentScene = obs_frontend_get_current_scene(); OBSDataArrayAutoRelease sceneItems = Utils::GetSceneItems(currentScene); OBSDataAutoRelease data = obs_data_create(); obs_data_set_string(data, "name", obs_source_get_name(currentScene)); obs_data_set_array(data, "sources", sceneItems); req->SendOKResponse(data); } /** * Get a list of scenes in the currently active profile. * * @return {String} `current-scene` Name of the currently active scene. * @return {Scene|Array} `scenes` Ordered list of the current profile's scenes (See `[GetCurrentScene](#getcurrentscene)` for more information). * * @api requests * @name GetSceneList * @category scenes * @since 0.3 */ void WSRequestHandler::HandleGetSceneList(WSRequestHandler* req) { OBSSourceAutoRelease currentScene = obs_frontend_get_current_scene(); OBSDataArrayAutoRelease scenes = Utils::GetScenes(); OBSDataAutoRelease data = obs_data_create(); obs_data_set_string(data, "current-scene", obs_source_get_name(currentScene)); obs_data_set_array(data, "scenes", scenes); req->SendOKResponse(data); }