ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
BehaviorSystem.h
浏览该文件的文档.
1#pragma once
2#include "System.h"
4
5namespace Shit {
6 class Behavior;
7
14 class SHIT_API SHIT_REFLECT(WhiteList) BehaviorSystem final : public System {
16 public:
17 BehaviorSystem(int priority = 0);
18 ~BehaviorSystem() override;
19
20 void update() override;
22 void fixedUpdate(float fixedDt) override;
23 void destroy() override;
24
25 // 组件认领:Behavior 及其子类(如 AnimationComponent)
26 bool onComponentAttached(Component* component) override;
27 void onComponentDetached(Component* component) override;
28
29 void registerBehavior(Behavior *behavior);
30 void unregisterBehavior(Behavior *behavior);
31
35
36 private:
37 std::vector<Behavior*> m_behaviors;
38 std::vector<Behavior*> m_pendingBehaviors;
39
41 void flushPendingBehaviors();
43 void compactTombstones();
44 };
45}
#define SHIT_API
定义 Core.h:14
反射标记宏(annotate 方案)——引擎反射系统的源码侧入口
#define SHIT_REFLECT_BODY(Type)
定义 Macros.h:89
#define SHIT_REFLECT(Mode)
定义 Macros.h:86
行为基类 —— 用于编写自定义游戏逻辑
定义 Behavior.h:22
void update() override
每帧更新(纯虚)
void fixedUpdate(float fixedDt) override
固定步阶段(Scene 固定步循环节拍调用):补跑 onStart 后驱动 onFixedUpdate(fixedDt)
BehaviorSystem(int priority=0)
bool onComponentAttached(Component *component) override
组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。
void onComponentDetached(Component *component) override
组件卸下时调用。
void unregisterBehavior(Behavior *behavior)
注销 Behavior(onDetach 时自动调用)
~BehaviorSystem() override
void resetAllBehaviors()
重置全部 Behavior 的启动标志(isStarted=false)——进入运行态时调用, 使 onStart 在运行第一帧重新执行(Unity 式「每次运行从头开始」)。
void registerBehavior(Behavior *behavior)
注册 Behavior(onAttach 时自动调用)
void destroy() override
销毁(纯虚)
组件基类
定义 Component.h:25
System(int priority=0)
定义 AnimationClip.h:12