Enable getting variable values from scene condition

This commit is contained in:
WarmUpTill 2023-01-07 22:23:30 +01:00 committed by WarmUpTill
parent 5c7e0f292f
commit df9dc1e002
2 changed files with 10 additions and 1 deletions

View File

@ -53,24 +53,33 @@ bool MacroConditionScene::CheckCondition()
auto current = obs_frontend_get_current_scene();
auto weak = obs_source_get_weak_source(current);
bool match = weak == _scene.GetScene(false);
SetVariableValue(obs_source_get_name(current));
obs_weak_source_release(weak);
obs_source_release(current);
return match;
}
SetVariableValue(GetWeakSourceName(switcher->currentScene));
return switcher->currentScene == _scene.GetScene(false);
case Type::PREVIOUS:
if (switcher->anySceneTransitionStarted() &&
_useTransitionTargetScene) {
SetVariableValue(
GetWeakSourceName(switcher->currentScene));
return switcher->currentScene == _scene.GetScene(false);
}
SetVariableValue(GetWeakSourceName(switcher->previousScene));
return switcher->previousScene == _scene.GetScene(false);
case Type::CHANGED:
SetVariableValue(GetWeakSourceName(switcher->currentScene));
return sceneChanged;
case Type::NOT_CHANGED:
SetVariableValue(GetWeakSourceName(switcher->currentScene));
return !sceneChanged;
case Type::CURRENT_PATTERN:
SetVariableValue(GetWeakSourceName(switcher->currentScene));
return sceneNameMatchesRegex(switcher->currentScene, _pattern);
case Type::PREVIOUS_PATTERN:
SetVariableValue(GetWeakSourceName(switcher->previousScene));
return sceneNameMatchesRegex(switcher->previousScene, _pattern);
}

View File

@ -9,7 +9,7 @@
class MacroConditionScene : public MacroCondition {
public:
MacroConditionScene(Macro *m) : MacroCondition(m) {}
MacroConditionScene(Macro *m) : MacroCondition(m, true) {}
bool CheckCondition();
bool Save(obs_data_t *obj) const;
bool Load(obs_data_t *obj);