mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Utils: Add stuff to Obs
This commit is contained in:
@ -235,42 +235,32 @@ std::vector<json> Utils::Obs::ListHelper::GetSceneList()
|
|||||||
|
|
||||||
std::vector<json> Utils::Obs::ListHelper::GetSceneItemList(obs_scene_t *scene, bool basic)
|
std::vector<json> Utils::Obs::ListHelper::GetSceneItemList(obs_scene_t *scene, bool basic)
|
||||||
{
|
{
|
||||||
std::vector<json> ret;
|
std::pair<std::vector<json>, bool> enumData;
|
||||||
|
enumData.second = basic;
|
||||||
|
|
||||||
if (basic) {
|
|
||||||
obs_scene_enum_items(scene, [](obs_scene_t* scene, obs_sceneitem_t* sceneItem, void* param) {
|
obs_scene_enum_items(scene, [](obs_scene_t* scene, obs_sceneitem_t* sceneItem, void* param) {
|
||||||
auto ret = reinterpret_cast<std::vector<json>*>(param);
|
auto enumData = reinterpret_cast<std::pair<std::vector<json>, bool>*>(param);
|
||||||
|
|
||||||
json item;
|
json item;
|
||||||
item["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
item["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
||||||
// Should be slightly faster than calling obs_sceneitem_get_order_position()
|
// Should be slightly faster than calling obs_sceneitem_get_order_position()
|
||||||
item["sceneItemIndex"] = ret->size();
|
item["sceneItemIndex"] = enumData->first.size();
|
||||||
|
if (!enumData->second) {
|
||||||
ret->push_back(item);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}, &ret);
|
|
||||||
} else {
|
|
||||||
obs_scene_enum_items(scene, [](obs_scene_t* scene, obs_sceneitem_t* sceneItem, void* param) {
|
|
||||||
auto ret = reinterpret_cast<std::vector<json>*>(param);
|
|
||||||
|
|
||||||
OBSSource itemSource = obs_sceneitem_get_source(sceneItem);
|
OBSSource itemSource = obs_sceneitem_get_source(sceneItem);
|
||||||
|
|
||||||
json item;
|
|
||||||
item["sceneItemId"] = obs_sceneitem_get_id(sceneItem);
|
|
||||||
item["sceneItemIndex"] = ret->size();
|
|
||||||
item["sourceName"] = obs_source_get_name(itemSource);
|
item["sourceName"] = obs_source_get_name(itemSource);
|
||||||
item["sourceType"] = StringHelper::GetSourceTypeString(itemSource);
|
item["sourceType"] = StringHelper::GetSourceTypeString(itemSource);
|
||||||
if (obs_source_get_type(itemSource) == OBS_SOURCE_TYPE_INPUT)
|
if (obs_source_get_type(itemSource) == OBS_SOURCE_TYPE_INPUT)
|
||||||
item["inputKind"] = obs_source_get_id(itemSource);
|
item["inputKind"] = obs_source_get_id(itemSource);
|
||||||
|
else if (obs_source_get_type(itemSource) == OBS_SOURCE_TYPE_SCENE)
|
||||||
ret->push_back(item);
|
item["isGroup"] = obs_source_is_group(itemSource);
|
||||||
|
|
||||||
return true;
|
|
||||||
}, &ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
enumData->first.push_back(item);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}, &enumData);
|
||||||
|
|
||||||
|
return enumData.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<json> Utils::Obs::ListHelper::GetTransitionList()
|
std::vector<json> Utils::Obs::ListHelper::GetTransitionList()
|
||||||
@ -387,7 +377,7 @@ obs_hotkey_t *Utils::Obs::SearchHelper::GetHotkeyByName(std::string name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct CreateSceneItemData {
|
struct CreateSceneItemData {
|
||||||
obs_source_t *input;
|
obs_source_t *source;
|
||||||
bool sceneItemEnabled;
|
bool sceneItemEnabled;
|
||||||
obs_sceneitem_t *sceneItem;
|
obs_sceneitem_t *sceneItem;
|
||||||
};
|
};
|
||||||
@ -395,19 +385,19 @@ struct CreateSceneItemData {
|
|||||||
void CreateSceneItemHelper(void *_data, obs_scene_t *scene)
|
void CreateSceneItemHelper(void *_data, obs_scene_t *scene)
|
||||||
{
|
{
|
||||||
auto *data = reinterpret_cast<CreateSceneItemData*>(_data);
|
auto *data = reinterpret_cast<CreateSceneItemData*>(_data);
|
||||||
data->sceneItem = obs_scene_add(scene, data->input);
|
data->sceneItem = obs_scene_add(scene, data->source);
|
||||||
obs_sceneitem_set_visible(data->sceneItem, data->sceneItemEnabled);
|
obs_sceneitem_set_visible(data->sceneItem, data->sceneItemEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_sceneitem_t *Utils::Obs::ActionHelper::CreateSceneItem(obs_source_t *input, obs_scene_t *scene, bool sceneItemEnabled)
|
obs_sceneitem_t *Utils::Obs::ActionHelper::CreateSceneItem(obs_source_t *source, obs_scene_t *scene, bool sceneItemEnabled)
|
||||||
{
|
{
|
||||||
// Sanity check for valid scene
|
// Sanity check for valid scene
|
||||||
if (!(input && scene))
|
if (!(source && scene))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
// Create data struct and populate for scene item creation
|
// Create data struct and populate for scene item creation
|
||||||
CreateSceneItemData data;
|
CreateSceneItemData data;
|
||||||
data.input = input;
|
data.source = source;
|
||||||
data.sceneItemEnabled = sceneItemEnabled;
|
data.sceneItemEnabled = sceneItemEnabled;
|
||||||
|
|
||||||
// Enter graphics context and create the scene item
|
// Enter graphics context and create the scene item
|
||||||
|
@ -64,7 +64,7 @@ namespace Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
namespace ActionHelper {
|
namespace ActionHelper {
|
||||||
obs_sceneitem_t *CreateSceneItem(obs_source_t *input, obs_scene_t *scene, bool sceneItemEnabled = true);
|
obs_sceneitem_t *CreateSceneItem(obs_source_t *source, obs_scene_t *scene, bool sceneItemEnabled = true);
|
||||||
obs_sceneitem_t *CreateInput(std::string inputName, std::string inputKind, obs_data_t *inputSettings, obs_scene_t *scene, bool sceneItemEnabled = true);
|
obs_sceneitem_t *CreateInput(std::string inputName, std::string inputKind, obs_data_t *inputSettings, obs_scene_t *scene, bool sceneItemEnabled = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user