ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Macros.h 文件参考

反射标记宏(annotate 方案)——引擎反射系统的源码侧入口 更多...

浏览该文件的源代码.

宏定义

#define SHIT_DETAIL_ANNOTATE(str)
#define SHIT_REFLECT(Mode)
#define SHIT_REFLECT_BODY(Type)
#define SHIT_ENUM(Type)
#define SHIT_META(...)
#define SHIT_METHOD   SHIT_DETAIL_ANNOTATE("shit-method")
#define SHIT_PROPERTY(Getter, Setter)

详细描述

反射标记宏(annotate 方案)——引擎反射系统的源码侧入口

用法总览(完整说明见各宏定义处的注释):

// 组件:BlackList = 反射全部字段(SHIT_META(Disable) 除外)
class SHIT_API SHIT_REFLECT(BlackList) Health : public Shit::Behavior {
public:
SHIT_META(({.displayName = "HP", .range = {0, 100}}))
float hp = 100.0f;
SHIT_PROPERTY(GetRatio, SetRatio)
float GetRatio() const;
void SetRatio(float v);
};
#define SHIT_API
定义 Core.h:14
#define SHIT_PROPERTY(Getter, Setter)
定义 Macros.h:119
#define SHIT_REFLECT_BODY(Type)
定义 Macros.h:89
#define SHIT_REFLECT(Mode)
定义 Macros.h:86
#define SHIT_META(...)
定义 Macros.h:95
行为基类 —— 用于编写自定义游戏逻辑
定义 Behavior.h:22

构建时 ReflectionScanner(libClang)扫描这些注解生成 .gen.h, 经 RegisterAllReflectedTypes() 注册进 TypeRegistry——编辑器属性面板、 .scene 序列化、Prefab 复制粘贴均依赖此链路。改过带宏的头文件后 需重扫(BUILD_TOOLS=ON 时自动)。

宏定义说明

◆ SHIT_DETAIL_ANNOTATE

#define SHIT_DETAIL_ANNOTATE ( str)

◆ SHIT_ENUM

#define SHIT_ENUM ( Type)
值:
SHIT_DETAIL_ANNOTATE("shit-enum:" #Type)
#define SHIT_DETAIL_ANNOTATE(str)
定义 Macros.h:82

◆ SHIT_META

#define SHIT_META ( ...)
值:
SHIT_DETAIL_ANNOTATE("shit-meta:" #__VA_ARGS__)

◆ SHIT_METHOD

#define SHIT_METHOD   SHIT_DETAIL_ANNOTATE("shit-method")

◆ SHIT_PROPERTY

#define SHIT_PROPERTY ( Getter,
Setter )
值:
SHIT_DETAIL_ANNOTATE("shit-property:" #Getter ":" #Setter)

◆ SHIT_REFLECT

#define SHIT_REFLECT ( Mode)
值:
SHIT_DETAIL_ANNOTATE("shit-reflection:" #Mode)

◆ SHIT_REFLECT_BODY

#define SHIT_REFLECT_BODY ( Type)
值:
friend bool Register_##Type();