Added a new getter.

This commit is contained in:
Relintai 2019-11-08 09:18:55 +01:00
parent 2b901b0731
commit 604c330188
4 changed files with 46 additions and 13 deletions

View File

@ -133,8 +133,12 @@ bool TextureMerger::contains_texture(Ref<Texture> texture) {
return _packer->contains_texture(texture);
}
Ref<AtlasTexture> TextureMerger::get_texture(int index) {
return _packer->get_texture(index);
Ref<AtlasTexture> TextureMerger::get_texture(Ref<Texture> texture) {
return _packer->get_texture(texture);
}
Ref<AtlasTexture> TextureMerger::get_texture_index(int index) {
return _packer->get_texture_index(index);
}
bool TextureMerger::unref_texture_index(int index) {
@ -287,7 +291,8 @@ void TextureMerger::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_packer", "packer"), &TextureMerger::set_packer);
ClassDB::bind_method(D_METHOD("add_texture", "texture"), &TextureMerger::add_texture);
ClassDB::bind_method(D_METHOD("get_texture", "index"), &TextureMerger::get_texture);
ClassDB::bind_method(D_METHOD("get_texture", "texture"), &TextureMerger::get_texture);
ClassDB::bind_method(D_METHOD("get_texture_index", "index"), &TextureMerger::get_texture_index);
ClassDB::bind_method(D_METHOD("get_original_texture", "index"), &TextureMerger::get_original_texture);
ClassDB::bind_method(D_METHOD("unref_texture_index", "index"), &TextureMerger::unref_texture_index);

View File

@ -40,7 +40,8 @@ public:
void set_textures(const Vector<Variant> &textures);
Ref<AtlasTexture> add_texture(Ref<Texture> texture);
Ref<AtlasTexture> get_texture(int index);
Ref<AtlasTexture> get_texture(Ref<Texture> texture);
Ref<AtlasTexture> get_texture_index(int index);
Ref<Texture> get_original_texture(int index);
bool contains_texture(Ref<Texture> texture);

View File

@ -118,18 +118,38 @@ Ref<AtlasTexture> TexturePacker::add_texture(Ref<Texture> texture) {
return tex;
}
Ref<AtlasTexture> TexturePacker::get_texture(Ref<Texture> texture) {
for (int i = 0; i < _rects.size(); ++i) {
rect_xywhf *r = _rects.get(i);
Ref<Texture> t;
Ref<AtlasTexture> at = texture;
if (_keep_original_atlases && at.is_valid())
t = r->atlas_texture;
else
t = r->original_texture;
if (t == texture) {
return _rects.get(i)->atlas_texture;
}
}
return Ref<Texture>();
}
Ref<AtlasTexture> TexturePacker::get_texture_index(int index) {
ERR_FAIL_INDEX_V(index, _rects.size(), Ref<AtlasTexture>());
return _rects.get(index)->atlas_texture;
}
Ref<Texture> TexturePacker::get_original_texture(int index) {
ERR_FAIL_INDEX_V(index, _rects.size(), Ref<Texture>());
return _rects.get(index)->original_texture;
}
Ref<AtlasTexture> TexturePacker::get_texture(int index) {
ERR_FAIL_INDEX_V(index, _rects.size(), Ref<AtlasTexture>());
return _rects.get(index)->atlas_texture;
}
bool TexturePacker::contains_texture(Ref<Texture> texture) {
for (int i = 0; i < _rects.size(); ++i) {
rect_xywhf *r = _rects.get(i);
@ -417,7 +437,10 @@ void TexturePacker::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "margin"), "set_margin", "get_margin");
ClassDB::bind_method(D_METHOD("add_texture", "texture"), &TexturePacker::add_texture);
ClassDB::bind_method(D_METHOD("get_texture", "index"), &TexturePacker::get_texture);
ClassDB::bind_method(D_METHOD("get_texture", "texture"), &TexturePacker::get_texture);
ClassDB::bind_method(D_METHOD("get_texture_index", "index"), &TexturePacker::get_texture_index);
ClassDB::bind_method(D_METHOD("get_original_texture", "index"), &TexturePacker::get_original_texture);
ClassDB::bind_method(D_METHOD("unref_texture_index", "index"), &TexturePacker::unref_texture_index);

View File

@ -31,9 +31,13 @@ public:
void set_margin(const int margin);
Ref<AtlasTexture> add_texture(Ref<Texture> texture);
Ref<AtlasTexture> get_texture(int index);
Ref<AtlasTexture> get_texture(Ref<Texture> texture);
Ref<AtlasTexture> get_texture_index(int index);
Ref<Texture> get_original_texture(int index);
bool contains_texture(Ref<Texture> texture);
bool contains_texture(Ref<Texture> texture);
bool unref_texture_index(int index);
bool unref_texture(Ref<Texture> texture);