Add network tab (#149)

The network tab allows you to open a web-socket or connect to web-socket to synchronize the active scene between two or more instances of OBS.
The functionality is mostly based on https://github.com/Palakis/obs-websocket.

An OBS instance running a server will send its currently active scene to all connected clients on scene change.
By default all scene switches will trigger a message to be sent to all clients, but you also have the option to limit sending these messages only when an automated scene change is triggered by the advanced scene switcher.
This commit is contained in:
WarmUpTill
2021-03-24 20:51:22 +01:00
committed by GitHub
parent b0ef1fee71
commit dfccc4b16d
14 changed files with 1044 additions and 7 deletions

View File

@@ -4,7 +4,7 @@
#include "headers/utility.hpp"
#include "headers/version.h"
constexpr auto tab_count = 16;
constexpr auto tab_count = 17;
QMetaObject::Connection inactivePluse;
@@ -329,9 +329,12 @@ int findTabIndex(QTabWidget *tabWidget, int pos)
tabName = "videoTab";
break;
case 14:
tabName = "sceneGroupTab";
tabName = "networkTab";
break;
case 15:
tabName = "sceneGroupTab";
break;
case 16:
tabName = "sceneTriggerTab";
break;
}
@@ -400,6 +403,7 @@ void SwitcherData::loadSettings(obs_data_t *obj)
loadTimeSwitches(obj);
loadAudioSwitches(obj);
loadVideoSwitches(obj);
loadNetworkSettings(obj);
loadSceneTriggers(obj);
loadGeneralSettings(obj);
loadHotkeys(obj);
@@ -425,6 +429,7 @@ void SwitcherData::saveSettings(obs_data_t *obj)
saveTimeSwitches(obj);
saveAudioSwitches(obj);
saveVideoSwitches(obj);
saveNetworkSwitches(obj);
saveSceneTriggers(obj);
saveGeneralSettings(obj);
saveHotkeys(obj);
@@ -497,8 +502,9 @@ void SwitcherData::saveGeneralSettings(obs_data_t *obj)
obs_data_set_int(obj, "sequenceTabPos", switcher->tabOrder[11]);
obs_data_set_int(obj, "audioTabPos", switcher->tabOrder[12]);
obs_data_set_int(obj, "videoTabPos", switcher->tabOrder[13]);
obs_data_set_int(obj, "sceneGroupTabPos", switcher->tabOrder[14]);
obs_data_set_int(obj, "triggerTabPos", switcher->tabOrder[15]);
obs_data_set_int(obj, "networkTabPos", switcher->tabOrder[14]);
obs_data_set_int(obj, "sceneGroupTabPos", switcher->tabOrder[15]);
obs_data_set_int(obj, "triggerTabPos", switcher->tabOrder[16]);
}
void SwitcherData::loadGeneralSettings(obs_data_t *obj)
@@ -594,8 +600,9 @@ void SwitcherData::loadGeneralSettings(obs_data_t *obj)
obs_data_set_default_int(obj, "sequenceTabPos", 11);
obs_data_set_default_int(obj, "audioTabPos", 12);
obs_data_set_default_int(obj, "videoTabPos", 13);
obs_data_set_default_int(obj, "sceneGroupTabPos", 14);
obs_data_set_default_int(obj, "triggerTabPos", 15);
obs_data_set_default_int(obj, "networkTabPos", 14);
obs_data_set_default_int(obj, "sceneGroupTabPos", 15);
obs_data_set_default_int(obj, "triggerTabPos", 16);
switcher->tabOrder.emplace_back(
(int)(obs_data_get_int(obj, "generalTabPos")));
@@ -625,6 +632,8 @@ void SwitcherData::loadGeneralSettings(obs_data_t *obj)
(int)(obs_data_get_int(obj, "audioTabPos")));
switcher->tabOrder.emplace_back(
(int)(obs_data_get_int(obj, "videoTabPos")));
switcher->tabOrder.emplace_back(
(int)(obs_data_get_int(obj, "networkTabPos")));
switcher->tabOrder.emplace_back(
(int)(obs_data_get_int(obj, "sceneGroupTabPos")));
switcher->tabOrder.emplace_back(