MCPcopy Create free account
hub / github.com/BespokeSynth/BespokeSynth / SpawnModuleOnTheFly

Method SpawnModuleOnTheFly

Source/ModularSynth.cpp:3215–3315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3213}
3214
3215IDrawableModule* ModularSynth::SpawnModuleOnTheFly(ModuleFactory::Spawnable spawnable, float x, float y, bool addToContainer, std::string name)
3216{
3217 if (mInitialized)
3218 TitleBar::sShowInitialHelpOverlay = false; //don't show initial help popup
3219
3220 if (sShouldAutosave)
3221 DoAutosave();
3222
3223 std::string moduleType = spawnable.mLabel;
3224
3225 moduleType = ModuleFactory::FixUpTypeName(moduleType);
3226
3227 if (spawnable.mSpawnMethod == ModuleFactory::SpawnMethod::EffectChain)
3228 moduleType = "effectchain";
3229
3230 if (spawnable.mSpawnMethod == ModuleFactory::SpawnMethod::Prefab)
3231 moduleType = "prefab";
3232
3233 if (spawnable.mSpawnMethod == ModuleFactory::SpawnMethod::Plugin)
3234 moduleType = "vstplugin";
3235
3236 if (spawnable.mSpawnMethod == ModuleFactory::SpawnMethod::MidiController)
3237 moduleType = "midicontroller";
3238
3239 if (spawnable.mSpawnMethod == ModuleFactory::SpawnMethod::Preset)
3240 moduleType = spawnable.mPresetModuleType;
3241
3242 if (name == "")
3243 name = moduleType;
3244
3245 ofxJSONElement dummy;
3246 dummy["type"] = moduleType;
3247 std::vector<IDrawableModule*> modules = mModuleContainer.GetModules();
3248 dummy["name"] = GetUniqueName(name, modules);
3249 dummy["onthefly"] = true;
3250 dummy["position"][0u] = x;
3251 dummy["position"][1u] = y;
3252
3253 IDrawableModule* module = nullptr;
3254
3255 try
3256 {
3257 ScopedMutex mutex(&mAudioThreadMutex, "CreateModule");
3258 module = CreateModule(dummy);
3259 if (module != nullptr)
3260 {
3261 if (addToContainer)
3262 mModuleContainer.AddModule(module);
3263 SetUpModule(module, dummy);
3264 module->Init();
3265 }
3266 }
3267 catch (LoadingJSONException& e)
3268 {
3269 LogEvent("Error spawning \"" + spawnable.mLabel + "\" on the fly", kLogEventType_Warning);
3270 }
3271 catch (UnknownModuleException& e)
3272 {

Callers 11

OnMidiNoteMethod · 0.80
OnMidiControlMethod · 0.80
SpawnMethod · 0.80
OnSelectItemMethod · 0.80
AddTrackMethod · 0.80
TestClickMethod · 0.80
PollMethod · 0.80
ButtonClickedMethod · 0.80
PollMethod · 0.80
ButtonClickedMethod · 0.80
SpawnEnvelopeEditorMethod · 0.80

Calls 13

GetUniqueNameFunction · 0.85
GetPathSeparatorFunction · 0.85
ofToDataPathFunction · 0.85
StringClass · 0.85
AddModuleMethod · 0.80
AddEffectMethod · 0.80
LoadPrefabMethod · 0.80
SetVSTMethod · 0.80
SetStringMethod · 0.80
GetSaveDataMethod · 0.80
SetUpFromSaveDataBaseMethod · 0.80
InitMethod · 0.45

Tested by 1

TestClickMethod · 0.64