MCPcopy Create free account
hub / github.com/WarmUpTill/SceneSwitcher / RegisterScriptAction

Method RegisterScriptAction

plugins/scripting/macro-script-handler.cpp:241–313  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

239}
240
241void ScriptHandler::RegisterScriptAction(void *, calldata_t *data)
242{
243 const char *actionName;
244 if (!calldata_get_string(data, nameParam.data(), &actionName) ||
245 strlen(actionName) == 0) {
246 blog(LOG_WARNING, "[%s] failed! \"%s\" parameter missing!",
247 registerScriptActionDeclString.data(), nameParam.data());
248 RETURN_FAILURE();
249 }
250 obs_data_t *defaultSettingsPtr = nullptr;
251 if (!calldata_get_ptr(data, defaultSettingsParam.data(),
252 &defaultSettingsPtr)) {
253 blog(LOG_WARNING, "[%s] failed! \"%s\" parameter missing!",
254 registerActionFuncName.data(),
255 defaultSettingsParam.data());
256 RETURN_FAILURE();
257 }
258 std::lock_guard<std::mutex> lock(_mutex);
259 OBSData defaultSettings(defaultSettingsPtr);
260 obs_data_release(defaultSettingsPtr);
261
262 if (_actions.count(actionName) > 0) {
263 blog(LOG_WARNING, "[%s] failed! Action \"%s\" already exists!",
264 registerActionFuncName.data(), actionName);
265 RETURN_FAILURE();
266 }
267
268 const std::string id = nameToScriptID(actionName);
269 auto triggerSignalName = getTriggerSignal(actionName, true);
270 auto completionSignalName = getCompletionSignal(actionName, true);
271 auto propertiesSignalName = getPropertiesSignal(actionName, true);
272 auto newInstanceSignalName = getNewInstanceSignal(actionName, true);
273 auto deletedInstanceSignalName =
274 getDeletedInstanceSignal(actionName, true);
275
276 const auto createScriptAction =
277 [id, defaultSettings, propertiesSignalName, triggerSignalName,
278 completionSignalName, newInstanceSignalName,
279 deletedInstanceSignalName](
280 Macro *m) -> std::shared_ptr<MacroAction> {
281 return std::make_shared<MacroActionScript>(
282 m, id, defaultSettings, propertiesSignalName,
283 triggerSignalName, completionSignalName,
284 newInstanceSignalName, deletedInstanceSignalName);
285 };
286 if (!MacroActionFactory::Register(id, {createScriptAction,
287 MacroSegmentScriptEdit::Create,
288 actionName})) {
289 blog(LOG_WARNING,
290 "[%s] failed! Action id \"%s\" already exists!",
291 registerActionFuncName.data(), id.c_str());
292 RETURN_FAILURE();
293 }
294
295 blog(LOG_INFO, "[%s] successful for \"%s\"",
296 registerActionFuncName.data(), actionName);
297
298 calldata_set_string(data, triggerSignalParam.data(),

Callers

nothing calls this directly

Calls 10

nameToScriptIDFunction · 0.85
getTriggerSignalFunction · 0.85
getCompletionSignalFunction · 0.85
getPropertiesSignalFunction · 0.85
getNewInstanceSignalFunction · 0.85
getDeletedInstanceSignalFunction · 0.85
ScriptSegmentTypeClass · 0.85
countMethod · 0.80
dataMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected