|
ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
|
动态插件管理器(引擎级共享:Runtime 与编辑器共用) 更多...
#include <PluginManager.h>
类 | |
| struct | LoadedPlugin |
| 已加载的插件信息 更多... | |
Public 类型 | |
| using | GetABIVersionFn = int (*)() |
| 插件 C ABI 函数指针类型 | |
| using | GetNameFn = const char* (*)() |
| using | GetVersionFn = const char* (*)() |
| using | RegisterTypesFn = void (*)() |
Public 成员函数 | |
| ~PluginManager () | |
| void | LoadFromConfig (const std::string &configPath) |
| 从 JSON 配置文件加载所有插件(config → "plugins": [{"path": ...}]) | |
| void | RegisterAllTypes () |
| 调用所有已加载插件的 RegisterPluginTypes() 必须在 Game::Init() 之后调用(引擎内置类型已注册) | |
| void | UnloadAll () |
| 卸载所有插件(FreeLibrary / dlclose)。注意:必须先于引擎销毁执行。 | |
| const std::vector< LoadedPlugin > & | GetPlugins () const |
| 获取已加载插件列表 | |
静态 Public 属性 | |
| static constexpr int | kAbiVersion = 2 |
| 插件 ABI 版本(插件侧通过 GetPluginABIVersion() 返回该常量) | |
动态插件管理器(引擎级共享:Runtime 与编辑器共用)
负责加载/卸载插件 DLL,调用插件的 C ABI 函数,支持从 JSON 配置文件批量加载。
插件 = 脚本库(ABI v2):只负责注册反射类型,不搭建场景(场景来自 .scene 文件)。 使用前提:调用前须处于目标 EngineContext(TypeRegistry 按上下文存放), 插件注册的类型 factory 位于 DLL 内,故 UnloadAll() 必须先于引擎销毁执行。
| using GetABIVersionFn = int (*)() |
插件 C ABI 函数指针类型
| using GetNameFn = const char* (*)() |
| using GetVersionFn = const char* (*)() |
| using RegisterTypesFn = void (*)() |
|
inline |
|
inline |
获取已加载插件列表
| void LoadFromConfig | ( | const std::string & | configPath | ) |
从 JSON 配置文件加载所有插件(config → "plugins": [{"path": ...}])
| configPath | 配置文件路径(相对于 CWD) |
| void RegisterAllTypes | ( | ) |
调用所有已加载插件的 RegisterPluginTypes() 必须在 Game::Init() 之后调用(引擎内置类型已注册)
| void UnloadAll | ( | ) |
卸载所有插件(FreeLibrary / dlclose)。注意:必须先于引擎销毁执行。
|
staticconstexpr |
插件 ABI 版本(插件侧通过 GetPluginABIVersion() 返回该常量)