mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Merge pull request #628 from gdhgdhgdh/sceneitems-by-id
Request: add ID support for SetSceneItemRender
This commit is contained in:
@ -393,7 +393,8 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) {
|
|||||||
* Show or hide a specified source item in a specified scene.
|
* Show or hide a specified source item in a specified scene.
|
||||||
*
|
*
|
||||||
* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the currently active scene.
|
* @param {String (optional)} `scene-name` Name of the scene the scene item belongs to. Defaults to the currently active scene.
|
||||||
* @param {String} `source` Scene Item name.
|
* @param {String (optional)} `source` Scene Item name.
|
||||||
|
* @param {int (optional)} `item` Scene Item id
|
||||||
* @param {boolean} `render` true = shown ; false = hidden
|
* @param {boolean} `render` true = shown ; false = hidden
|
||||||
*
|
*
|
||||||
* @api requests
|
* @api requests
|
||||||
@ -402,16 +403,17 @@ RpcResponse WSRequestHandler::ResetSceneItem(const RpcRequest& request) {
|
|||||||
* @since 0.3
|
* @since 0.3
|
||||||
*/
|
*/
|
||||||
RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) {
|
RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) {
|
||||||
if (!request.hasField("source") ||
|
bool doesntHaveSourceOrItemParameter = !(request.hasField("source") || request.hasField("item"));
|
||||||
!request.hasField("render"))
|
if (!request.hasField("render") || doesntHaveSourceOrItemParameter)
|
||||||
{
|
{
|
||||||
return request.failed("missing request parameters");
|
return request.failed("missing request parameters");
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* itemName = obs_data_get_string(request.parameters(), "source");
|
const char* itemName = obs_data_get_string(request.parameters(), "source");
|
||||||
|
int64_t itemId = obs_data_get_int(request.parameters(), "item");
|
||||||
bool isVisible = obs_data_get_bool(request.parameters(), "render");
|
bool isVisible = obs_data_get_bool(request.parameters(), "render");
|
||||||
|
|
||||||
if (!itemName) {
|
if (!itemName && !itemId) {
|
||||||
return request.failed("invalid request parameters");
|
return request.failed("invalid request parameters");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,12 +423,19 @@ RpcResponse WSRequestHandler::SetSceneItemRender(const RpcRequest& request) {
|
|||||||
return request.failed("requested scene doesn't exist");
|
return request.failed("requested scene doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
OBSSceneItemAutoRelease sceneItem =
|
OBSSceneItemAutoRelease sceneItem;
|
||||||
Utils::GetSceneItemFromName(scene, itemName);
|
|
||||||
if (!sceneItem) {
|
|
||||||
return request.failed("specified scene item doesn't exist");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (strlen(itemName)) {
|
||||||
|
sceneItem = Utils::GetSceneItemFromName(scene, itemName);
|
||||||
|
if (!sceneItem) {
|
||||||
|
return request.failed("specified scene item name doesn't exist");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sceneItem = Utils::GetSceneItemFromId(scene, itemId);
|
||||||
|
if (!sceneItem) {
|
||||||
|
return request.failed("specified scene item ID doesn't exist");
|
||||||
|
}
|
||||||
|
}
|
||||||
obs_sceneitem_set_visible(sceneItem, isVisible);
|
obs_sceneitem_set_visible(sceneItem, isVisible);
|
||||||
return request.success();
|
return request.success();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user