refactor: 统一方法命名风格,使用更简洁的getter命名

将get前缀的getter方法统一改为更简洁的属性风格命名,例如getPosition()改为pos(),getRotation()改为rot()等,提升代码一致性和可读性

- 修改Window、Sound、Tween、Sprite等类的方法命名
- 更新所有调用点以适应新的命名风格
- 保持原有功能不变,仅重构命名
This commit is contained in:
ChestnutYueyue 2026-02-26 00:38:31 +08:00
parent 0f520c8e37
commit 377ec373b0
36 changed files with 216 additions and 211 deletions

View File

@ -18,17 +18,17 @@ public:
Rect getBoundingBox() const override {
// 返回实际的矩形边界
Vec2 pos = getPosition();
return Rect(pos.x - width_ / 2, pos.y - height_ / 2, width_, height_);
Vec2 position = pos();
return Rect(position.x - width_ / 2, position.y - height_ / 2, width_, height_);
}
void onRender(RenderBackend &renderer) override {
Vec2 pos = getPosition();
Vec2 position = pos();
// 绘制填充矩形
Color fillColor = isColliding_ ? Color(1.0f, 0.2f, 0.2f, 0.8f) : color_;
renderer.fillRect(
Rect(pos.x - width_ / 2, pos.y - height_ / 2, width_, height_),
Rect(position.x - width_ / 2, position.y - height_ / 2, width_, height_),
fillColor);
// 绘制边框
@ -36,7 +36,7 @@ public:
: Color(1.0f, 1.0f, 1.0f, 0.5f);
float borderWidth = isColliding_ ? 3.0f : 2.0f;
renderer.drawRect(
Rect(pos.x - width_ / 2, pos.y - height_ / 2, width_, height_),
Rect(position.x - width_ / 2, position.y - height_ / 2, width_, height_),
borderColor, borderWidth);
}

View File

@ -95,8 +95,8 @@ void BaseScene::renderContent(extra2d::RenderBackend &renderer) {
// 检查当前场景是否作为 TransitionScene 的子场景被渲染
bool isChildOfTransition = false;
if (auto parent = getParent()) {
if (dynamic_cast<extra2d::TransitionScene *>(parent.get())) {
if (auto parentNode = parent()) {
if (dynamic_cast<extra2d::TransitionScene *>(parentNode.get())) {
isChildOfTransition = true;
}
}

View File

@ -107,8 +107,8 @@ void GameScene::onUpdate(float dt) {
if (pipes_) {
Pipe *firstPipe = pipes_->getPipe(0);
if (firstPipe && !firstPipe->scored) {
float birdX = bird_->getPosition().x;
float pipeX = firstPipe->getPosition().x;
float birdX = bird_->pos().x;
float pipeX = firstPipe->pos().x;
if (pipeX <= birdX) {
score_++;
scoreNumber_->setNumber(score_);
@ -122,9 +122,9 @@ void GameScene::onUpdate(float dt) {
onHit();
}
if (bird_->isLiving() && GAME_HEIGHT - bird_->getPosition().y <= 123.0f) {
if (bird_->isLiving() && GAME_HEIGHT - bird_->pos().y <= 123.0f) {
bird_->setPosition(
extra2d::Vec2(bird_->getPosition().x, GAME_HEIGHT - 123.0f));
extra2d::Vec2(bird_->pos().x, GAME_HEIGHT - 123.0f));
bird_->setStatus(Bird::Status::Still);
onHit();
}

View File

@ -108,17 +108,17 @@ void Bird::fall(float dt) {
if (!living_) return;
// 更新垂直位置
extra2d::Vec2 pos = getPosition();
pos.y += speed_ * dt;
setPosition(pos);
extra2d::Vec2 position = pos();
position.y += speed_ * dt;
setPosition(position);
// 应用重力
speed_ += gravity * dt;
// 限制顶部边界
if (pos.y < 0) {
pos.y = 0;
setPosition(pos);
if (position.y < 0) {
position.y = 0;
setPosition(position);
speed_ = 0;
}
@ -181,12 +181,12 @@ void Bird::setStatus(Status status) {
}
extra2d::Rect Bird::getBoundingBox() const {
extra2d::Vec2 pos = getPosition();
extra2d::Vec2 position = pos();
// 小鸟碰撞框大小约为 24x24
float halfSize = 12.0f;
return extra2d::Rect(
pos.x - halfSize,
pos.y - halfSize,
position.x - halfSize,
position.y - halfSize,
halfSize * 2.0f,
halfSize * 2.0f
);

View File

@ -47,8 +47,8 @@ void Ground::onUpdate(float dt) {
float groundWidth = ground1_->getTextureRect().size.width;
// 移动两块地面
extra2d::Vec2 pos1 = ground1_->getPosition();
extra2d::Vec2 pos2 = ground2_->getPosition();
extra2d::Vec2 pos1 = ground1_->pos();
extra2d::Vec2 pos2 = ground2_->pos();
pos1.x -= speed * dt;
pos2.x -= speed * dt;

View File

@ -57,7 +57,7 @@ Pipe::~Pipe() = default;
extra2d::Rect Pipe::getBoundingBox() const {
// 返回整个水管的边界框(包含上下两根)
extra2d::Vec2 pos = getPosition();
extra2d::Vec2 position = pos();
// 水管宽度约为 52
float pipeWidth = 52.0f;
@ -67,7 +67,7 @@ extra2d::Rect Pipe::getBoundingBox() const {
float screenHeight = GAME_HEIGHT;
return extra2d::Rect(
pos.x - halfWidth,
position.x - halfWidth,
0.0f,
pipeWidth,
screenHeight
@ -77,16 +77,16 @@ extra2d::Rect Pipe::getBoundingBox() const {
extra2d::Rect Pipe::getTopPipeBox() const {
if (!topPipe_) return extra2d::Rect();
extra2d::Vec2 pos = getPosition();
extra2d::Vec2 topPos = topPipe_->getPosition();
extra2d::Vec2 position = pos();
extra2d::Vec2 topPos = topPipe_->pos();
// 上水管尺寸
float pipeWidth = 52.0f;
float pipeHeight = 320.0f;
return extra2d::Rect(
pos.x - pipeWidth / 2.0f,
pos.y + topPos.y - pipeHeight,
position.x - pipeWidth / 2.0f,
position.y + topPos.y - pipeHeight,
pipeWidth,
pipeHeight
);
@ -95,16 +95,16 @@ extra2d::Rect Pipe::getTopPipeBox() const {
extra2d::Rect Pipe::getBottomPipeBox() const {
if (!bottomPipe_) return extra2d::Rect();
extra2d::Vec2 pos = getPosition();
extra2d::Vec2 bottomPos = bottomPipe_->getPosition();
extra2d::Vec2 position = pos();
extra2d::Vec2 bottomPos = bottomPipe_->pos();
// 下水管尺寸
float pipeWidth = 52.0f;
float pipeHeight = 320.0f;
return extra2d::Rect(
pos.x - pipeWidth / 2.0f,
pos.y + bottomPos.y,
position.x - pipeWidth / 2.0f,
position.y + bottomPos.y,
pipeWidth,
pipeHeight
);

View File

@ -40,20 +40,20 @@ void Pipes::onUpdate(float dt) {
// 移动所有水管
for (int i = 0; i < pipeCount_; ++i) {
if (pipes_[i]) {
extra2d::Vec2 pos = pipes_[i]->getPosition();
extra2d::Vec2 pos = pipes_[i]->pos();
pos.x -= pipeSpeed * dt;
pipes_[i]->setPosition(pos);
}
}
// 检查最前面的水管是否移出屏幕
if (pipes_[0] && pipes_[0]->getPosition().x <= -30.0f) {
if (pipes_[0] && pipes_[0]->pos().x <= -30.0f) {
// 移除第一个水管(通过名称查找并移除)
// 由于 removeChild 需要 Ptr<Node>,我们使用 removeChildByName 或直接操作
// 这里我们直接移除第一个子节点(假设它是水管)
auto children = getChildren();
if (!children.empty()) {
removeChild(children[0]);
auto childNodes = children();
if (!childNodes.empty()) {
removeChild(childNodes[0]);
}
// 将后面的水管前移
@ -83,7 +83,7 @@ void Pipes::addPipe() {
));
} else {
// 其他水管在前一个水管后方
float prevX = pipes_[pipeCount_ - 1]->getPosition().x;
float prevX = pipes_[pipeCount_ - 1]->pos().x;
pipe->setPosition(extra2d::Vec2(prevX + pipeSpacing, 0.0f));
}

View File

@ -106,8 +106,8 @@ void BaseScene::renderContent(extra2d::RenderBackend &renderer) {
// 检查当前场景是否作为 TransitionScene 的子场景被渲染
bool isChildOfTransition = false;
if (auto parent = getParent()) {
if (dynamic_cast<extra2d::TransitionScene *>(parent.get())) {
if (auto parentNode = parent()) {
if (dynamic_cast<extra2d::TransitionScene *>(parentNode.get())) {
isChildOfTransition = true;
}
}

View File

@ -30,7 +30,7 @@ void StartScene::onEnter() {
auto &app = extra2d::Application::instance();
auto &resources = app.resources();
if (getChildren().empty()) {
if (children().empty()) {
// 使用游戏逻辑分辨率
float screenW = GAME_WIDTH;
float screenH = GAME_HEIGHT;

View File

@ -27,7 +27,7 @@ void SuccessScene::onEnter() {
auto& app = extra2d::Application::instance();
auto& resources = app.resources();
if (getChildren().empty()) {
if (children().empty()) {
// 使用游戏逻辑分辨率
float screenW = GAME_WIDTH;
float screenH = GAME_HEIGHT;

View File

@ -34,7 +34,12 @@ int main(int argc, char **argv)
}
// 初始化存储系统
// 在 Windows 上使用当前工作目录,在 Switch 上使用 sdmc:/
#ifdef __SWITCH__
pushbox::initStorage("sdmc:/");
#else
pushbox::initStorage(".");
#endif
pushbox::g_CurrentLevel = pushbox::loadCurrentLevel(1);
if (pushbox::g_CurrentLevel > MAX_LEVEL) {
pushbox::g_CurrentLevel = 1;

View File

@ -39,39 +39,39 @@ public:
// 必须实现 getBoundingBox() 才能参与空间索引碰撞检测
Rect getBoundingBox() const override {
Vec2 pos = getPosition();
return Rect(pos.x - size_ / 2, pos.y - size_ / 2, size_, size_);
Vec2 position = pos();
return Rect(position.x - size_ / 2, position.y - size_ / 2, size_, size_);
}
void update(float dt, float screenWidth, float screenHeight) {
Vec2 pos = getPosition();
pos = pos + velocity_ * dt;
Vec2 position = pos();
position = position + velocity_ * dt;
// 边界反弹
if (pos.x < size_ / 2 || pos.x > screenWidth - size_ / 2) {
if (position.x < size_ / 2 || position.x > screenWidth - size_ / 2) {
velocity_.x = -velocity_.x;
pos.x = std::clamp(pos.x, size_ / 2, screenWidth - size_ / 2);
position.x = std::clamp(position.x, size_ / 2, screenWidth - size_ / 2);
}
if (pos.y < size_ / 2 || pos.y > screenHeight - size_ / 2) {
if (position.y < size_ / 2 || position.y > screenHeight - size_ / 2) {
velocity_.y = -velocity_.y;
pos.y = std::clamp(pos.y, size_ / 2, screenHeight - size_ / 2);
position.y = std::clamp(position.y, size_ / 2, screenHeight - size_ / 2);
}
setPosition(pos);
setPosition(position);
}
void onRender(RenderBackend &renderer) override {
Vec2 pos = getPosition();
Vec2 position = pos();
// 碰撞时变红色
Color fillColor = isColliding_ ? Color(1.0f, 0.2f, 0.2f, 0.9f) : color_;
renderer.fillRect(Rect(pos.x - size_ / 2, pos.y - size_ / 2, size_, size_),
renderer.fillRect(Rect(position.x - size_ / 2, position.y - size_ / 2, size_, size_),
fillColor);
// 绘制边框
Color borderColor = isColliding_ ? Color(1.0f, 0.0f, 0.0f, 1.0f)
: Color(0.3f, 0.3f, 0.3f, 0.5f);
renderer.drawRect(Rect(pos.x - size_ / 2, pos.y - size_ / 2, size_, size_),
renderer.drawRect(Rect(position.x - size_ / 2, position.y - size_ / 2, size_, size_),
borderColor, 1.0f);
}
@ -125,7 +125,7 @@ public:
auto startTime = std::chrono::high_resolution_clock::now();
// 更新所有物理节点位置
for (const auto &child : getChildren()) {
for (const auto &child : children()) {
if (auto node = dynamic_cast<PhysicsNode *>(child.get())) {
node->update(dt, screenWidth_, screenHeight_);
}
@ -330,7 +330,7 @@ private:
*/
size_t getPhysicsNodeCount() const {
size_t count = 0;
for (const auto &child : getChildren()) {
for (const auto &child : children()) {
if (dynamic_cast<PhysicsNode *>(child.get())) {
++count;
}
@ -343,7 +343,7 @@ private:
*/
std::vector<PhysicsNode *> getPhysicsNodes() const {
std::vector<PhysicsNode *> nodes;
for (const auto &child : getChildren()) {
for (const auto &child : children()) {
if (auto node = dynamic_cast<PhysicsNode *>(child.get())) {
nodes.push_back(node);
}
@ -378,7 +378,7 @@ private:
// 从后往前移除指定数量的节点
for (size_t i = 0; i < count; ++i) {
// 找到最后一个物理节点对应的子节点并移除
for (auto it = getChildren().rbegin(); it != getChildren().rend(); ++it) {
for (auto it = children().rbegin(); it != children().rend(); ++it) {
if (dynamic_cast<PhysicsNode *>(it->get())) {
removeChild(*it);
break;
@ -413,7 +413,7 @@ private:
*/
void performCollisionDetection() {
// 清除之前的碰撞状态
for (const auto &child : getChildren()) {
for (const auto &child : children()) {
if (auto node = dynamic_cast<PhysicsNode *>(child.get())) {
node->setColliding(false);
}

View File

@ -56,7 +56,7 @@ public:
// ------ 名称(用于缓存索引)------
void setName(const std::string &name) { name_ = name; }
const std::string &getName() const { return name_; }
const std::string &name() const { return name_; }
// ------ 有效性检查 ------
bool isValid() const { return texture_ != nullptr; }

View File

@ -99,7 +99,7 @@ public:
float getTotalDuration() const;
void setName(const std::string &name) { name_ = name; }
const std::string &getName() const { return name_; }
const std::string &name() const { return name_; }
private:
Node *target_ = nullptr;

View File

@ -38,7 +38,7 @@ public:
void setCursor(float seconds);
const std::string& getFilePath() const { return filePath_; }
const std::string& getName() const { return name_; }
const std::string& name() const { return name_; }
private:
friend class AudioEngine;

View File

@ -22,10 +22,10 @@ public:
// ------------------------------------------------------------------------
void setPosition(const Vec2 &position);
void setPosition(float x, float y);
Vec2 getPosition() const { return position_; }
Vec2 pos() const { return position_; }
void setRotation(float degrees);
float getRotation() const { return rotation_; }
float rot() const { return rotation_; }
void setZoom(float zoom);
float getZoom() const { return zoom_; }

View File

@ -76,7 +76,7 @@ public:
int getWidth() const { return width_; }
int getHeight() const { return height_; }
Size getSize() const { return Size(static_cast<float>(width_), static_cast<float>(height_)); }
Vec2 getPosition() const;
Vec2 pos() const;
bool isFullscreen() const { return fullscreen_; }
bool isVSync() const { return vsync_; }

View File

@ -44,39 +44,39 @@ public:
void removeFromParent();
void removeAllChildren();
Ptr<Node> getParent() const { return parent_.lock(); }
const std::vector<Ptr<Node>> &getChildren() const { return children_; }
Ptr<Node> getChildByName(const std::string &name) const;
Ptr<Node> getChildByTag(int tag) const;
Ptr<Node> parent() const { return parent_.lock(); }
const std::vector<Ptr<Node>> &children() const { return children_; }
Ptr<Node> childByName(const std::string &name) const;
Ptr<Node> childByTag(int tag) const;
// ------------------------------------------------------------------------
// 变换属性
// ------------------------------------------------------------------------
void setPosition(const Vec2 &pos);
void setPosition(float x, float y);
Vec2 getPosition() const { return position_; }
Vec2 pos() const { return position_; }
void setRotation(float degrees);
float getRotation() const { return rotation_; }
float rot() const { return rotation_; }
void setScale(const Vec2 &scale);
void setScale(float scale);
void setScale(float x, float y);
Vec2 getScale() const { return scale_; }
Vec2 scale() const { return scale_; }
void setAnchor(const Vec2 &anchor);
void setAnchor(float x, float y);
Vec2 getAnchor() const { return anchor_; }
Vec2 anchor() const { return anchor_; }
void setSkew(const Vec2 &skew);
void setSkew(float x, float y);
Vec2 getSkew() const { return skew_; }
Vec2 skew() const { return skew_; }
void setOpacity(float opacity);
float getOpacity() const { return opacity_; }
float opacity() const { return opacity_; }
void setVisible(bool visible);
bool isVisible() const { return visible_; }
bool visible() const { return visible_; }
/**
* @brief
@ -89,16 +89,16 @@ public:
* @brief X轴翻转
*/
void setFlipX(bool flipX);
bool isFlipX() const { return flipX_; }
bool flipX() const { return flipX_; }
/**
* @brief Y轴翻转
*/
void setFlipY(bool flipY);
bool isFlipY() const { return flipY_; }
bool flipY() const { return flipY_; }
void setZOrder(int zOrder);
int getZOrder() const { return zOrder_; }
int zOrder() const { return zOrder_; }
// ------------------------------------------------------------------------
// 世界变换
@ -130,10 +130,10 @@ public:
// 名称和标签
// ------------------------------------------------------------------------
void setName(const std::string &name) { name_ = name; }
const std::string &getName() const { return name_; }
const std::string &name() const { return name_; }
void setTag(int tag) { tag_ = tag; }
int getTag() const { return tag_; }
int tag() const { return tag_; }
// ------------------------------------------------------------------------
// 生命周期回调

View File

@ -29,8 +29,8 @@ public:
// 翻转
void setFlipX(bool flip);
void setFlipY(bool flip);
bool isFlipX() const { return flipX_; }
bool isFlipY() const { return flipY_; }
bool flipX() const { return flipX_; }
bool flipY() const { return flipY_; }
// 静态创建方法
static Ptr<Sprite> create();

View File

@ -50,10 +50,10 @@ public:
started_ = true;
if (target_) {
startPos_ = target_->getPosition();
startScale_ = target_->getScale();
startRotation_ = target_->getRotation();
startOpacity_ = target_->getOpacity();
startPos_ = target_->pos();
startScale_ = target_->scale();
startRotation_ = target_->rot();
startOpacity_ = target_->opacity();
}
}

View File

@ -301,7 +301,7 @@ void Window::setResizable(bool resizable) {
}
}
Vec2 Window::getPosition() const {
Vec2 Window::pos() const {
if (sdlWindow_) {
int x, y;
SDL_GetWindowPosition(sdlWindow_, &x, &y);

View File

@ -25,11 +25,11 @@ void Node::addChild(Ptr<Node> child) {
childrenOrderDirty_ = true;
// 更新索引
if (!child->getName().empty()) {
nameIndex_[child->getName()] = child;
if (!child->name().empty()) {
nameIndex_[child->name()] = child;
}
if (child->getTag() != -1) {
tagIndex_[child->getTag()] = child;
if (child->tag() != -1) {
tagIndex_[child->tag()] = child;
}
if (running_) {
@ -57,11 +57,11 @@ void Node::addChildren(std::vector<Ptr<Node>> &&children) {
children_.push_back(child);
// 更新索引
if (!child->getName().empty()) {
nameIndex_[child->getName()] = child;
if (!child->name().empty()) {
nameIndex_[child->name()] = child;
}
if (child->getTag() != -1) {
tagIndex_[child->getTag()] = child;
if (child->tag() != -1) {
tagIndex_[child->tag()] = child;
}
if (running_) {
@ -91,11 +91,11 @@ void Node::removeChild(Ptr<Node> child) {
(*it)->onExit();
}
// 从索引中移除
if (!(*it)->getName().empty()) {
nameIndex_.erase((*it)->getName());
if (!(*it)->name().empty()) {
nameIndex_.erase((*it)->name());
}
if ((*it)->getTag() != -1) {
tagIndex_.erase((*it)->getTag());
if ((*it)->tag() != -1) {
tagIndex_.erase((*it)->tag());
}
(*it)->parent_.reset();
children_.erase(it);
@ -103,7 +103,7 @@ void Node::removeChild(Ptr<Node> child) {
}
void Node::removeChildByName(const std::string &name) {
auto child = getChildByName(name);
auto child = childByName(name);
if (child) {
removeChild(child);
}
@ -138,7 +138,7 @@ void Node::removeAllChildren() {
tagIndex_.clear();
}
Ptr<Node> Node::getChildByName(const std::string &name) const {
Ptr<Node> Node::childByName(const std::string &name) const {
// 使用哈希索引O(1) 查找
auto it = nameIndex_.find(name);
if (it != nameIndex_.end()) {
@ -147,7 +147,7 @@ Ptr<Node> Node::getChildByName(const std::string &name) const {
return nullptr;
}
Ptr<Node> Node::getChildByTag(int tag) const {
Ptr<Node> Node::childByTag(int tag) const {
// 使用哈希索引O(1) 查找
auto it = tagIndex_.find(tag);
if (it != tagIndex_.end()) {
@ -424,10 +424,10 @@ void Node::sortChildren() {
// 插入排序
for (size_t i = 1; i < n; ++i) {
auto key = children_[i];
int keyZOrder = key->getZOrder();
int keyZOrder = key->zOrder();
int j = static_cast<int>(i) - 1;
while (j >= 0 && children_[j]->getZOrder() > keyZOrder) {
while (j >= 0 && children_[j]->zOrder() > keyZOrder) {
children_[j + 1] = children_[j];
--j;
}
@ -437,7 +437,7 @@ void Node::sortChildren() {
// 大数组使用标准排序
std::sort(children_.begin(), children_.end(),
[](const Ptr<Node> &a, const Ptr<Node> &b) {
return a->getZOrder() < b->getZOrder();
return a->zOrder() < b->zOrder();
});
}

View File

@ -23,7 +23,7 @@ void Scene::setViewportSize(const Size &size) {
}
void Scene::renderScene(RenderBackend &renderer) {
if (!isVisible())
if (!visible())
return;
// Begin frame with background color
@ -33,7 +33,7 @@ void Scene::renderScene(RenderBackend &renderer) {
}
void Scene::renderContent(RenderBackend &renderer) {
if (!isVisible())
if (!visible())
return;
// 在渲染前批量更新所有节点的世界变换
@ -119,7 +119,7 @@ std::vector<std::pair<Node *, Node *>> Scene::queryCollisions() const {
void Scene::collectRenderCommands(std::vector<RenderCommand> &commands,
int parentZOrder) {
if (!isVisible())
if (!visible())
return;
// 从场景的子节点开始收集渲染命令

View File

@ -17,14 +17,14 @@ namespace extra2d {
namespace {
Node *hitTestTopmost(const Ptr<Node> &node, const Vec2 &worldPos) {
if (!node || !node->isVisible()) {
if (!node || !node->visible()) {
return nullptr;
}
std::vector<Ptr<Node>> children = node->getChildren();
std::vector<Ptr<Node>> children = node->children();
std::stable_sort(children.begin(), children.end(),
[](const Ptr<Node> &a, const Ptr<Node> &b) {
return a->getZOrder() < b->getZOrder();
return a->zOrder() < b->zOrder();
});
for (auto it = children.rbegin(); it != children.rend(); ++it) {
@ -365,7 +365,7 @@ void SceneManager::popToScene(const std::string &name) {
while (!sceneStack_.empty()) {
auto scene = sceneStack_.top();
if (scene->getName() == name) {
if (scene->name() == name) {
target = scene;
break;
}
@ -449,7 +449,7 @@ Ptr<Scene> SceneManager::getSceneByName(const std::string &name) const {
auto tempStack = sceneStack_;
while (!tempStack.empty()) {
auto scene = tempStack.top();
if (scene->getName() == name) {
if (scene->name() == name) {
return scene;
}
tempStack.pop();

View File

@ -129,7 +129,7 @@ Rect ShapeNode::getBoundingBox() const {
return Rect();
}
Vec2 offset = getPosition();
Vec2 offset = pos();
if (shapeType_ == ShapeType::Circle && points_.size() >= 2) {
float radius = std::abs(points_[1].x);
@ -171,7 +171,7 @@ void ShapeNode::onDraw(RenderBackend &renderer) {
return;
}
Vec2 offset = getPosition();
Vec2 offset = pos();
switch (shapeType_) {
case ShapeType::Point:
@ -254,7 +254,7 @@ void ShapeNode::generateRenderCommand(std::vector<RenderCommand> &commands,
return;
}
Vec2 offset = getPosition();
Vec2 offset = pos();
RenderCommand cmd;
cmd.layer = zOrder;

View File

@ -51,14 +51,14 @@ Rect Sprite::getBoundingBox() const {
float width = textureRect_.width();
float height = textureRect_.height();
auto pos = getPosition();
auto anchor = getAnchor();
auto scale = getScale();
auto position = pos();
auto anchorPt = anchor();
auto scaleVal = scale();
float w = width * scale.x;
float h = height * scale.y;
float x0 = pos.x - width * anchor.x * scale.x;
float y0 = pos.y - height * anchor.y * scale.y;
float w = width * scaleVal.x;
float h = height * scaleVal.y;
float x0 = position.x - width * anchorPt.x * scaleVal.x;
float y0 = position.y - height * anchorPt.y * scaleVal.y;
float x1 = x0 + w;
float y1 = y0 + h;
@ -89,7 +89,7 @@ void Sprite::onDraw(RenderBackend &renderer) {
float worldScaleY =
glm::length(glm::vec2(worldTransform[1][0], worldTransform[1][1]));
auto anchor = getAnchor();
auto anchorPt = anchor();
// 锚点由 RenderBackend 在绘制时处理,这里只传递位置和尺寸
Rect destRect(worldX, worldY, width * worldScaleX, height * worldScaleY);
@ -109,7 +109,7 @@ void Sprite::onDraw(RenderBackend &renderer) {
float worldRotation = std::atan2(worldTransform[0][1], worldTransform[0][0]);
renderer.drawSprite(*texture_, destRect, srcRect, color_, worldRotation,
anchor);
anchorPt);
}
void Sprite::generateRenderCommand(std::vector<RenderCommand> &commands,
@ -135,7 +135,7 @@ void Sprite::generateRenderCommand(std::vector<RenderCommand> &commands,
float worldScaleY =
glm::length(glm::vec2(worldTransform[1][0], worldTransform[1][1]));
auto anchor = getAnchor();
auto anchorPt = anchor();
// 锚点由 RenderBackend 在绘制时处理,这里只传递位置和尺寸
Rect destRect(worldX, worldY, width * worldScaleX, height * worldScaleY);
@ -159,7 +159,7 @@ void Sprite::generateRenderCommand(std::vector<RenderCommand> &commands,
cmd.type = RenderCommandType::Sprite;
cmd.layer = zOrder;
cmd.data = SpriteCommandData{texture_.get(), destRect, srcRect, color_,
worldRotation, anchor, 0};
worldRotation, anchorPt, 0};
commands.push_back(std::move(cmd));
}

View File

@ -36,7 +36,7 @@ void TransitionFlipScene::renderContent(RenderBackend &renderer) {
float currentAngle = angle;
Camera *camera = outScene_->getActiveCamera();
float originalRotation = camera ? camera->getRotation() : 0.0f;
float originalRotation = camera ? camera->rot() : 0.0f;
if (axis_ == Axis::Horizontal) {
// 水平轴翻转 - 模拟绕X轴旋转
@ -62,7 +62,7 @@ void TransitionFlipScene::renderContent(RenderBackend &renderer) {
float currentAngle = angle - PI_F;
Camera *camera = inScene_->getActiveCamera();
float originalRotation = camera ? camera->getRotation() : 0.0f;
float originalRotation = camera ? camera->rot() : 0.0f;
if (axis_ == Axis::Horizontal) {
if (camera) {

View File

@ -65,7 +65,7 @@ void TransitionSlideScene::renderContent(RenderBackend &renderer) {
}
Camera *camera = outScene_->getActiveCamera();
Vec2 originalPos = camera ? camera->getPosition() : Vec2::Zero();
Vec2 originalPos = camera ? camera->pos() : Vec2::Zero();
if (camera) {
camera->setPosition(originalPos.x + offsetX, originalPos.y + offsetY);
@ -99,7 +99,7 @@ void TransitionSlideScene::renderContent(RenderBackend &renderer) {
}
Camera *camera = inScene_->getActiveCamera();
Vec2 originalPos = camera ? camera->getPosition() : Vec2::Zero();
Vec2 originalPos = camera ? camera->pos() : Vec2::Zero();
if (camera) {
camera->setPosition(originalPos.x + offsetX, originalPos.y + offsetY);

View File

@ -357,19 +357,19 @@ void Button::setCustomSize(float width, float height) {
* @return
*/
Rect Button::getBoundingBox() const {
auto pos = convertToWorldSpace(extra2d::Vec2::Zero());
auto anchor = getAnchor();
auto scale = getScale();
auto position = convertToWorldSpace(extra2d::Vec2::Zero());
auto anchorPt = anchor();
auto scaleVal = scale();
auto size = getSize();
if (size.empty()) {
return Rect();
}
float w = size.width * scale.x;
float h = size.height * scale.y;
float x0 = pos.x - size.width * anchor.x * scale.x;
float y0 = pos.y - size.height * anchor.y * scale.y;
float w = size.width * scaleVal.x;
float h = size.height * scaleVal.y;
float x0 = position.x - size.width * anchorPt.x * scaleVal.x;
float y0 = position.y - size.height * anchorPt.y * scaleVal.y;
return Rect(x0, y0, w, h);
}

View File

@ -128,7 +128,7 @@ void CheckBox::setOnStateChange(Function<void(bool)> callback) {
* @return
*/
Rect CheckBox::getBoundingBox() const {
Vec2 pos = getPosition();
Vec2 position = pos();
float width = boxSize_;
if (!label_.empty() && font_) {
@ -136,7 +136,7 @@ Rect CheckBox::getBoundingBox() const {
width += spacing_ + textSize.x;
}
return Rect(pos.x, pos.y, width, boxSize_);
return Rect(position.x, position.y, width, boxSize_);
}
/**
@ -144,9 +144,9 @@ Rect CheckBox::getBoundingBox() const {
* @param renderer
*/
void CheckBox::onDrawWidget(RenderBackend &renderer) {
Vec2 pos = getPosition();
Vec2 position = pos();
Rect boxRect(pos.x, pos.y + (getSize().height - boxSize_) * 0.5f, boxSize_, boxSize_);
Rect boxRect(position.x, position.y + (getSize().height - boxSize_) * 0.5f, boxSize_, boxSize_);
Color boxColor = checked_ ? checkedColor_ : uncheckedColor_;
renderer.fillRect(boxRect, boxColor);
renderer.drawRect(boxRect, Colors::White, 1.0f);
@ -165,7 +165,7 @@ void CheckBox::onDrawWidget(RenderBackend &renderer) {
}
if (!label_.empty() && font_) {
Vec2 textPos(pos.x + boxSize_ + spacing_, pos.y);
Vec2 textPos(position.x + boxSize_ + spacing_, position.y);
renderer.drawText(*font_, label_, textPos, textColor_);
}
}
@ -191,8 +191,8 @@ bool CheckBox::onMousePress(const MouseEvent &event) {
bool CheckBox::onMouseRelease(const MouseEvent &event) {
if (event.button == MouseButton::Left && pressed_) {
pressed_ = false;
Vec2 pos = getPosition();
Rect boxRect(pos.x, pos.y, boxSize_, boxSize_);
Vec2 position = pos();
Rect boxRect(position.x, position.y, boxSize_, boxSize_);
if (boxRect.containsPoint(Point(event.x, event.y))) {
toggle();
}

View File

@ -305,7 +305,7 @@ std::vector<std::string> Label::splitLines() const {
* @return
*/
Vec2 Label::calculateDrawPosition() const {
Vec2 pos = getPosition();
Vec2 position = pos();
Vec2 size = getTextSize();
Size widgetSize = getSize();
@ -314,10 +314,10 @@ Vec2 Label::calculateDrawPosition() const {
switch (hAlign_) {
case HorizontalAlign::Center:
pos.x += (refWidth - size.x) * 0.5f;
position.x += (refWidth - size.x) * 0.5f;
break;
case HorizontalAlign::Right:
pos.x += refWidth - size.x;
position.x += refWidth - size.x;
break;
case HorizontalAlign::Left:
default:
@ -326,17 +326,17 @@ Vec2 Label::calculateDrawPosition() const {
switch (vAlign_) {
case VerticalAlign::Middle:
pos.y += (refHeight - size.y) * 0.5f;
position.y += (refHeight - size.y) * 0.5f;
break;
case VerticalAlign::Bottom:
pos.y += refHeight - size.y;
position.y += refHeight - size.y;
break;
case VerticalAlign::Top:
default:
break;
}
return pos;
return position;
}
/**
@ -353,11 +353,11 @@ void Label::drawText(RenderBackend &renderer, const Vec2 &position, const Color
if (multiLine_) {
auto lines = splitLines();
float lineHeight = getLineHeight();
Vec2 pos = position;
Vec2 drawPos = position;
for (const auto &line : lines) {
renderer.drawText(*font_, line, pos, color);
pos.y += lineHeight;
renderer.drawText(*font_, line, drawPos, color);
drawPos.y += lineHeight;
}
} else {
renderer.drawText(*font_, text_, position, color);
@ -379,8 +379,8 @@ Rect Label::getBoundingBox() const {
return Rect();
}
Vec2 pos = calculateDrawPosition();
return Rect(pos.x, pos.y, size.x, size.y);
Vec2 drawPos = calculateDrawPosition();
return Rect(drawPos.x, drawPos.y, size.x, size.y);
}
/**

View File

@ -331,7 +331,7 @@ std::string ProgressBar::formatText() const {
* @return
*/
Rect ProgressBar::getBoundingBox() const {
return Rect(getPosition().x, getPosition().y, getSize().width, getSize().height);
return Rect(pos().x, pos().y, getSize().width, getSize().height);
}
/**
@ -378,11 +378,11 @@ void ProgressBar::onUpdate(float deltaTime) {
* @param renderer
*/
void ProgressBar::onDrawWidget(RenderBackend &renderer) {
Vec2 pos = getPosition();
Vec2 position = pos();
Size size = getSize();
float bgX = pos.x + padding_;
float bgY = pos.y + padding_;
float bgX = position.x + padding_;
float bgY = position.y + padding_;
float bgW = size.width - padding_ * 2;
float bgH = size.height - padding_ * 2;
Rect bgRect(bgX, bgY, bgW, bgH);
@ -470,8 +470,8 @@ void ProgressBar::onDrawWidget(RenderBackend &renderer) {
Vec2 textSize = font_->measureText(text);
Vec2 textPos(
pos.x + (size.width - textSize.x) * 0.5f,
pos.y + (size.height - textSize.y) * 0.5f
position.x + (size.width - textSize.x) * 0.5f,
position.y + (size.height - textSize.y) * 0.5f
);
renderer.drawText(*font_, text, textPos, textColor_);

View File

@ -129,7 +129,7 @@ void RadioButton::setOnStateChange(Function<void(bool)> callback) {
* @return
*/
Rect RadioButton::getBoundingBox() const {
Vec2 pos = getPosition();
Vec2 position = pos();
float width = circleSize_;
if (!label_.empty() && font_) {
@ -137,7 +137,7 @@ Rect RadioButton::getBoundingBox() const {
width += spacing_ + textSize.x;
}
return Rect(pos.x, pos.y, width, circleSize_);
return Rect(position.x, position.y, width, circleSize_);
}
/**
@ -145,9 +145,9 @@ Rect RadioButton::getBoundingBox() const {
* @param renderer
*/
void RadioButton::onDrawWidget(RenderBackend &renderer) {
Vec2 pos = getPosition();
float centerX = pos.x + circleSize_ * 0.5f;
float centerY = pos.y + getSize().height * 0.5f;
Vec2 position = pos();
float centerX = position.x + circleSize_ * 0.5f;
float centerY = position.y + getSize().height * 0.5f;
float radius = circleSize_ * 0.5f;
Color circleColor = selected_ ? selectedColor_ : unselectedColor_;
@ -160,7 +160,7 @@ void RadioButton::onDrawWidget(RenderBackend &renderer) {
}
if (!label_.empty() && font_) {
Vec2 textPos(pos.x + circleSize_ + spacing_, pos.y);
Vec2 textPos(position.x + circleSize_ + spacing_, position.y);
renderer.drawText(*font_, label_, textPos, textColor_);
}
}
@ -186,9 +186,9 @@ bool RadioButton::onMousePress(const MouseEvent &event) {
bool RadioButton::onMouseRelease(const MouseEvent &event) {
if (event.button == MouseButton::Left && pressed_) {
pressed_ = false;
Vec2 pos = getPosition();
float centerX = pos.x + circleSize_ * 0.5f;
float centerY = pos.y + getSize().height * 0.5f;
Vec2 position = pos();
float centerX = position.x + circleSize_ * 0.5f;
float centerY = position.y + getSize().height * 0.5f;
float radius = circleSize_ * 0.5f;
float dx = event.x - centerX;

View File

@ -216,7 +216,7 @@ void Slider::setOnDragEnd(Function<void()> callback) {
* @return
*/
Rect Slider::getBoundingBox() const {
return Rect(getPosition().x, getPosition().y, getSize().width, getSize().height);
return Rect(pos().x, pos().y, getSize().width, getSize().height);
}
/**
@ -225,32 +225,32 @@ Rect Slider::getBoundingBox() const {
* @return
*/
float Slider::valueToPosition(float value) const {
Vec2 pos = getPosition();
Vec2 position = pos();
Size size = getSize();
float percent = (value - min_) / (max_ - min_);
if (vertical_) {
return pos.y + size.height - percent * size.height;
return position.y + size.height - percent * size.height;
} else {
return pos.x + percent * size.width;
return position.x + percent * size.width;
}
}
/**
* @brief
* @param pos
* @param position
* @return
*/
float Slider::positionToValue(float pos) const {
Vec2 widgetPos = getPosition();
float Slider::positionToValue(float position) const {
Vec2 widgetPos = pos();
Size size = getSize();
float percent;
if (vertical_) {
percent = (widgetPos.y + size.height - pos) / size.height;
percent = (widgetPos.y + size.height - position) / size.height;
} else {
percent = (pos - widgetPos.x) / size.width;
percent = (position - widgetPos.x) / size.width;
}
percent = std::clamp(percent, 0.0f, 1.0f);
@ -262,14 +262,14 @@ float Slider::positionToValue(float pos) const {
* @return
*/
Rect Slider::getThumbRect() const {
Vec2 pos = getPosition();
Vec2 position = pos();
Size size = getSize();
float thumbPos = valueToPosition(value_);
if (vertical_) {
return Rect(
pos.x + (size.width - thumbSize_) * 0.5f,
position.x + (size.width - thumbSize_) * 0.5f,
thumbPos - thumbSize_ * 0.5f,
thumbSize_,
thumbSize_
@ -277,7 +277,7 @@ Rect Slider::getThumbRect() const {
} else {
return Rect(
thumbPos - thumbSize_ * 0.5f,
pos.y + (size.height - thumbSize_) * 0.5f,
position.y + (size.height - thumbSize_) * 0.5f,
thumbSize_,
thumbSize_
);
@ -289,20 +289,20 @@ Rect Slider::getThumbRect() const {
* @return
*/
Rect Slider::getTrackRect() const {
Vec2 pos = getPosition();
Vec2 position = pos();
Size size = getSize();
if (vertical_) {
return Rect(
pos.x + (size.width - trackSize_) * 0.5f,
pos.y,
position.x + (size.width - trackSize_) * 0.5f,
position.y,
trackSize_,
size.height
);
} else {
return Rect(
pos.x,
pos.y + (size.height - trackSize_) * 0.5f,
position.x,
position.y + (size.height - trackSize_) * 0.5f,
size.width,
trackSize_
);
@ -387,12 +387,12 @@ void Slider::onDrawWidget(RenderBackend &renderer) {
if (textEnabled_ && font_) {
std::string text = formatText();
Vec2 textSize = font_->measureText(text);
Vec2 pos = getPosition();
Vec2 position = pos();
Size size = getSize();
Vec2 textPos(
pos.x + size.width + 10.0f,
pos.y + (size.height - textSize.y) * 0.5f
position.x + size.width + 10.0f,
position.y + (size.height - textSize.y) * 0.5f
);
renderer.drawText(*font_, text, textPos, textColor_);

View File

@ -112,24 +112,24 @@ void Text::updateCache() const {
* @return
*/
Vec2 Text::calculateDrawPosition() const {
Vec2 pos = getPosition();
Vec2 position = pos();
Vec2 textSize = getTextSize();
Size widgetSize = getSize();
Vec2 anchor = getAnchor();
Vec2 anchorPt = anchor();
float refWidth = widgetSize.empty() ? textSize.x : widgetSize.width;
float refHeight = widgetSize.empty() ? textSize.y : widgetSize.height;
pos.x -= textSize.x * anchor.x;
pos.y -= textSize.y * anchor.y;
position.x -= textSize.x * anchorPt.x;
position.y -= textSize.y * anchorPt.y;
if (!widgetSize.empty()) {
switch (alignment_) {
case Alignment::Center:
pos.x += (refWidth - textSize.x) * 0.5f;
position.x += (refWidth - textSize.x) * 0.5f;
break;
case Alignment::Right:
pos.x += refWidth - textSize.x;
position.x += refWidth - textSize.x;
break;
case Alignment::Left:
default:
@ -140,10 +140,10 @@ Vec2 Text::calculateDrawPosition() const {
if (!widgetSize.empty()) {
switch (verticalAlignment_) {
case VerticalAlignment::Middle:
pos.y += (refHeight - textSize.y) * 0.5f;
position.y += (refHeight - textSize.y) * 0.5f;
break;
case VerticalAlignment::Bottom:
pos.y += refHeight - textSize.y;
position.y += refHeight - textSize.y;
break;
case VerticalAlignment::Top:
default:
@ -151,7 +151,7 @@ Vec2 Text::calculateDrawPosition() const {
}
}
return pos;
return position;
}
/**

View File

@ -21,14 +21,14 @@ Rect Widget::getBoundingBox() const {
return Rect();
}
auto pos = convertToWorldSpace(extra2d::Vec2::Zero());
auto anchor = getAnchor();
auto scale = getScale();
auto position = convertToWorldSpace(extra2d::Vec2::Zero());
auto anchorPt = anchor();
auto scaleVal = scale();
float w = size_.width * scale.x;
float h = size_.height * scale.y;
float x0 = pos.x - size_.width * anchor.x * scale.x;
float y0 = pos.y - size_.height * anchor.y * scale.y;
float w = size_.width * scaleVal.x;
float h = size_.height * scaleVal.y;
float x0 = position.x - size_.width * anchorPt.x * scaleVal.x;
float y0 = position.y - size_.height * anchorPt.y * scaleVal.y;
float x1 = x0 + w;
float y1 = y0 + h;