mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
events: scene item select and deselect events
This commit is contained in:
parent
8eeea50ede
commit
ad97d04e37
@ -815,6 +815,8 @@ void WSEvents::OnSourceCreate(void* param, calldata_t* data) {
|
|||||||
signal_handler_connect(sh,
|
signal_handler_connect(sh,
|
||||||
"item_visible", OnSceneItemVisibilityChanged, self);
|
"item_visible", OnSceneItemVisibilityChanged, self);
|
||||||
signal_handler_connect(sh, "item_transform", OnSceneItemTransform, self);
|
signal_handler_connect(sh, "item_transform", OnSceneItemTransform, self);
|
||||||
|
signal_handler_connect(sh, "item_select", OnSceneItemSelected, self);
|
||||||
|
signal_handler_connect(sh, "item_deselect", OnSceneItemDeselected, self);
|
||||||
}
|
}
|
||||||
if (sourceType == OBS_SOURCE_TYPE_TRANSITION) {
|
if (sourceType == OBS_SOURCE_TYPE_TRANSITION) {
|
||||||
signal_handler_connect(sh, "transition_start", OnTransitionBegin, self);
|
signal_handler_connect(sh, "transition_start", OnTransitionBegin, self);
|
||||||
@ -1299,6 +1301,76 @@ void WSEvents::OnSceneItemTransform(void* param, calldata_t* data) {
|
|||||||
instance->broadcastUpdate("SceneItemTransformChanged", fields);
|
instance->broadcastUpdate("SceneItemTransformChanged", fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A scene item is selected.
|
||||||
|
*
|
||||||
|
* @return {String} `sceneName` Name of the scene.
|
||||||
|
* @return {String} `itemName` Name of the item in the scene.
|
||||||
|
* @return {int} `itemId` Name of the item in the scene.
|
||||||
|
*
|
||||||
|
* @api events
|
||||||
|
* @name SceneItemSelected
|
||||||
|
* @category sources
|
||||||
|
* @since 4.6.0
|
||||||
|
*/
|
||||||
|
void WSEvents::OnSceneItemSelected(void* param, calldata_t* data) {
|
||||||
|
auto self = reinterpret_cast<WSEvents*>(param);
|
||||||
|
|
||||||
|
OBSScene scene = calldata_get_pointer<obs_scene_t>(data, "scene");
|
||||||
|
if (!scene) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSceneItem item = calldata_get_pointer<obs_sceneitem_t>(data, "item");
|
||||||
|
if (!item) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSource sceneSource = obs_scene_get_source(scene);
|
||||||
|
OBSSource itemSource = obs_sceneitem_get_source(item);
|
||||||
|
|
||||||
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
|
obs_data_set_string(fields, "sceneName", obs_source_get_name(sceneSource));
|
||||||
|
obs_data_set_string(fields, "itemName", obs_source_get_name(itemSource));
|
||||||
|
obs_data_set_int(fields, "itemId", obs_sceneitem_get_id(item));
|
||||||
|
self->broadcastUpdate("SceneItemSelected", fields);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A scene item is deselected.
|
||||||
|
*
|
||||||
|
* @return {String} `sceneName` Name of the scene.
|
||||||
|
* @return {String} `itemName` Name of the item in the scene.
|
||||||
|
* @return {int} `itemId` Name of the item in the scene.
|
||||||
|
*
|
||||||
|
* @api events
|
||||||
|
* @name SceneItemDeselected
|
||||||
|
* @category sources
|
||||||
|
* @since 4.6.0
|
||||||
|
*/
|
||||||
|
void WSEvents::OnSceneItemDeselected(void* param, calldata_t* data) {
|
||||||
|
auto self = reinterpret_cast<WSEvents*>(param);
|
||||||
|
|
||||||
|
OBSScene scene = calldata_get_pointer<obs_scene_t>(data, "scene");
|
||||||
|
if (!scene) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSceneItem item = calldata_get_pointer<obs_sceneitem_t>(data, "item");
|
||||||
|
if (!item) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OBSSource sceneSource = obs_scene_get_source(scene);
|
||||||
|
OBSSource itemSource = obs_sceneitem_get_source(item);
|
||||||
|
|
||||||
|
OBSDataAutoRelease fields = obs_data_create();
|
||||||
|
obs_data_set_string(fields, "sceneName", obs_source_get_name(sceneSource));
|
||||||
|
obs_data_set_string(fields, "itemName", obs_source_get_name(itemSource));
|
||||||
|
obs_data_set_int(fields, "itemId", obs_sceneitem_get_id(item));
|
||||||
|
self->broadcastUpdate("SceneItemDeselected", fields);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The selected preview scene has changed (only available in Studio Mode).
|
* The selected preview scene has changed (only available in Studio Mode).
|
||||||
*
|
*
|
||||||
|
@ -129,4 +129,6 @@ private:
|
|||||||
static void OnSceneItemDelete(void* param, calldata_t* data);
|
static void OnSceneItemDelete(void* param, calldata_t* data);
|
||||||
static void OnSceneItemVisibilityChanged(void* param, calldata_t* data);
|
static void OnSceneItemVisibilityChanged(void* param, calldata_t* data);
|
||||||
static void OnSceneItemTransform(void* param, calldata_t* data);
|
static void OnSceneItemTransform(void* param, calldata_t* data);
|
||||||
|
static void OnSceneItemSelected(void* param, calldata_t* data);
|
||||||
|
static void OnSceneItemDeselected(void* param, calldata_t* data);
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user