You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
Add thumbnails to LargeTexture
This commit is contained in:
@@ -86,6 +86,7 @@ Ref<Texture> EditorTexturePreviewPlugin::generate(const RES &p_from, const Size2
|
|||||||
|
|
||||||
Ref<Image> img;
|
Ref<Image> img;
|
||||||
Ref<AtlasTexture> atex = p_from;
|
Ref<AtlasTexture> atex = p_from;
|
||||||
|
Ref<LargeTexture> ltex = p_from;
|
||||||
if (atex.is_valid()) {
|
if (atex.is_valid()) {
|
||||||
Ref<Texture> tex = atex->get_atlas();
|
Ref<Texture> tex = atex->get_atlas();
|
||||||
if (!tex.is_valid()) {
|
if (!tex.is_valid()) {
|
||||||
@@ -93,6 +94,8 @@ Ref<Texture> EditorTexturePreviewPlugin::generate(const RES &p_from, const Size2
|
|||||||
}
|
}
|
||||||
Ref<Image> atlas = tex->get_data();
|
Ref<Image> atlas = tex->get_data();
|
||||||
img = atlas->get_rect(atex->get_region());
|
img = atlas->get_rect(atex->get_region());
|
||||||
|
} else if (ltex.is_valid()) {
|
||||||
|
img = ltex->to_image();
|
||||||
} else {
|
} else {
|
||||||
Ref<Texture> tex = p_from;
|
Ref<Texture> tex = p_from;
|
||||||
img = tex->get_data();
|
img = tex->get_data();
|
||||||
|
|||||||
@@ -1205,6 +1205,17 @@ Ref<Texture> LargeTexture::get_piece_texture(int p_idx) const {
|
|||||||
ERR_FAIL_INDEX_V(p_idx, pieces.size(), Ref<Texture>());
|
ERR_FAIL_INDEX_V(p_idx, pieces.size(), Ref<Texture>());
|
||||||
return pieces[p_idx].texture;
|
return pieces[p_idx].texture;
|
||||||
}
|
}
|
||||||
|
Ref<Image> LargeTexture::to_image() const {
|
||||||
|
|
||||||
|
Ref<Image> img = memnew(Image(this->get_width(), this->get_height(), false, Image::FORMAT_RGBA8));
|
||||||
|
for (int i = 0; i < pieces.size(); i++) {
|
||||||
|
|
||||||
|
Ref<Image> src_img = pieces[i].texture->get_data();
|
||||||
|
img->blit_rect(src_img, Rect2(0, 0, src_img->get_width(), src_img->get_height()), pieces[i].offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
void LargeTexture::_bind_methods() {
|
void LargeTexture::_bind_methods() {
|
||||||
|
|
||||||
|
|||||||
@@ -330,6 +330,7 @@ public:
|
|||||||
int get_piece_count() const;
|
int get_piece_count() const;
|
||||||
Vector2 get_piece_offset(int p_idx) const;
|
Vector2 get_piece_offset(int p_idx) const;
|
||||||
Ref<Texture> get_piece_texture(int p_idx) const;
|
Ref<Texture> get_piece_texture(int p_idx) const;
|
||||||
|
Ref<Image> to_image() const;
|
||||||
|
|
||||||
virtual void draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, const Ref<Texture> &p_normal_map = Ref<Texture>()) const;
|
virtual void draw(RID p_canvas_item, const Point2 &p_pos, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, const Ref<Texture> &p_normal_map = Ref<Texture>()) const;
|
||||||
virtual void draw_rect(RID p_canvas_item, const Rect2 &p_rect, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, const Ref<Texture> &p_normal_map = Ref<Texture>()) const;
|
virtual void draw_rect(RID p_canvas_item, const Rect2 &p_rect, bool p_tile = false, const Color &p_modulate = Color(1, 1, 1), bool p_transpose = false, const Ref<Texture> &p_normal_map = Ref<Texture>()) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user