summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMrRevington <revealator@sofortsurf.de>2020-04-16 18:25:59 +0200
committerMrRevington <revealator@sofortsurf.de>2020-04-30 23:28:58 +0200
commit13770ac08da64f252831f71f382f0470cef24077 (patch)
treea36c2337dbdd757bd87834baea126e7e7981c235
parent30ab5c9baae1cad3e157d906395a4eb8cef77e42 (diff)
Add AtlasTexture support in SpriteFrames Editor - Add Frames from a Sprite Sheet
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 76e60bb014..34ff34d45b 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -154,14 +154,21 @@ void SpriteFramesEditor::_sheet_add_frames() {
int fc = frames->get_frame_count(edited_anim);
+ AtlasTexture *atlas_source = Object::cast_to<AtlasTexture>(*split_sheet_preview->get_texture());
+
+ Rect2 region_rect = Rect2();
+
+ if (atlas_source && atlas_source->get_atlas().is_valid())
+ region_rect = atlas_source->get_region();
+
for (Set<int>::Element *E = frames_selected.front(); E; E = E->next()) {
int idx = E->get();
int width = size.width / h;
int height = size.height / v;
int xp = idx % h;
int yp = (idx - xp) / h;
- int x = xp * width;
- int y = yp * height;
+ int x = (xp * width) + region_rect.position.x;
+ int y = (yp * height) + region_rect.position.y;
Ref<AtlasTexture> at;
at.instance();