ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
RendererComponent.h
浏览该文件的文档.
1#pragma once
2#include "../Core/Core.h"
3#include "Component.h"
4#include "../Math.h"
5#include <SDL3/SDL_rect.h>
6
7struct SDL_Renderer;
8
9namespace Shit {
10 class CameraComponent;
11
20 public:
22 ~RendererComponent() override = default;
23
24 void onAttach() override;
25 void onDetach() override;
26 virtual void onRender(SDL_Renderer* renderer, const CameraComponent* camera) const = 0;
27 void onDestroy() override;
28
29 // --- getter & setter ---
30 int getZIndex() const { return m_zIndex; }
31 bool isVisible() const { return m_isVisible; }
32 virtual SDL_FRect getGlobalBounds() = 0;
33
34 void setZIndex(int zIndex) { m_zIndex = zIndex; }
36
37 protected:
38 SHIT_META(({.displayName = "Z-Index", .tooltip = "渲染层级(值越大越靠上)"}))
39 int m_zIndex = 0;
40 SHIT_META(({.displayName = "Visible"}))
41 bool m_isVisible = true;
42 };
43}
#define SHIT_API
定义 Core.h:14
#define SHIT_REFLECT_BODY(Type)
定义 Macros.h:62
#define SHIT_REFLECT(Mode)
定义 Macros.h:59
#define SHIT_META(...)
定义 Macros.h:68
相机组件,定义"从哪个角度观察世界"
定义 CameraComponent.h:16
int m_zIndex
定义 RendererComponent.h:39
~RendererComponent() override=default
virtual void onRender(SDL_Renderer *renderer, const CameraComponent *camera) const =0
纯虚:子类实现绘制逻辑
virtual SDL_FRect getGlobalBounds()=0
世界坐标下的轴对齐包围盒
void setVisible(bool isVisible)
定义 RendererComponent.h:35
bool isVisible() const
是否可见
定义 RendererComponent.h:31
void setZIndex(int zIndex)
定义 RendererComponent.h:34
void onAttach() override
bool m_isVisible
定义 RendererComponent.h:41
void onDetach() override
int getZIndex() const
渲染层级,值越大越靠上
定义 RendererComponent.h:30
void onDestroy() override
定义 AudioPlayer.h:10