PluginsMacro
ceramic.macros.PluginsMacro (Class)
Macro for automatic plugin initialization in the Ceramic framework.
This macro discovers enabled plugins at compile-time based on compiler defines and generates code to initialize them. It provides a centralized way to initialize all plugins without manually maintaining a list.
How It Works
- Scans compiler defines for keys starting with
plugin_
- Derives plugin class names from the define keys
- Checks if each plugin class exists and has a
pluginInit()
method - Generates initialization calls for all valid plugins
Plugin Naming Convention
- Define:
plugin_<name>
(e.g.,plugin_spine
,plugin_ui
) - Class:
<Name>Plugin
(e.g.,SpinePlugin
,UiPlugin
) - Special cases handled:
imgui
->ImGuiPlugin
Example
// In your main application:
PluginsMacro.initPlugins();
// With -D plugin_spine -D plugin_ui, generates:
// @:privateAccess ceramic.SpinePlugin.pluginInit();
// @:privateAccess ceramic.UiPlugin.pluginInit();
Plugin Requirements
Plugins must:
- Be in the
ceramic
package - Have a static
pluginInit()
method - Follow the naming convention
See: ceramic.App Where plugins are initialized during app startup
Static Members
initPlugins(): Dynamic
Resolves plugin classes and generates initialization calls for each enabled plugin.
This macro examines compiler defines at compile-time to determine which plugins are enabled, then generates the appropriate initialization code. Plugin initialization calls are made with @:privateAccess to allow access to private pluginInit methods.
Returns | Description |
---|---|
Dynamic | Expression block containing all plugin initialization calls |