Added update type SceneItemVisibilityChanged

This commit is contained in:
Palakis 2017-03-01 21:41:42 +01:00
parent dcafaedaa8
commit 228708eec4
3 changed files with 38 additions and 0 deletions

View File

@ -14,6 +14,7 @@ The protocol in general is based on the OBS Remote protocol created by Bill Hami
- ["SourceOrderChanged"](#sourceorderchanged)
- ["SceneItemAdded"](#sceneitemadded)
- ["SceneItemRemoved"](#sceneitemremoved)
- ["SceneItemVisibilityChanged"](#sceneitemvisibilitychanged)
- ["SceneCollectionChanged"](#scenecollectionchanged)
- ["SceneCollectionListChanged"](#scenecollectionlistchanged)
- ["SwitchTransition"](#switchtransition)
@ -103,6 +104,14 @@ An item has been removed from the current scene.
---
#### "SceneItemVisibilityChanged"
An item's visibility has been toggled.
- **"scene-name"** (string) : name of the scene
- **"item-name"** (string) : name of the item in **scene-name**
- **"item-visible"** (bool) : new visibility of item **item-name**
---
#### "SceneCollectionChanged"
Triggered when switching to another scene collection or when renaming the current scene collection.

View File

@ -191,12 +191,14 @@ void WSEvents::connectSceneSignals(obs_source_t* scene)
signal_handler_disconnect(scene_handler, "reorder", OnSceneReordered, this);
signal_handler_disconnect(scene_handler, "item_add", OnSceneItemAdd, this);
signal_handler_disconnect(scene_handler, "item_remove", OnSceneItemDelete, this);
signal_handler_disconnect(scene_handler, "item_visible", OnSceneItemVisibilityChanged, this);
}
scene_handler = obs_source_get_signal_handler(scene);
signal_handler_connect(scene_handler, "reorder", OnSceneReordered, this);
signal_handler_connect(scene_handler, "item_add", OnSceneItemAdd, this);
signal_handler_connect(scene_handler, "item_remove", OnSceneItemDelete, this);
signal_handler_connect(scene_handler, "item_visible", OnSceneItemVisibilityChanged, this);
}
void WSEvents::OnSceneChange()
@ -464,5 +466,31 @@ void WSEvents::OnSceneItemDelete(void *param, calldata_t *data)
instance->broadcastUpdate("SceneItemRemoved", fields);
obs_data_release(fields);
}
void WSEvents::OnSceneItemVisibilityChanged(void *param, calldata_t *data)
{
WSEvents* instance = static_cast<WSEvents*>(param);
obs_scene_t* scene = nullptr;
calldata_get_ptr(data, "scene", &scene);
obs_sceneitem_t* scene_item = nullptr;
calldata_get_ptr(data, "item", &scene_item);
bool visible = false;
calldata_get_bool(data, "visible", &visible);
const char* scene_name = obs_source_get_name(obs_scene_get_source(scene));
const char* sceneitem_name = obs_source_get_name(obs_sceneitem_get_source(scene_item));
obs_data_t* fields = obs_data_create();
obs_data_set_string(fields, "scene-name", scene_name);
obs_data_set_string(fields, "item-name", sceneitem_name);
obs_data_set_bool(fields, "item-visible", visible);
instance->broadcastUpdate("SceneItemVisibilityChanged", fields);
obs_data_release(fields);
}

View File

@ -78,6 +78,7 @@ class WSEvents : public QObject
static void OnSceneReordered(void *param, calldata_t *data);
static void OnSceneItemAdd(void *param, calldata_t *data);
static void OnSceneItemDelete(void *param, calldata_t *data);
static void OnSceneItemVisibilityChanged(void *param, calldata_t *data);
};
#endif // WSEVENTS_H