ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
Toggle main menu visibility
载入中...
搜索中...
未找到
UITransform.h
浏览该文件的文档.
1
#pragma once
2
#include "
../Core/Core.h
"
3
#include "
../Component/Component.h
"
4
#include "
../Math.h
"
5
#include <SDL3/SDL_rect.h>
6
#include <optional>
7
8
namespace
Shit
{
9
class
GameObject
;
10
class
UICanvas
;
11
25
class
SHIT_API
SHIT_REFLECT
(BlackList)
UITransform
:
public
Component
{
26
SHIT_REFLECT_BODY
(
UITransform
)
27
public
:
28
UITransform
() =
default
;
29
~UITransform
()
override
=
default
;
30
32
UITransform
(
float
anchoredPositionX,
float
anchoredPositionY,
float
width,
float
height);
33
34
// --- getter & setter ---
35
const
Vector2
&
getAnchorMin
()
const
{
return
m_anchorMin; }
36
void
setAnchorMin
(
const
Vector2
& anchorMin) { m_anchorMin = anchorMin; }
37
38
const
Vector2
&
getAnchorMax
()
const
{
return
m_anchorMax; }
39
void
setAnchorMax
(
const
Vector2
& anchorMax) { m_anchorMax = anchorMax; }
40
41
const
Vector2
&
getPivot
()
const
{
return
m_pivot; }
42
void
setPivot
(
const
Vector2
& pivot) { m_pivot = pivot; }
43
44
const
Vector2
&
getAnchoredPosition
()
const
{
return
m_anchoredPosition; }
45
void
setAnchoredPosition
(
const
Vector2
& position) { m_anchoredPosition = position; }
46
47
float
getWidth
()
const
{
return
m_width; }
48
void
setWidth
(
float
width) { m_width = width; }
49
50
float
getHeight
()
const
{
return
m_height; }
51
void
setHeight
(
float
height) { m_height = height; }
52
53
int
getZIndex
()
const
{
return
m_zIndex; }
54
void
setZIndex
(
int
zIndex) { m_zIndex = zIndex; }
55
57
SDL_FRect
getScreenRect
(
const
SDL_FRect* parentRect)
const
;
58
60
SDL_FRect
resolveParentRect
()
const
;
61
62
private
:
63
SHIT_META
(({.displayName =
"Anchor Min"
, .tooltip =
"锚点左上(归一化 0-1,相对父级)"
, .range = {0, 1}, .step = 0.01}))
64
Vector2 m_anchorMin{ 0.5f, 0.5f };
65
SHIT_META
(({.displayName =
"Anchor Max"
, .tooltip =
"锚点右下(归一化 0-1,相对父级)"
, .range = {0, 1}, .step = 0.01}))
66
Vector2 m_anchorMax{ 0.5f, 0.5f };
67
SHIT_META
(({.displayName =
"Pivot"
, .tooltip =
"轴心(归一化 0-1,相对自身)"
, .range = {0, 1}, .step = 0.01}))
68
Vector2 m_pivot{ 0.5f, 0.5f };
69
SHIT_META
(({.displayName =
"Anchored Position"
, .tooltip =
"相对锚点的偏移(像素)"
}))
70
Vector2 m_anchoredPosition{ 0.0f, 0.0f };
71
SHIT_META
(({.displayName =
"Width"
, .tooltip =
"宽度(仅 anchorMin==anchorMax 轴生效)"
, .range = {0, 99999}}))
72
float
m_width = 100.0f;
73
SHIT_META
(({.displayName =
"Height"
, .tooltip =
"高度"
, .range = {0, 99999}}))
74
float
m_height = 100.0f;
75
SHIT_META
(({.displayName =
"Z-Index"
, .tooltip =
"渲染层级(值越大越靠上)"
}))
76
int
m_zIndex = 0;
77
};
78
}
Component.h
Core.h
SHIT_API
#define SHIT_API
定义
Core.h:14
SHIT_REFLECT_BODY
#define SHIT_REFLECT_BODY(Type)
定义
Macros.h:62
SHIT_REFLECT
#define SHIT_REFLECT(Mode)
定义
Macros.h:59
SHIT_META
#define SHIT_META(...)
定义
Macros.h:68
Math.h
Shit::Component::Component
Component()
Shit::GameObject
游戏物体类
定义
GameObject.h:23
Shit::UICanvas
UI 层级根节点
定义
UICanvas.h:16
Shit::UITransform::getAnchorMax
const Vector2 & getAnchorMax() const
定义
UITransform.h:38
Shit::UITransform::UITransform
UITransform(float anchoredPositionX, float anchoredPositionY, float width, float height)
便捷构造:居中锚点 + 给定偏移与尺寸
Shit::UITransform::~UITransform
~UITransform() override=default
Shit::UITransform::getScreenRect
SDL_FRect getScreenRect(const SDL_FRect *parentRect) const
计算最终屏幕空间矩形(传入已知父级矩形;nullptr 表示用 Canvas 屏幕矩形)
Shit::UITransform::setHeight
void setHeight(float height)
定义
UITransform.h:51
Shit::UITransform::setWidth
void setWidth(float width)
定义
UITransform.h:48
Shit::UITransform::setPivot
void setPivot(const Vector2 &pivot)
定义
UITransform.h:42
Shit::UITransform::getPivot
const Vector2 & getPivot() const
定义
UITransform.h:41
Shit::UITransform::setAnchoredPosition
void setAnchoredPosition(const Vector2 &position)
定义
UITransform.h:45
Shit::UITransform::setAnchorMax
void setAnchorMax(const Vector2 &anchorMax)
定义
UITransform.h:39
Shit::UITransform::setAnchorMin
void setAnchorMin(const Vector2 &anchorMin)
定义
UITransform.h:36
Shit::UITransform::getWidth
float getWidth() const
定义
UITransform.h:47
Shit::UITransform::setZIndex
void setZIndex(int zIndex)
定义
UITransform.h:54
Shit::UITransform::getZIndex
int getZIndex() const
定义
UITransform.h:53
Shit::UITransform::resolveParentRect
SDL_FRect resolveParentRect() const
自动查找父级矩形:沿 GameObject 父链找 UITransform,否则用 Canvas;二者都无返回全屏
Shit::UITransform::getAnchoredPosition
const Vector2 & getAnchoredPosition() const
定义
UITransform.h:44
Shit::UITransform::getHeight
float getHeight() const
定义
UITransform.h:50
Shit::UITransform::UITransform
UITransform()=default
Shit::UITransform::getAnchorMin
const Vector2 & getAnchorMin() const
定义
UITransform.h:35
Shit
定义
AudioPlayer.h:10
Shit::Vector2
glm::vec2 Vector2
定义
Math.h:5
include
ShitEngine
UI
UITransform.h
制作者
1.17.0