ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
SpriteRenderer.h
浏览该文件的文档.
1#pragma once
2#include "../Core/Config.h"
3#include "RendererComponent.h"
4#include "../Render/Sprite.h"
5
6#include <optional>
7#include <SDL3/SDL_rect.h>
8
9struct SDL_Texture;
10
11namespace Shit {
12 class CameraComponent;
13 class GameObject;
14
23 friend class GameObject;
24 public:
25 SpriteRenderer() = default;
26 ~SpriteRenderer() override = default;
27
28 void onRender(SDL_Renderer* renderer, const CameraComponent* camera) const override;
29
30 // --- setter & getter ---
31 void setTexturePath(const std::string& texturePath); // 非内联:含纹理存在性检查
32 const std::string& getTexturePath() const { return m_sprite.getTexturePath(); }
33
34 void setSourceRect(const std::optional<SDL_FRect>& sourceRect) { m_sprite.setSourceRect(sourceRect); }
35 const std::optional<SDL_FRect>& getSourceRect() const { return m_sprite.getSourceRect(); }
36
37 void setFlipped(bool flipped) { m_sprite.setFlipped(flipped); }
38 bool isFlipped() const { return m_sprite.isFlipped(); }
39
40 SDL_FRect getGlobalBounds() override;
41 private:
42 Sprite m_sprite; // 描述"画什么"的数据
43 };
44}
#define SHIT_API
定义 Core.h:12
相机组件,定义"从哪个角度观察世界"
定义 CameraComponent.h:15
游戏物体类
定义 GameObject.h:22
精灵数据,描述"画什么"
定义 Sprite.h:14
friend class GameObject
定义 SpriteRenderer.h:23
SDL_FRect getGlobalBounds() override
世界坐标下的轴对齐包围盒
void setTexturePath(const std::string &texturePath)
SpriteRenderer()=default
void setSourceRect(const std::optional< SDL_FRect > &sourceRect)
定义 SpriteRenderer.h:34
~SpriteRenderer() override=default
const std::string & getTexturePath() const
定义 SpriteRenderer.h:32
const std::optional< SDL_FRect > & getSourceRect() const
定义 SpriteRenderer.h:35
void setFlipped(bool flipped)
定义 SpriteRenderer.h:37
void onRender(SDL_Renderer *renderer, const CameraComponent *camera) const override
纯虚:子类实现绘制逻辑
bool isFlipped() const
定义 SpriteRenderer.h:38
定义 AudioPlayer.h:9