Extra2D/examples/hello_module/hello_module.h

79 lines
1.3 KiB
C++

#pragma once
#include <extra2d/core/export.h>
#include <extra2d/core/module.h>
#include <string>
namespace extra2d {
/**
* @brief Hello模块配置数据结构
*/
struct HelloModuleConfigData {
std::string greeting = "Hello, Extra2D!";
int repeatCount = 1;
bool enableLogging = true;
};
/**
* @brief Hello模块
*
* 这是一个简单的自定义模块示例,展示如何:
* 1. 继承 Module 基类
* 2. 实现生命周期方法
* 3. 使用 E2D_MODULE 宏自动注册模块
*/
class HelloModule : public Module {
public:
/**
* @brief 构造函数
*/
HelloModule();
/**
* @brief 析构函数
*/
~HelloModule() override;
/**
* @brief 获取模块名称
*/
const char *getName() const override { return "HelloModule"; }
/**
* @brief 获取模块优先级
*/
int getPriority() const override { return 1000; }
/**
* @brief 设置模块
*/
void setupModule() override;
/**
* @brief 销毁模块
*/
void destroyModule() override;
/**
* @brief 更新时
*/
void onUpdate(UpdateContext &ctx) override;
/**
* @brief 设置配置
*/
void setConfig(const HelloModuleConfigData &config) { config_ = config; }
/**
* @brief 执行问候操作
*/
void sayHello() const;
private:
HelloModuleConfigData config_;
float time_ = 0.0f;
};
} // namespace extra2d