Add X and Y position tempvars to cursor condition

This commit is contained in:
WarmUpTill 2025-05-21 16:45:06 +02:00 committed by WarmUpTill
parent 34baa56134
commit 1c94a1ab44
3 changed files with 23 additions and 9 deletions

View File

@ -2118,6 +2118,9 @@ AdvSceneSwitcher.tempVar.http.error.description="Empty when no error occurred.\n
AdvSceneSwitcher.tempVar.mqtt.message="Message"
AdvSceneSwitcher.tempVar.cursor.x="Cursor position (X)"
AdvSceneSwitcher.tempVar.cursor.y="Cursor position (Y)"
AdvSceneSwitcher.selectScene="--select scene--"
AdvSceneSwitcher.selectPreviousScene="Previous Scene"
AdvSceneSwitcher.selectCurrentScene="Current Scene"

View File

@ -52,24 +52,26 @@ bool MacroConditionCursor::CheckClick()
bool MacroConditionCursor::CheckCondition()
{
bool ret = false;
std::pair<int, int> cursorPos = GetCursorPos();
const auto &[x, y] = GetCursorPos();
SetTempVarValue("x", std::to_string(x));
SetTempVarValue("y", std::to_string(y));
switch (_condition) {
case Condition::REGION:
ret = cursorPos.first >= _minX && cursorPos.second >= _minY &&
cursorPos.first <= _maxX && cursorPos.second <= _maxY;
SetVariableValue(std::to_string(cursorPos.first) + " " +
std::to_string(cursorPos.second));
ret = x >= _minX && y >= _minY && x <= _maxX && y <= _maxY;
SetVariableValue(std::to_string(x) + " " + std::to_string(y));
break;
case Condition::MOVING:
ret = cursorPos.first != _lastCursorPosition.first ||
cursorPos.second != _lastCursorPosition.second;
ret = x != _lastX || y != _lastY;
break;
case Condition::CLICK:
ret = CheckClick();
break;
}
_lastCheckTime = std::chrono::high_resolution_clock::now();
_lastCursorPosition = cursorPos;
_lastX = x;
_lastY = y;
if (GetVariableValue().empty()) {
SetVariableValue(ret ? "true" : "false");
@ -109,6 +111,12 @@ bool MacroConditionCursor::Load(obs_data_t *obj)
return true;
}
void MacroConditionCursor::SetupTempVars()
{
AddTempvar("x", obs_module_text("AdvSceneSwitcher.tempVar.cursor.x"));
AddTempvar("y", obs_module_text("AdvSceneSwitcher.tempVar.cursor.y"));
}
static inline void populateConditionSelection(QComboBox *list)
{
for (const auto &[condition, name] : cursorConditionTypes) {

View File

@ -38,9 +38,12 @@ public:
NumberVariable<int> _minX = 0, _minY = 0, _maxX = 0, _maxY = 0;
private:
void SetupTempVars();
bool CheckClick();
std::chrono::high_resolution_clock::time_point _lastCheckTime{};
std::pair<int, int> _lastCursorPosition;
int _lastX = 0;
int _lastY = 0;
static bool _registered;
static const std::string id;