mirror of
https://github.com/WarmUpTill/SceneSwitcher.git
synced 2026-04-24 14:58:19 -05:00
Updated Scripting (markdown)
parent
44425afe11
commit
0537d7c470
120
Scripting.md
120
Scripting.md
|
|
@ -155,6 +155,65 @@ You only have to emit it.
|
|||
The return value can be queried via `success` from the calldata object associated with this procedure.
|
||||
Returns `true`, if the operation was successful, and `false` otherwise.
|
||||
|
||||
### Example
|
||||
```
|
||||
def advss_register_action_type(name, callback, get_properties, default_settings):
|
||||
proc_handler = obs.obs_get_proc_handler()
|
||||
data = obs.calldata_create()
|
||||
|
||||
obs.calldata_set_string(data, "name", name)
|
||||
obs.calldata_set_ptr(data, "default_settings", default_settings)
|
||||
|
||||
obs.proc_handler_call(proc_handler, "advss_register_script_action", data)
|
||||
|
||||
success = obs.calldata_bool(data, "success")
|
||||
if success == False:
|
||||
obs.script_log(obs.LOG_WARNING, f'failed to register custom action "{name}"')
|
||||
obs.calldata_destroy(data)
|
||||
return
|
||||
|
||||
# Run in separate thread to avoid blocking main OBS signal handler.
|
||||
# Operation completion will be indicated via signal completion_signal_name.
|
||||
def run_helper(data):
|
||||
completion_signal_name = obs.calldata_string(data, "completion_signal_name")
|
||||
id = obs.calldata_int(data, "completion_id")
|
||||
|
||||
def thread_func(settings):
|
||||
settings = obs.obs_data_create_from_json(
|
||||
obs.calldata_string(data, "settings")
|
||||
)
|
||||
|
||||
callback(settings)
|
||||
|
||||
reply_data = obs.calldata_create()
|
||||
obs.calldata_set_int(reply_data, "completion_id", id)
|
||||
obs.calldata_set_bool(reply_data, "result", True)
|
||||
signal_handler = obs.obs_get_signal_handler()
|
||||
obs.signal_handler_signal(
|
||||
signal_handler, completion_signal_name, reply_data
|
||||
)
|
||||
obs.obs_data_release(settings)
|
||||
obs.calldata_destroy(reply_data)
|
||||
|
||||
threading.Thread(target=thread_func, args={data}).start()
|
||||
|
||||
def properties_helper(data):
|
||||
if get_properties is not None:
|
||||
properties = get_properties()
|
||||
else:
|
||||
properties = None
|
||||
obs.calldata_set_ptr(data, "properties", properties)
|
||||
|
||||
trigger_signal_name = obs.calldata_string(data, "trigger_signal_name")
|
||||
property_signal_name = obs.calldata_string(data, "properties_signal_name")
|
||||
|
||||
signal_handler = obs.obs_get_signal_handler()
|
||||
obs.signal_handler_connect(signal_handler, trigger_signal_name, run_helper)
|
||||
obs.signal_handler_connect(signal_handler, property_signal_name, properties_helper)
|
||||
|
||||
obs.calldata_destroy(data)
|
||||
```
|
||||
|
||||
## advss_register_script_condition
|
||||
|
||||
### name
|
||||
|
|
@ -211,6 +270,63 @@ You only have to emit it.
|
|||
|
||||
### Example
|
||||
```
|
||||
def advss_register_condition_type(
|
||||
name, callback, get_properties, default_settings
|
||||
):
|
||||
proc_handler = obs.obs_get_proc_handler()
|
||||
data = obs.calldata_create()
|
||||
|
||||
obs.calldata_set_string(data, "name", name)
|
||||
obs.calldata_set_ptr(data, "default_settings", default_settings)
|
||||
|
||||
obs.proc_handler_call(proc_handler, "advss_register_script_condition", data)
|
||||
|
||||
success = obs.calldata_bool(data, "success")
|
||||
if success == False:
|
||||
obs.script_log(obs.LOG_WARNING, f'failed to register custom condition "{name}"')
|
||||
obs.calldata_destroy(data)
|
||||
return
|
||||
|
||||
# Run in separate thread to avoid blocking main OBS signal handler.
|
||||
# Operation completion will be indicated via signal completion_signal_name.
|
||||
def run_helper(data):
|
||||
completion_signal_name = obs.calldata_string(data, "completion_signal_name")
|
||||
id = obs.calldata_int(data, "completion_id")
|
||||
|
||||
def thread_func(settings):
|
||||
settings = obs.obs_data_create_from_json(
|
||||
obs.calldata_string(data, "settings")
|
||||
)
|
||||
|
||||
callback_result = callback(settings)
|
||||
|
||||
reply_data = obs.calldata_create()
|
||||
obs.calldata_set_int(reply_data, "completion_id", id)
|
||||
obs.calldata_set_bool(reply_data, "result", callback_result)
|
||||
signal_handler = obs.obs_get_signal_handler()
|
||||
obs.signal_handler_signal(
|
||||
signal_handler, completion_signal_name, reply_data
|
||||
)
|
||||
obs.obs_data_release(settings)
|
||||
obs.calldata_destroy(reply_data)
|
||||
|
||||
threading.Thread(target=thread_func, args={data}).start()
|
||||
|
||||
def properties_helper(data):
|
||||
if get_properties is not None:
|
||||
properties = get_properties()
|
||||
else:
|
||||
properties = None
|
||||
obs.calldata_set_ptr(data, "properties", properties)
|
||||
|
||||
trigger_signal_name = obs.calldata_string(data, "trigger_signal_name")
|
||||
property_signal_name = obs.calldata_string(data, "properties_signal_name")
|
||||
|
||||
signal_handler = obs.obs_get_signal_handler()
|
||||
obs.signal_handler_connect(signal_handler, trigger_signal_name, run_helper)
|
||||
obs.signal_handler_connect(signal_handler, property_signal_name, properties_helper)
|
||||
|
||||
obs.calldata_destroy(data)
|
||||
```
|
||||
|
||||
### Return value
|
||||
|
|
@ -238,7 +354,7 @@ def advss_deregister_action(name):
|
|||
|
||||
obs.calldata_set_string(data, "name", name)
|
||||
|
||||
obs.proc_handler_call(proc_handler, advss_deregister_script_action, data)
|
||||
obs.proc_handler_call(proc_handler, "advss_deregister_script_action", data)
|
||||
|
||||
success = obs.calldata_bool(data, "success")
|
||||
if success == False:
|
||||
|
|
@ -266,7 +382,7 @@ def advss_deregister_condition(name):
|
|||
|
||||
obs.calldata_set_string(data, "name", name)
|
||||
|
||||
obs.proc_handler_call(proc_handler, advss_deregister_script_condition, data)
|
||||
obs.proc_handler_call(proc_handler, "advss_deregister_script_condition", data)
|
||||
|
||||
success = obs.calldata_bool(data, "success")
|
||||
if success == False:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user