ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
RenderSystem.h
浏览该文件的文档.
1#pragma once
2#include "../Core/Core.h"
3#include "../Math.h"
5
6struct SDL_Renderer;
7
8namespace Shit {
9 class CameraComponent;
11
18class SHIT_API SHIT_REFLECT(WhiteList) RenderSystem final : public System {
20public:
21 RenderSystem(int priority = 100);
22 ~RenderSystem() override;
23
24 void update() override;
25 void destroy() override;
26
27 // 组件认领:RendererComponent + CameraComponent
28 bool onComponentAttached(Component* component) override;
29 void onComponentDetached(Component* component) override;
30
35
36 private:
37 void compactRenderers();
38 void compactCameras();
39
40 SDL_Renderer* m_renderer = nullptr;
41
42 std::vector<RendererComponent*> m_renderers;
43 bool m_isRenderersNeedSort = false;
44
45 std::vector<CameraComponent*> m_cameras;
46 bool m_isCamerasNeedSort = false;
47 };
48}
#define SHIT_API
定义 Core.h:14
#define SHIT_REFLECT_BODY(Type)
定义 Macros.h:89
#define SHIT_REFLECT(Mode)
定义 Macros.h:86
相机组件,定义"从哪个角度观察世界"
定义 CameraComponent.h:16
组件基类
定义 Component.h:25
RenderSystem(int priority=100)
void unregisterRenderer(RendererComponent *renderer)
注销渲染组件
void unregisterCamera(CameraComponent *camera)
注销相机
void update() override
每帧更新(纯虚)
bool onComponentAttached(Component *component) override
组件挂载时调用。返回 true 表示本系统认领并处理了该组件(组件据此确定已注册)。
void onComponentDetached(Component *component) override
组件卸下时调用。
void registerCamera(CameraComponent *camera)
注册相机
~RenderSystem() override
void registerRenderer(RendererComponent *renderer)
注册渲染组件
void destroy() override
销毁(纯虚)
渲染组件基类
定义 RendererComponent.h:18
System(int priority=0)
定义 AnimationClip.h:12