mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-03-21 17:34:57 -05:00
Add more scripting signals / procedures
This commit is contained in:
parent
23b461828b
commit
5a2cb0bd68
|
|
@ -108,6 +108,24 @@ static const std::string setTempVarValueDeclString =
|
|||
tempVarIdParam.data() + ", in string " + valueParam.data() +
|
||||
", in int " + GetInstanceIdParamName().data() + ")";
|
||||
|
||||
/* Plugin status */
|
||||
|
||||
static constexpr std::string_view stopSignalName = "advss_plugin_stopped";
|
||||
static constexpr std::string_view startSignalName = "advss_plugin_started";
|
||||
static constexpr std::string_view getRunningStatusFuncName =
|
||||
"advss_plugin_running";
|
||||
static constexpr std::string_view resetIntervalSignalName =
|
||||
"advss_interval_reset";
|
||||
|
||||
static const std::string stopSignalDeclString =
|
||||
std::string("void ") + stopSignalName.data() + "()";
|
||||
static const std::string startSignalDeclString =
|
||||
std::string("void ") + startSignalName.data() + "()";
|
||||
static const std::string resetIntervalDeclString =
|
||||
std::string("void ") + resetIntervalSignalName.data() + "()";
|
||||
static const std::string getRunningStatusDeclString =
|
||||
std::string("bool ") + getRunningStatusFuncName.data() + "()";
|
||||
|
||||
static bool setup();
|
||||
static bool setupDone = setup();
|
||||
|
||||
|
|
@ -134,6 +152,25 @@ static bool setup()
|
|||
&ScriptHandler::DeregisterAllTempVars, nullptr);
|
||||
proc_handler_add(ph, setTempVarValueDeclString.c_str(),
|
||||
&ScriptHandler::SetTempVarValue, nullptr);
|
||||
proc_handler_add(ph, getRunningStatusDeclString.c_str(),
|
||||
&ScriptHandler::GetRunningStatus, nullptr);
|
||||
|
||||
auto sh = obs_get_signal_handler();
|
||||
signal_handler_add(sh, stopSignalDeclString.c_str());
|
||||
signal_handler_add(sh, startSignalDeclString.c_str());
|
||||
signal_handler_add(sh, resetIntervalDeclString.c_str());
|
||||
|
||||
static constexpr auto triggerSignal = [](const std::string_view &name) {
|
||||
auto sh = obs_get_signal_handler();
|
||||
struct calldata data;
|
||||
calldata_init(&data);
|
||||
signal_handler_signal(sh, name.data(), &data);
|
||||
calldata_free(&data);
|
||||
};
|
||||
|
||||
AddIntervalResetStep([]() { triggerSignal(resetIntervalSignalName); });
|
||||
AddStartStep([]() { triggerSignal(startSignalName); });
|
||||
AddStopStep([]() { triggerSignal(stopSignalName); });
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -476,6 +513,11 @@ void ScriptHandler::SetVariableValue(void *, calldata_t *data)
|
|||
RETURN_SUCCESS();
|
||||
}
|
||||
|
||||
void ScriptHandler::GetRunningStatus(void *ctx, calldata_t *data)
|
||||
{
|
||||
calldata_set_bool(data, "is_running", PluginIsRunning());
|
||||
}
|
||||
|
||||
void ScriptHandler::RegisterTempVar(void *, calldata_t *data)
|
||||
{
|
||||
const char *variableId;
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ public:
|
|||
static void DeregisterAllTempVars(void *ctx, calldata_t *data);
|
||||
static void SetTempVarValue(void *ctx, calldata_t *data);
|
||||
static void SetVariableValue(void *ctx, calldata_t *data);
|
||||
static void GetRunningStatus(void *ctx, calldata_t *data);
|
||||
static bool ActionIdIsValid(const std::string &id);
|
||||
static bool ConditionIdIsValid(const std::string &id);
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,39 @@ def script_load(settings):
|
|||
],
|
||||
)
|
||||
|
||||
# Other signals and procedures, which might be useful
|
||||
def plugin_stop_handler(data):
|
||||
obs.script_log(obs.LOG_INFO, "Hello from stop handler!")
|
||||
get_running_status()
|
||||
|
||||
def plugin_start_handler(data):
|
||||
obs.script_log(obs.LOG_INFO, "Hello from start handler!")
|
||||
get_running_status()
|
||||
|
||||
def get_running_status():
|
||||
proc_handler = obs.obs_get_proc_handler()
|
||||
data = obs.calldata_create()
|
||||
obs.proc_handler_call(proc_handler, "advss_plugin_running", data)
|
||||
success = obs.calldata_bool(data, "is_running")
|
||||
obs.script_log(
|
||||
obs.LOG_INFO, f"The advanced scene switcher is currently running: {success}"
|
||||
)
|
||||
obs.calldata_destroy(data)
|
||||
|
||||
def interval_reset_handler(data):
|
||||
obs.script_log(obs.LOG_INFO, "Hello from reset handler!")
|
||||
|
||||
signal_handler = obs.obs_get_signal_handler()
|
||||
obs.signal_handler_connect(
|
||||
signal_handler, "advss_plugin_stopped", plugin_stop_handler
|
||||
)
|
||||
obs.signal_handler_connect(
|
||||
signal_handler, "advss_plugin_started", plugin_start_handler
|
||||
)
|
||||
obs.signal_handler_connect(
|
||||
signal_handler, "advss_interval_reset", interval_reset_handler
|
||||
)
|
||||
|
||||
|
||||
def script_unload():
|
||||
# Deregistering is useful if you plan on reloading the script files
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user