diff options
author | MrRevington <revealator@sofortsurf.de> | 2020-04-16 18:25:59 +0200 |
---|---|---|
committer | MrRevington <revealator@sofortsurf.de> | 2020-04-30 23:28:58 +0200 |
commit | 13770ac08da64f252831f71f382f0470cef24077 (patch) | |
tree | a36c2337dbdd757bd87834baea126e7e7981c235 | |
parent | 30ab5c9baae1cad3e157d906395a4eb8cef77e42 (diff) |
Add AtlasTexture support in SpriteFrames Editor - Add Frames from a Sprite Sheet
-rw-r--r-- | editor/plugins/sprite_frames_editor_plugin.cpp | 11 |
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(); |