diff --git a/src/graphics/ui/elements/Image.cpp b/src/graphics/ui/elements/Image.cpp index ee3ec886..f321ddf8 100644 --- a/src/graphics/ui/elements/Image.cpp +++ b/src/graphics/ui/elements/Image.cpp @@ -80,3 +80,7 @@ void Image::setTexture(const std::string& name) { void Image::setRegion(const UVRegion& region) { this->region = region; } + +const UVRegion& Image::getRegion() const { + return region; +} diff --git a/src/graphics/ui/elements/Image.hpp b/src/graphics/ui/elements/Image.hpp index 579ddd75..40765a4c 100644 --- a/src/graphics/ui/elements/Image.hpp +++ b/src/graphics/ui/elements/Image.hpp @@ -19,5 +19,6 @@ namespace gui { virtual const std::string& getTexture() const; virtual void setTexture(const std::string& name); void setRegion(const UVRegion& region); + const UVRegion& getRegion() const; }; } diff --git a/src/logic/scripting/lua/libs/libgui.cpp b/src/logic/scripting/lua/libs/libgui.cpp index 56bada71..af317f94 100644 --- a/src/logic/scripting/lua/libs/libgui.cpp +++ b/src/logic/scripting/lua/libs/libgui.cpp @@ -345,6 +345,14 @@ static int p_get_src(UINode* node, lua::State* L) { return 0; } +static int p_get_region(UINode* node, lua::State* L) { + if (auto image = dynamic_cast(node)) { + const auto& region = image->getRegion(); + return lua::pushvec4(L, {region.u1, region.v1, region.u2, region.v2}); + } + return 0; +} + static int p_get_data(UINode* node, lua::State* L) { if (auto canvas = dynamic_cast(node)) { return lua::newuserdata(L, canvas->texture(), canvas->data()); @@ -556,6 +564,7 @@ static int l_gui_getattr(lua::State* L) { {"cursor", p_get_cursor}, {"data", p_get_data}, {"parent", p_get_parent}, + {"region", p_get_region}, }; auto func = getters.find(attr); if (func != getters.end()) {