diff --git a/src/requesthandler/RequestHandler.cpp b/src/requesthandler/RequestHandler.cpp index 1a4f04dc..51e812fb 100644 --- a/src/requesthandler/RequestHandler.cpp +++ b/src/requesthandler/RequestHandler.cpp @@ -69,6 +69,7 @@ const std::map RequestHandler::_handlerMap // Scene Items {"GetSceneItemList", &RequestHandler::GetSceneItemList}, {"GetGroupSceneItemList", &RequestHandler::GetGroupSceneItemList}, + {"GetSceneItemId", &RequestHandler::GetSceneItemId}, {"CreateSceneItem", &RequestHandler::CreateSceneItem}, {"RemoveSceneItem", &RequestHandler::RemoveSceneItem}, {"GetSceneItemTransform", &RequestHandler::GetSceneItemTransform}, diff --git a/src/requesthandler/RequestHandler.h b/src/requesthandler/RequestHandler.h index e6ba55c9..e4326e70 100644 --- a/src/requesthandler/RequestHandler.h +++ b/src/requesthandler/RequestHandler.h @@ -90,6 +90,7 @@ class RequestHandler { // Scene Items RequestResult GetSceneItemList(const Request&); RequestResult GetGroupSceneItemList(const Request&); + RequestResult GetSceneItemId(const Request&); RequestResult CreateSceneItem(const Request&); RequestResult RemoveSceneItem(const Request&); RequestResult GetSceneItemTransform(const Request&); diff --git a/src/requesthandler/RequestHandler_SceneItems.cpp b/src/requesthandler/RequestHandler_SceneItems.cpp index dbc34988..b1d69795 100644 --- a/src/requesthandler/RequestHandler_SceneItems.cpp +++ b/src/requesthandler/RequestHandler_SceneItems.cpp @@ -28,6 +28,28 @@ RequestResult RequestHandler::GetGroupSceneItemList(const Request& request) return RequestResult::Success(responseData); } +RequestResult RequestHandler::GetSceneItemId(const Request& request) +{ + RequestStatus::RequestStatus statusCode; + std::string comment; + OBSSourceAutoRelease sceneSource = request.ValidateScene("sceneName", statusCode, comment); + if (!(sceneSource && request.ValidateString("sourceName", statusCode, comment))) + return RequestResult::Error(statusCode, comment); + + OBSScene scene = obs_scene_from_source(sceneSource); + + std::string sourceName = request.RequestData["sourceName"]; + + obs_sceneitem_t *item = Utils::Obs::SearchHelper::GetSceneItemByName(scene, sourceName); + if (!item) + return RequestResult::Error(RequestStatus::ResourceNotFound, "No scene items were found in the specified scene by that name."); + + json responseData; + responseData["sceneItemId"] = obs_sceneitem_get_id(item); + + return RequestResult::Success(responseData); +} + RequestResult RequestHandler::CreateSceneItem(const Request& request) { RequestStatus::RequestStatus statusCode;