mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
added pause scene option
This commit is contained in:
parent
9cd78a403c
commit
67f0fa3adc
19
settings.cpp
19
settings.cpp
|
|
@ -22,6 +22,7 @@ void Settings::load() {
|
|||
//reset the settings
|
||||
settings = map<string, Data>();
|
||||
sceneRoundTrip = vector<string>();
|
||||
pauseScenes = vector<string>();
|
||||
//read the settings file
|
||||
vector<string> settingsElements;
|
||||
ifstream infile(settingsFilePath);
|
||||
|
|
@ -53,7 +54,6 @@ void Settings::load() {
|
|||
numValues = 0;
|
||||
//find Scene Round Trip
|
||||
if (temp.find("Scene Round Trip") != temp.npos) {
|
||||
|
||||
//discard the first value ("Scene Round Trip")
|
||||
getline(lineStream, value, ',');
|
||||
while (lineStream.good()) {
|
||||
|
|
@ -69,6 +69,19 @@ void Settings::load() {
|
|||
sceneRoundTrip.push_back("");
|
||||
}
|
||||
}
|
||||
else if (temp.find("Pause Scene Names") != temp.npos) {
|
||||
//discard the first value ("Pause Scene Names")
|
||||
getline(lineStream, value, ',');
|
||||
while (lineStream.good()) {
|
||||
//Scene Round Trip,TriggerSceneHere,DelayHere,NextSceneHere,DelayHere,AnotherSceneHere,DelayHere,...
|
||||
getline(lineStream, value, ',');
|
||||
pauseScenes.push_back(value);
|
||||
}
|
||||
//remove trailing /" of last value
|
||||
if (pauseScenes.size() > 0) {
|
||||
pauseScenes.back().pop_back();
|
||||
}
|
||||
}
|
||||
//find values for Scene switching
|
||||
else
|
||||
{
|
||||
|
|
@ -120,3 +133,7 @@ vector<string> Settings::getSceneRoundTrip(){
|
|||
return sceneRoundTrip;
|
||||
}
|
||||
|
||||
vector<string> Settings::getPauseScenes(){
|
||||
return pauseScenes;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
#include <map>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <obs-module.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
|
@ -12,16 +11,18 @@ struct Data {
|
|||
};
|
||||
|
||||
class Settings {
|
||||
vector<string> sceneRoundTrip;
|
||||
map<string, Data> settings;
|
||||
bool startMessageDisable = false;
|
||||
public:
|
||||
void load();
|
||||
bool getStartMessageDisable();
|
||||
map<string, Data> getMap();
|
||||
vector<string> getSceneRoundTrip();
|
||||
vector<string> getPauseScenes();
|
||||
string getSettingsFilePath();
|
||||
void setSettingsFilePath(string path);
|
||||
private:
|
||||
string settingsFilePath = "";
|
||||
map<string, Data> settings;
|
||||
vector<string> sceneRoundTrip;
|
||||
vector<string>pauseScenes;
|
||||
bool startMessageDisable = false;
|
||||
};
|
||||
|
|
|
|||
16
switcher.cpp
16
switcher.cpp
|
|
@ -23,11 +23,21 @@ void Switcher::switcherThreadFunc() {
|
|||
string windowname = "";
|
||||
string sceneName = "";
|
||||
bool checkFullscreen = false;
|
||||
bool pauseSwitching = false;
|
||||
while (isRunning) {
|
||||
//get Scene Name
|
||||
obs_source_t * transitionUsed = obs_get_output_source(0);
|
||||
obs_source_t * sceneUsed = obs_transition_get_active_source(transitionUsed);
|
||||
const char *sceneUsedName = obs_source_get_name(sceneUsed);
|
||||
//check if scene switching should be paused
|
||||
if ((sceneUsedName) && find(pauseScenes.begin(), pauseScenes.end(), string(sceneUsedName)) != pauseScenes.end()) {
|
||||
pauseSwitching = true;
|
||||
}
|
||||
else {
|
||||
pauseSwitching = false;
|
||||
}
|
||||
//are we in pause mode?
|
||||
if (!pauseSwitching) {
|
||||
//check if a Scene Round Trip should be started
|
||||
if ((sceneUsedName) && strcmp(sceneUsedName, sceneRoundTrip.front().c_str()) == 0) {
|
||||
sceneRoundTripActive = true;
|
||||
|
|
@ -112,6 +122,7 @@ void Switcher::switcherThreadFunc() {
|
|||
obs_source_release(transitionUsed);
|
||||
}
|
||||
}
|
||||
}
|
||||
//sleep for a bit
|
||||
this_thread::sleep_for(chrono::milliseconds(1000));
|
||||
}
|
||||
|
|
@ -123,6 +134,7 @@ void Switcher::firstLoad() {
|
|||
settings.load();
|
||||
settingsMap = settings.getMap();
|
||||
sceneRoundTrip = settings.getSceneRoundTrip();
|
||||
pauseScenes = settings.getPauseScenes();
|
||||
if (!settings.getStartMessageDisable()) {
|
||||
string message = "The following settings were found for Scene Switcher:\n";
|
||||
for (auto it = settingsMap.cbegin(); it != settingsMap.cend(); ++it)
|
||||
|
|
@ -140,6 +152,7 @@ void Switcher::firstLoad() {
|
|||
settings.load();
|
||||
settingsMap = settings.getMap();
|
||||
sceneRoundTrip = settings.getSceneRoundTrip();
|
||||
pauseScenes = settings.getPauseScenes();
|
||||
if (!settings.getStartMessageDisable()) {
|
||||
string message = "The following settings were found for Scene Switcher:\n";
|
||||
for (auto it = settingsMap.cbegin(); it != settingsMap.cend(); ++it)
|
||||
|
|
@ -172,8 +185,9 @@ void Switcher::firstLoad() {
|
|||
//load the settings needed to start the thread
|
||||
void Switcher::load() {
|
||||
settings.load();
|
||||
sceneRoundTrip = settings.getSceneRoundTrip();
|
||||
settingsMap = settings.getMap();
|
||||
sceneRoundTrip = settings.getSceneRoundTrip();
|
||||
pauseScenes = settings.getPauseScenes();
|
||||
}
|
||||
|
||||
//start thread
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ private:
|
|||
Settings settings;
|
||||
map<string, Data> settingsMap;
|
||||
vector<string> sceneRoundTrip;
|
||||
vector<string> pauseScenes;
|
||||
void switcherThreadFunc();
|
||||
bool isWindowFullscreen();
|
||||
string GetActiveWindowTitle();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user