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;
|
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_data_array_t* Utils::GetScenes() {
|
||||||
obs_frontend_source_list sceneList = {};
|
obs_frontend_source_list sceneList = {};
|
||||||
obs_frontend_get_scenes(&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_data_t* GetSceneItemData(obs_scene_item *item);
|
||||||
static obs_sceneitem_t* GetSceneItemFromName(obs_source_t *source, const char *name);
|
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* GetTransitionFromName(const char *search_name);
|
||||||
|
static obs_source_t* GetSceneFromNameOrCurrent(const char *scene_name);
|
||||||
|
|
||||||
static obs_data_array_t* GetScenes();
|
static obs_data_array_t* GetScenes();
|
||||||
static obs_data_t* GetSceneData(obs_source *source);
|
static obs_data_t* GetSceneData(obs_source *source);
|
||||||
|
@ -262,15 +262,8 @@ void WSRequestHandler::HandleSetSourceRender(WSRequestHandler *owner)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_source_t* scene;
|
|
||||||
const char *sceneName = obs_data_get_string(owner->_requestData, "scene-name");
|
const char *sceneName = obs_data_get_string(owner->_requestData, "scene-name");
|
||||||
if (!sceneName || !strlen(sceneName)) {
|
obs_source_t *scene = Utils::GetSceneFromNameOrCurrent(sceneName);
|
||||||
scene = obs_frontend_get_current_scene();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
scene = obs_get_source_by_name(sceneName);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (scene == NULL) {
|
if (scene == NULL) {
|
||||||
owner->SendErrorResponse("requested scene doesn't exist");
|
owner->SendErrorResponse("requested scene doesn't exist");
|
||||||
return;
|
return;
|
||||||
@ -492,12 +485,18 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
|
|||||||
return;
|
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};
|
vec2 item_position = {0};
|
||||||
item_position.x = obs_data_get_double(owner->_requestData, "x");
|
item_position.x = obs_data_get_double(owner->_requestData, "x");
|
||||||
item_position.y = obs_data_get_double(owner->_requestData, "y");
|
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(scene, item_name);
|
||||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
|
|
||||||
|
|
||||||
if (scene_item)
|
if (scene_item)
|
||||||
{
|
{
|
||||||
@ -511,7 +510,7 @@ void WSRequestHandler::HandleSetSceneItemPosition(WSRequestHandler *owner)
|
|||||||
owner->SendErrorResponse("specified scene item doesn't exist");
|
owner->SendErrorResponse("specified scene item doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_source_release(current_scene);
|
obs_source_release(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
||||||
@ -523,14 +522,20 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
|||||||
return;
|
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;
|
vec2 scale;
|
||||||
scale.x = obs_data_get_double(owner->_requestData, "x-scale");
|
scale.x = obs_data_get_double(owner->_requestData, "x-scale");
|
||||||
scale.y = obs_data_get_double(owner->_requestData, "y-scale");
|
scale.y = obs_data_get_double(owner->_requestData, "y-scale");
|
||||||
|
|
||||||
float rotation = obs_data_get_double(owner->_requestData, "rotation");
|
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(scene, item_name);
|
||||||
obs_sceneitem_t *scene_item = Utils::GetSceneItemFromName(current_scene, item_name);
|
|
||||||
|
|
||||||
if (scene_item)
|
if (scene_item)
|
||||||
{
|
{
|
||||||
@ -545,7 +550,7 @@ void WSRequestHandler::HandleSetSceneItemTransform(WSRequestHandler *owner)
|
|||||||
owner->SendErrorResponse("specified scene item doesn't exist");
|
owner->SendErrorResponse("specified scene item doesn't exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
obs_source_release(current_scene);
|
obs_source_release(scene);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WSRequestHandler::HandleSetCurrentSceneCollection(WSRequestHandler *owner)
|
void WSRequestHandler::HandleSetCurrentSceneCollection(WSRequestHandler *owner)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user