From e6bde1ca1f924cd5bb719ada2a00b341222b5a2c Mon Sep 17 00:00:00 2001 From: Sophia Poirier <2997196+sophiapoirier@users.noreply.github.com> Date: Sun, 26 Jul 2020 22:40:03 +0000 Subject: [PATCH] fold TARGET_PLUGIN_USES_VSTGUI into TARGET_PLUGIN_HAS_GUI (the former was redundant, as Tom mentioned in notes2020) * cleaned out some additional obsolete macros: PLUGIN_EDITOR_ENTRY_POINT, DFXGUI_USE_COCOA_AU_VIEW, PLUGGUI, AU, ENABLE_VST_EXTENSION_IN_VSTGUI, VSTGUI_USES_UTF8, USE_LIBPNG * also as Tom mentioned in notes2020, VST_FORCE_DEPRECATED can be enabled on all platforms as it is the minimum requirement for 64-bit code --- dfx-library/dfxplugin-audiounit.cpp | 6 ++--- dfx-library/dfxplugin-audiounit.r | 4 +-- dfx-library/dfxplugin-base.h | 6 +---- dfx-library/dfxplugin-prefix.h | 42 +++-------------------------- dfx-library/dfxplugin-rtas.cpp | 17 ++++++------ dfx-library/dfxplugin-vst.cpp | 6 ----- dfx-library/dfxplugin.cpp | 28 +++++++------------ dfx-library/dfxplugin.h | 16 ++++++----- dfxgui/dfxguieditor.h | 15 ++++++----- exemplar/exemplardefs.h | 3 --- guitest/guitestdefs.h | 3 --- notes/notes2020.txt | 5 ---- slowft/slowftdefs.h | 3 --- windowingstub/windowingstubdefs.h | 3 --- 14 files changed, 44 insertions(+), 113 deletions(-) diff --git a/dfx-library/dfxplugin-audiounit.cpp b/dfx-library/dfxplugin-audiounit.cpp index 97b61dc8..27aefc93 100644 --- a/dfx-library/dfxplugin-audiounit.cpp +++ b/dfx-library/dfxplugin-audiounit.cpp @@ -33,7 +33,7 @@ This is where we connect the Audio Unit API to our DfxPlugin system. #include "dfx-au-utilities.h" #include "dfxmisc.h" -#if DFXGUI_USE_COCOA_AU_VIEW +#if TARGET_PLUGIN_HAS_GUI #include "dfxgui-auviewfactory.h" #endif @@ -272,7 +272,7 @@ OSStatus DfxPlugin::GetPropertyInfo(AudioUnitPropertyID inPropertyID, switch (inPropertyID) { case kAudioUnitProperty_CocoaUI: -#if DFXGUI_USE_COCOA_AU_VIEW +#if TARGET_PLUGIN_HAS_GUI outDataSize = sizeof(AudioUnitCocoaViewInfo); outWritable = false; status = noErr; @@ -417,7 +417,7 @@ OSStatus DfxPlugin::GetProperty(AudioUnitPropertyID inPropertyID, switch (inPropertyID) { -#if DFXGUI_USE_COCOA_AU_VIEW +#if TARGET_PLUGIN_HAS_GUI case kAudioUnitProperty_CocoaUI: { auto const pluginBundle = CFBundleGetBundleWithIdentifier(CFSTR(PLUGIN_BUNDLE_IDENTIFIER)); diff --git a/dfx-library/dfxplugin-audiounit.r b/dfx-library/dfxplugin-audiounit.r index 972b14c7..cf38e7c9 100644 --- a/dfx-library/dfxplugin-audiounit.r +++ b/dfx-library/dfxplugin-audiounit.r @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------ Destroy FX Library is a collection of foundation code for creating audio processing plug-ins. -Copyright (C) 2002-2009 Sophia Poirier +Copyright (C) 2002-2020 Sophia Poirier This file is part of the Destroy FX Library (version 1.0). @@ -106,7 +106,7 @@ This is our Audio Unit resource stuff. #define DESCRIPTION PLUGIN_CREATOR_NAME_STRING" "PLUGIN_NAME_STRING" picturesque yet functional interface" #endif -#define ENTRY_POINT PLUGIN_EDITOR_ENTRY_POINT +#define ENTRY_POINT "DGVstGuiAUViewEntry" #include "AUResources.r" diff --git a/dfx-library/dfxplugin-base.h b/dfx-library/dfxplugin-base.h index e8780f40..bf5279d7 100644 --- a/dfx-library/dfxplugin-base.h +++ b/dfx-library/dfxplugin-base.h @@ -94,7 +94,7 @@ To contact the author, use the contact form at http://destroyfx.org/ // using Digidesign's RTAS/AudioSuite API #elif defined(TARGET_API_RTAS) - #ifdef TARGET_PLUGIN_USES_VSTGUI + #if TARGET_PLUGIN_HAS_GUI #include "ITemplateProcess.h" using TARGET_API_EDITOR_PARENT_INSTANCE_TYPE = ITemplateProcess*; #else @@ -148,10 +148,6 @@ To contact the author, use the contact form at http://destroyfx.org/ #error DFX_SUPPORT_OLD_VST_SETTINGS should be defined to 1, if defined #endif -#if defined(TARGET_PLUGIN_USES_VSTGUI) && TARGET_PLUGIN_USES_VSTGUI - 0 != 1 -#error TARGET_PLUGIN_USES_VSTGUI should be defined to 1, if defined -#endif - // Macros that we test with #if, and so should be defined to 1 or 0. diff --git a/dfx-library/dfxplugin-prefix.h b/dfx-library/dfxplugin-prefix.h index 7d24284e..aacac435 100644 --- a/dfx-library/dfxplugin-prefix.h +++ b/dfx-library/dfxplugin-prefix.h @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------ Destroy FX Library is a collection of foundation code for creating audio processing plug-ins. -Copyright (C) 2009-2012 Sophia Poirier +Copyright (C) 2009-2020 Sophia Poirier and Tom Murphy 7 This file is part of the Destroy FX Library (version 1.0). @@ -77,33 +77,11 @@ This file should be included by any prefix header that you use for your plugin. #endif -/*-----------------------------------------------------------------------------*/ -/* Audio Unit stuff */ -#ifdef TARGET_API_AUDIOUNIT - #define DFXGUI_USE_COCOA_AU_VIEW TARGET_PLUGIN_HAS_GUI && __LP64__ - #define TARGET_PLUGIN_USES_VSTGUI 1 - #ifdef TARGET_PLUGIN_USES_VSTGUI - #define PLUGGUI 1 - #define AU 1 - #define PLUGIN_EDITOR_ENTRY_POINT "DGVstGuiAUViewEntry" - #endif -#endif - - /*-----------------------------------------------------------------------------*/ /* VST stuff */ #ifdef TARGET_API_VST - /* the Mac x86 baseline VST API version is VST 2.4 */ - #ifndef VST_FORCE_DEPRECATED - #if defined(__MACH__) && !__ppc__ - #define VST_FORCE_DEPRECATED 1 - #else - #define VST_FORCE_DEPRECATED 0 - #endif - #endif - - #define TARGET_PLUGIN_USES_VSTGUI 1 - #define ENABLE_VST_EXTENSION_IN_VSTGUI 0 + /* require VST 2.4 (the first version with 64-bit executable support) */ + #define VST_FORCE_DEPRECATED 1 #endif @@ -113,20 +91,6 @@ This file should be included by any prefix header that you use for your plugin. #ifdef __MACH__ #include "../ProToolsSDK/AlturaPorts/TDMPlugIns/common/Mac/CommonPlugInHeaders.pch" #endif - - #define TARGET_PLUGIN_USES_VSTGUI 1 - #define PLUGGUI 1 -#endif - - -/*-----------------------------------------------------------------------------*/ -/* VSTGUI stuff */ -#ifdef TARGET_PLUGIN_USES_VSTGUI - #if _WIN32 - #define VSTGUI_USES_UTF8 0 - #define USE_LIBPNG 1 - #define WINDOWS 1 - #endif #endif diff --git a/dfx-library/dfxplugin-rtas.cpp b/dfx-library/dfxplugin-rtas.cpp index d1600f8a..d866ff8e 100644 --- a/dfx-library/dfxplugin-rtas.cpp +++ b/dfx-library/dfxplugin-rtas.cpp @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------ Destroy FX Library is a collection of foundation code for creating audio processing plug-ins. -Copyright (C) 2009-2019 Sophia Poirier +Copyright (C) 2009-2020 Sophia Poirier This file is part of the Destroy FX Library (version 1.0). @@ -49,7 +49,7 @@ This is where we connect the RTAS/AudioSuite API to our DfxPlugin system. //#include "FicPluginEnums.h" #include "PlugInUtils.h" -#ifndef TARGET_PLUGIN_USES_VSTGUI +#if !TARGET_PLUGIN_HAS_GUI #include "CClippingView.h" #include "CGainMeterView.h" #include "CNoResourceView.h" @@ -125,7 +125,7 @@ void DfxPlugin::DoTokenIdle() { CEffectProcess::DoTokenIdle(); -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI if (mCustomUI_p) { // if ( !IsAS() || (IsAS() && (GetASPreviewState() == previewState_Off)) ) @@ -590,7 +590,7 @@ void DfxPlugin::RenderAudio(float ** inAudioStreams, float ** outAudioStreams, l //----------------------------------------------------------------------------- CPlugInView * DfxPlugin::CreateCPlugInView() { -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI CNoResourceView * ui = NULL; try { @@ -643,7 +643,7 @@ CPlugInView * DfxPlugin::CreateCPlugInView() #endif } -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI //----------------------------------------------------------------------------- void DfxPlugin::GetViewRect(Rect * outViewRect) @@ -794,8 +794,7 @@ void DfxPlugin::SetViewOrigin(Point anOrigin) } #endif -#endif -// TARGET_PLUGIN_USES_VSTGUI +#endif // TARGET_PLUGIN_HAS_GUI @@ -872,7 +871,7 @@ void DfxEffectGroup::Initialize() { CEffectGroup::Initialize(); -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI CCustomView::AddNewViewProc("NoUIView", CreateCTemplateNoUIView); #else // CGainMeterView doesn't have a RegisterView() method, so we have to do this stuff instead: @@ -896,7 +895,7 @@ void DfxEffectGroup::dfx_AddEffectType(CEffectType * inEffectType) inEffectType->DefineSampleRateSupport(eSupports48kAnd96kAnd192k); inEffectType->AddGestalt(pluginGestalt_CanBypass); inEffectType->AddGestalt(pluginGestalt_SupportsClipMeter); -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI inEffectType->AddGestalt(pluginGestalt_DoesNotUseDigiUI); #endif diff --git a/dfx-library/dfxplugin-vst.cpp b/dfx-library/dfxplugin-vst.cpp index 4e6c8c74..6f177314 100644 --- a/dfx-library/dfxplugin-vst.cpp +++ b/dfx-library/dfxplugin-vst.cpp @@ -56,12 +56,6 @@ void DfxPlugin::resume() { updatesamplerate(); -#if TARGET_PLUGIN_USES_MIDI - #if !VST_FORCE_DEPRECATED - wantEvents(); - #endif -#endif - // VST doesn't have initialize and cleanup methods like Audio Unit does, // so we need to call this here if (!mIsInitialized) diff --git a/dfx-library/dfxplugin.cpp b/dfx-library/dfxplugin.cpp index 966a5e49..ea0911be 100644 --- a/dfx-library/dfxplugin.cpp +++ b/dfx-library/dfxplugin.cpp @@ -43,7 +43,7 @@ This is our class for E-Z plugin-making and E-Z multiple-API support. #include "dfx-au-utilities.h" #endif -#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI && defined(TARGET_PLUGIN_USES_VSTGUI) +#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI // If using the VST GUI interface, we need the class definition // for AEffGUIEditor so that we can send it parameter changes. #include "aeffguieditor.h" @@ -53,7 +53,7 @@ This is our class for E-Z plugin-making and E-Z multiple-API support. #ifdef TARGET_API_RTAS #include "ConvertUtils.h" - #if TARGET_PLUGIN_HAS_GUI && defined(TARGET_PLUGIN_USES_VSTGUI) + #if TARGET_PLUGIN_HAS_GUI extern void* gThisModule; #endif #endif @@ -199,9 +199,6 @@ DfxPlugin::DfxPlugin( setNumInputs(VST_NUM_INPUTS); setNumOutputs(VST_NUM_OUTPUTS); - #if !VST_FORCE_DEPRECATED - canProcessReplacing(); // supports replacing audio output - #endif TARGET_API_BASE_CLASS::setProgram(0); // set the current preset number to 0 // check to see if the host supports sending tempo and time information to VST plugins @@ -229,12 +226,12 @@ DfxPlugin::DfxPlugin( // end VST stuff #ifdef TARGET_API_RTAS -#ifdef TARGET_PLUGIN_USES_VSTGUI + #if TARGET_PLUGIN_HAS_GUI mPIWinRect.top = mPIWinRect.left = mPIWinRect.bottom = mPIWinRect.right = 0; #if TARGET_OS_WIN32 mModuleHandle_p = gThisModule; // extern from DLLMain.cpp; HINSTANCE of the DLL #endif -#endif + #endif #endif // end RTAS stuff } @@ -271,16 +268,15 @@ void DfxPlugin::do_PreDestructor() // VST doesn't have initialize and cleanup methods like Audio Unit does, // so we need to call this manually here do_cleanup(); -#endif -#ifdef TARGET_API_VST #if TARGET_PLUGIN_HAS_GUI // The destructor of AudioEffect will delete editor if it's non-null, but // it looks like DfxGuiEditor wants to be able to still access the effect // during its own destructor. Maybe it's just wong that it's doing that, // but if not, then we should destroy the editor now before the effect // instance becomes invalid. - if (auto *e = editor) { + if (auto* e = editor) + { setEditor(nullptr); delete e; } @@ -289,10 +285,6 @@ void DfxPlugin::do_PreDestructor() } -DfxPlugin::~DfxPlugin() { -} - - //----------------------------------------------------------------------------- // non-virtual function that calls initialize() and insures that some stuff happens long DfxPlugin::do_initialize() @@ -601,7 +593,6 @@ void DfxPlugin::postupdate_parameter(long inParameterIndex) #ifdef TARGET_API_VST #if TARGET_PLUGIN_HAS_GUI - #ifdef TARGET_PLUGIN_USES_VSTGUI if (auto const guiEditor = dynamic_cast(getEditor())) { guiEditor->setParameter(inParameterIndex, getparameter_gen(inParameterIndex)); @@ -610,7 +601,6 @@ void DfxPlugin::postupdate_parameter(long inParameterIndex) #warning "implementation missing" assert(false); // XXX TODO: we will need something for our GUI class here #endif - #endif #endif #ifdef TARGET_API_RTAS @@ -1179,6 +1169,8 @@ void DfxPlugin::incrementSmoothedAudioValues(DfxPluginCore* owner) { std::for_each(mSmoothedAudioValues.cbegin(), mSmoothedAudioValues.cend(), [owner](auto& value) { + // TODO: is the !owner test vestigial? and now confusing, per the comment in the header declaration? + // (very careful testing required if changed because incorrect managed smoothing stuff has insidious consequences) if (!owner || (owner == value.second)) { value.first->inc(); @@ -1862,7 +1854,7 @@ void DfxPlugin::postupdate_midilearn() PropertyChanged(dfx::kPluginProperty_MidiLearn, kAudioUnitScope_Global, AudioUnitElement(0)); #endif -#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI && defined(TARGET_PLUGIN_USES_VSTGUI) +#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI if (auto const guiEditor = dynamic_cast(getEditor())) { guiEditor->HandleMidiLearnChange(); @@ -1877,7 +1869,7 @@ void DfxPlugin::postupdate_midilearner() PropertyChanged(dfx::kPluginProperty_MidiLearner, kAudioUnitScope_Global, AudioUnitElement(0)); #endif -#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI && defined(TARGET_PLUGIN_USES_VSTGUI) +#if defined(TARGET_API_VST) && TARGET_PLUGIN_HAS_GUI if (auto const guiEditor = dynamic_cast(getEditor())) { guiEditor->HandleMidiLearnerChange(); diff --git a/dfx-library/dfxplugin.h b/dfx-library/dfxplugin.h index 75dd142a..48ade5a1 100644 --- a/dfx-library/dfxplugin.h +++ b/dfx-library/dfxplugin.h @@ -151,6 +151,7 @@ PLUGIN_EDITOR_RES_ID #include +#include #include #include #include @@ -170,7 +171,7 @@ PLUGIN_EDITOR_RES_ID using TARGET_API_BASE_CLASS = CEffectProcessRTAS; #endif using TARGET_API_BASE_INSTANCE_TYPE = void*; - #ifdef TARGET_PLUGIN_USES_VSTGUI + #if TARGET_PLUGIN_HAS_GUI #include "CProcessType.h" #include "CTemplateNoUIView.h" #endif @@ -206,7 +207,7 @@ class DfxPluginCore; #pragma mark _________DfxPlugin_________ //----------------------------------------------------------------------------- class DfxPlugin : public TARGET_API_BASE_CLASS -#if defined(TARGET_API_RTAS) && defined(TARGET_PLUGIN_USES_VSTGUI) +#if defined(TARGET_API_RTAS) && TARGET_PLUGIN_HAS_GUI , public ITemplateProcess #endif { @@ -236,7 +237,7 @@ class DfxPlugin : public TARGET_API_BASE_CLASS // *** DfxPlugin(TARGET_API_BASE_INSTANCE_TYPE inInstance, long inNumParameters, long inNumPresets = 1); // *** - ~DfxPlugin() override; + virtual ~DfxPlugin() = default; void do_PostConstructor(); // *** @@ -815,7 +816,7 @@ class DfxPlugin : public TARGET_API_BASE_CLASS std::vector mInputAudioStreams_as; std::vector mOutputAudioStreams_as; std::vector mZeroAudioBuffer; -#ifdef TARGET_PLUGIN_USES_VSTGUI +#if TARGET_PLUGIN_HAS_GUI GrafPtr mMainPort = nullptr; std::unique_ptr mCustomUI_p; Rect mPIWinRect; @@ -1016,7 +1017,7 @@ class DfxPlugin : public TARGET_API_BASE_CLASS int64_t GetParameter_i_FromRTAS(long inParameterID); bool GetParameter_b_FromRTAS(long inParameterID); - #ifdef TARGET_PLUGIN_USES_VSTGUI + #if TARGET_PLUGIN_HAS_GUI void SetViewPort(GrafPtr inPort) override; void GetViewRect(Rect* outViewRect) override; long SetControlValue(long inControlIndex, long inValue) override; @@ -1048,7 +1049,7 @@ class DfxPlugin : public TARGET_API_BASE_CLASS // silliness needing for RTAS<->VSTGUI connecting // virtual float GetParameter_f(long inParameterID) const { return GetParameter(inParameterID); } - #endif + #endif // TARGET_PLUGIN_HAS_GUI #endif // end of RTAS/AudioSuite API methods @@ -1256,7 +1257,7 @@ class DfxEffectGroup : public CEffectGroup #include "CPluginControl_Continuous.h" #include "CPluginControl_Frequency.h" -#if TAREGT_OS_WIN32 +#if TARGET_OS_WIN32 #pragma warning( disable : 4250 ) // function being inherited through dominance #endif @@ -1409,6 +1410,7 @@ template void DfxPlugin::initCores() { #ifndef TARGET_API_AUDIOUNIT + assert(mDSPCores.empty()); // this method should only be called once mDSPCores.clear(); mDSPCores.reserve(getnumoutputs()); for (unsigned long coreidx = 0; coreidx < getnumoutputs(); coreidx++) diff --git a/dfxgui/dfxguieditor.h b/dfxgui/dfxguieditor.h index 32a773c6..26b52b17 100644 --- a/dfxgui/dfxguieditor.h +++ b/dfxgui/dfxguieditor.h @@ -241,13 +241,6 @@ class DfxGuiEditor : public TARGET_API_EDITOR_BASE_CLASS, void doIdleStuff() override; #endif -#if PLUGGUI - bool isOpen() const noexcept - { - return (systemWindow != nullptr); - } -#endif - // VST/RTAS abstraction methods long GetNumParameters(); long GetNumAudioOutputs(); @@ -350,6 +343,14 @@ class DfxGuiEditor : public TARGET_API_EDITOR_BASE_CLASS, void addMousedOverControl(IDGControl* inMousedOverControl); void removeMousedOverControl(IDGControl* inMousedOverControl); +#ifndef TARGET_API_VST + // in VST2, this method is provided by AEffEditor + bool isOpen() const noexcept + { + return (systemWindow != nullptr); + } +#endif + IDGControl* mCurrentControl_mouseover = nullptr; std::list mMousedOverControlsList; diff --git a/exemplar/exemplardefs.h b/exemplar/exemplardefs.h index e1ca9dd0..bd817904 100644 --- a/exemplar/exemplardefs.h +++ b/exemplar/exemplardefs.h @@ -15,9 +15,6 @@ #define TARGET_PLUGIN_HAS_GUI 0 #endif -/* only necessary if using a custom GUI */ -#define PLUGIN_EDITOR_ENTRY_POINT "ExemplarEditorEntry" - // optional #define PLUGIN_DESCRIPTION_STRING "the cow says..." #define PLUGIN_EDITOR_DESCRIPTION_STRING "the cow says..." diff --git a/guitest/guitestdefs.h b/guitest/guitestdefs.h index 2b81120e..74754e8e 100644 --- a/guitest/guitestdefs.h +++ b/guitest/guitestdefs.h @@ -15,9 +15,6 @@ #define TARGET_PLUGIN_HAS_GUI 1 #endif -/* only necessary if using a custom GUI */ -#define PLUGIN_EDITOR_ENTRY_POINT "GuitestEditorEntry" - // optional #define PLUGIN_DESCRIPTION_STRING "i forgot to change the description" #define PLUGIN_EDITOR_DESCRIPTION_STRING "i forgot to change the gui description too" diff --git a/notes/notes2020.txt b/notes/notes2020.txt index 8dbe9fd5..be7159b5 100644 --- a/notes/notes2020.txt +++ b/notes/notes2020.txt @@ -301,11 +301,6 @@ sequence should be (and why the gui doesn't show). set by calling methods of the audioeffect class during startup, like programsAreChunks(true). This is done by dfxplugin.cpp in its constructor. -(We can probably get rid of VST_FORCE_DEPRECATED as part of this? looks like the mac vst -build is using 2.4.) - -(Can probably also make TARGET_PLUGIN_HAS_GUI imply TARGET_PLUGIN_USES_VSTGUI?) - The "has effect" flag is set (expected) but the dfx library ctor only sets the editor member (of base class AEffect) rather than calling setEditor. How did that happen? Well it turns out that vstgui's AEffGUIEditor constructor (plugin-bindings/aeffguieditor.cpp) calls setEditor(this). Probably we should not manually assign editor, but diff --git a/slowft/slowftdefs.h b/slowft/slowftdefs.h index e3c1423a..3da2bd1c 100644 --- a/slowft/slowftdefs.h +++ b/slowft/slowftdefs.h @@ -15,9 +15,6 @@ #define TARGET_PLUGIN_HAS_GUI 0 #endif -/* only necessary if using a custom GUI */ -#define PLUGIN_EDITOR_ENTRY_POINT "SlowftEditorEntry" - // optional #define PLUGIN_DESCRIPTION_STRING "i forgot to change the description" #define PLUGIN_EDITOR_DESCRIPTION_STRING "i forgot to change the gui description too" diff --git a/windowingstub/windowingstubdefs.h b/windowingstub/windowingstubdefs.h index 65a90db5..43dc647f 100644 --- a/windowingstub/windowingstubdefs.h +++ b/windowingstub/windowingstubdefs.h @@ -16,9 +16,6 @@ #define TARGET_PLUGIN_HAS_GUI 0 #endif -/* only necessary if using a custom GUI */ -#define PLUGIN_EDITOR_ENTRY_POINT "WindowingstubEditorEntry" - // optional #define PLUGIN_DESCRIPTION_STRING "i forgot to change the description" #define PLUGIN_EDITOR_DESCRIPTION_STRING "i forgot to change the gui description too"