ReckfellExtensionManager
Native extension loading and lifecycle.
Pass a .reckfellextension descriptor path, check LoadStatus and use consistent path spelling for queries. Automatic loading can precede _Ready, making AlreadyLoaded a separate normal result.
Manager registry membership, an open library resource and an individual ABI call’s correctness are distinct states. UnloadExtension removes the registration and classes, but a held resource can extend library lifetime. Do not unload code while its objects and callbacks remain in use.
Editor-build load/unload events occur within state transitions. In particular, first-load ExtensionLoaded fires before registry insertion. Reloading requires separate support and does not guarantee rollback after failure.
Extension descriptor and diagnostics.
Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.
Properties1
SingletonProperty
public static ReckfellExtensionManagerInstance Singleton { get; }Object access to the same manager used by static methods. Does not create another registry. Do not Dispose/Free the global singleton.
Methods6
GetExtensionReckfellExtension
public static ReckfellExtension GetExtension(string path);Returns the object for an already-registered path. Check IsExtensionLoaded first: an absent path produces native diagnostics and an empty result. Holding the reference can keep the library open after manager registry removal.
| Name | Type | Default |
|---|---|---|
path | string | — |
pathDescriptor path, not a DLL path. Use the same path spelling as the registered entry for later queries and unloading.
ReckfellExtensionRegistered ReckfellExtension; an absent path returns null with native diagnostics, not a guaranteed C# exception.
GetLoadedExtensionsstring[]
public static string[] GetLoadedExtensions();Returns a snapshot of current registry paths. It neither scans directories nor lists every discovered descriptor. Array order is not dependency or initialization order.
string[]string[] snapshot of current registry paths, not a live editable manager collection.
IsExtensionLoadedbool
public static bool IsExtensionLoaded(string path);Checks exact-path membership in the manager registry. This does not check file existence, every ABI call’s compatibility or extension-function health.
| Name | Type | Default |
|---|---|---|
path | string | — |
pathDescriptor path, not a DLL path. Use the same path spelling as the registered entry for later queries and unloading.
booltrue for an exact registered path; false after its entry is successfully removed.
LoadExtensionReckfellExtensionManager.LoadStatus
public static ReckfellExtensionManager.LoadStatus LoadExtension(string path);Loads a .reckfellextension descriptor and initializes its selected library. Check LoadStatus; automatic loading may precede _Ready. Repeating the same registered path returns AlreadyLoaded without reinitializing. Recovery mode rejects loading.
| Name | Type | Default |
|---|---|---|
path | string | — |
pathDescriptor path, not a DLL path. Use the same path spelling as the registered entry for later queries and unloading.
ReckfellExtensionManager.LoadStatusLoadStatus: Ok means loaded; AlreadyLoaded means an existing entry; NotLoaded can indicate a feature-tag skip; Failed means failure. Do not treat NeedsRestart as call readiness.
ReloadExtensionReckfellExtensionManager.LoadStatus
public static ReckfellExtensionManager.LoadStatus ReloadExtension(string path);Attempts to reload an already-registered library. Requires an editor build, enabled reloading and extension support. Not transactional: failure after closing the old library does not guarantee restoration. Check the status and the specific required classes/methods.
| Name | Type | Default |
|---|---|---|
path | string | — |
pathDescriptor path, not a DLL path. Use the same path spelling as the registered entry for later queries and unloading.
ReckfellExtensionManager.LoadStatusAttempt result as LoadStatus. NotLoaded means no entry or a loader skip; NeedsRestart means current initialization cannot finish without restarting. Failed requires checking logs and state.
UnloadExtensionReckfellExtensionManager.LoadStatus
public static ReckfellExtensionManager.LoadStatus UnloadExtension(string path);Deinitializes the extension and removes its manager entry. Finish using extension objects and callbacks first. Ok does not establish immediate physical DLL closure: a held ReckfellExtension reference can keep it open. Recovery mode rejects the operation.
| Name | Type | Default |
|---|---|---|
path | string | — |
pathDescriptor path, not a DLL path. Use the same path spelling as the registered entry for later queries and unloading.
ReckfellExtensionManager.LoadStatusOk after deinitialization and registry removal; NotLoaded for an unregistered path; Failed on rejection, such as recovery mode.
Signals and events3
ExtensionLoadedEvent
public static event ReckfellExtensionManager.ExtensionLoadedEventHandler ExtensionLoaded;Editor-build event after library initialization. In the current first-load path it fires before registry insertion; do not call GetExtension(path) in the handler assuming the entry already exists. Use the supplied object; the event does not certify every native method.
| Name | Type | Default |
|---|---|---|
extension | ReckfellExtension | — |
extensionExtension object supplied by the event. Use it for observation; the event does not transfer ownership of the manager lifecycle.
ExtensionUnloadingEvent
public static event ReckfellExtensionManager.ExtensionUnloadingEventHandler ExtensionUnloading;Editor-build event before class deinitialization and registry removal. The supplied extension is still available; this does not report completed DLL closure. Do not recursively unload it from this handler.
| Name | Type | Default |
|---|---|---|
extension | ReckfellExtension | — |
extensionExtension object supplied by the event. Use it for observation; the event does not transfer ownership of the manager lifecycle.
ExtensionsReloadedEvent
public static event Action ExtensionsReloaded;Notification from the editor’s changed-reloadable-library scan. Not a separate event for every direct ReloadExtension and not proof that every attempt succeeded. Ordinary LoadExtension/UnloadExtension do not emit it.
ReckfellExtensionManager.LoadStatus
| Value | Description |
|---|---|
AlreadyLoaded = 2 | The extension has already been loaded. |
Failed = 1 | The extension has failed to load, possibly because it does not exist or has missing dependencies. |
NeedsRestart = 4 | The extension requires the application to restart to fully load. |
NotLoaded = 3 | The extension has not been loaded. |
Ok = 0 | The extension has loaded successfully. |