mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
Moved some repeated code to utils, added source_name to other commands
This commit is contained in:
parent
f8e1c454d9
commit
a527f343cd
12
Utils.cpp
12
Utils.cpp
@ -147,6 +147,18 @@ obs_source_t* Utils::GetTransitionFromName(const char *search_name) {
|
||||
return found_transition;
|
||||
}
|
||||
|
||||
obs_source_t* Utils::GetSceneFromNameOrCurrent(const char *scene_name) {
|
||||
obs_source_t* scene;
|
||||
if (!scene_name || !strlen(scene_name)) {
|
||||
scene = obs_frontend_get_current_scene();
|
||||
}
|
||||
else {
|
||||
scene = obs_get_source_by_name(scene_name);
|
||||
}
|
||||
|
||||
return scene;
|
||||
}
|
||||
|
||||
obs_data_array_t* Utils::GetScenes() {
|
||||
obs_frontend_source_list sceneList = {};
|
||||
obs_frontend_get_scenes(&sceneList);
|
||||
|
1
Utils.h
1
Utils.h
@ -29,6 +29,7 @@ class Utils
|
||||
static obs_data_t* GetSceneItemData(obs_scene_item *item);
|
||||
static obs_sceneitem_t* GetSceneItemFromName(obs_source_t *source, const char *name);
|
||||
static obs_source_t* GetTransitionFromName(const char *search_name);
|
||||
static obs_source_t* GetSceneFromNameOrCurrent(const char *scene_name);
|
||||
|
||||
static obs_data_array_t* GetScenes();
|
||||
static obs_data_t* GetSceneData(obs_source *source);
|
||||
|
@ -262,15 +262,8 @@ void WSRequestHandler::HandleSetSourceRender(WSRequestHandler *owner)
|
||||
return;
|
||||
}
|
||||
|
||||
obs_source_t* scene;
|
||||
const char *sceneName = obs_data_get_string(owner->_requestData, "scene-name");
|
||||
if (!sceneName || !strlen(sceneName)) {
|
||||
scene = obs_frontend_get_current_scene();
|
||||
}
|
||||
else {
|
||||
scene = obs_get_source_by_name(sceneName);
|
||||
}
|
||||
|
||||
obs_source_t *scene = Utils::GetSceneFromNameOrCurrent(sceneName);
|
||||
if (scene == NULL) {
|
||||
owner->SendErrorResponse("requested scene doesn't exist");
|
||||
return;
|
||||
@ -492,12 +485,18 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
|
||||
return;
|
||||
}
|
||||
|
||||
const char *scene_name = obs_data_get_string(owner->_requestData, "scene-name");
|
||||
obs_source_t *scene = Utils::GetSceneFromNameOrCurrent(scene_name);
|
||||
if (scene == NULL) {
|
||||
owner->SendErrorResponse("requested scene could not be found");
|
||||
return;
|
||||
}
|
||||
|
||||
vec2 item_position = {0};
|
||||
item_position.x = obs_data_get_double(owner->_requestData, "x");
|
||||
item_position.y = obs_data_get_double(owner->_requestData, "y");
|
||||
|
||||
obs_source_t* current_scene = obs_frontend_get_current_scene();
|
||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
|
||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(scene, item_name);
|
||||
|
||||
if (scene_item)
|
||||
{
|
||||
@ -511,7 +510,7 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
|
||||
owner->SendErrorResponse("specified scene item doesn't exist");
|
||||
}
|
||||
|
||||
obs_source_release(current_scene);
|
||||
obs_source_release(scene);
|
||||
}
|
||||
|
||||
void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
||||
@ -523,14 +522,20 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
||||
return;
|
||||
}
|
||||
|
||||
const char *scene_name = obs_data_get_string(owner->_requestData, "scene-name");
|
||||
obs_source_t* scene = Utils::GetSceneFromNameOrCurrent(scene_name);
|
||||
if (scene == NULL) {
|
||||
owner->SendErrorResponse("requested scene doesn't exist");
|
||||
return;
|
||||
}
|
||||
|
||||
vec2 scale;
|
||||
scale.x = obs_data_get_double(owner->_requestData, "x-scale");
|
||||
scale.y = obs_data_get_double(owner->_requestData, "y-scale");
|
||||
|
||||
float rotation = obs_data_get_double(owner->_requestData, "rotation");
|
||||
|
||||
obs_source_t* current_scene = obs_frontend_get_current_scene();
|
||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
|
||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(scene, item_name);
|
||||
|
||||
if (scene_item)
|
||||
{
|
||||
@ -545,7 +550,7 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
||||
owner->SendErrorResponse("specified scene item doesn't exist");
|
||||
}
|
||||
|
||||
obs_source_release(current_scene);
|
||||
obs_source_release(scene);
|
||||
}
|
||||
|
||||
void WSRequestHandler::HandleSetCurrentSceneCollection(WSRequestHandler *owner)
|
||||
@ -629,4 +634,4 @@ void WSRequestHandler::HandleListProfiles(WSRequestHandler *owner)
|
||||
void WSRequestHandler::ErrNotImplemented(WSRequestHandler *owner)
|
||||
{
|
||||
owner->SendErrorResponse("not implemented");
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user