mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
Fix AtlasTexture nesting
This commit is contained in:
parent
c1e78f749e
commit
3f9e50505a
2 changed files with 4 additions and 18 deletions
|
@ -222,28 +222,14 @@ void SpriteFramesEditor::_sheet_add_frames() {
|
|||
|
||||
int fc = frames->get_frame_count(edited_anim);
|
||||
|
||||
Point2 src_origin;
|
||||
Rect2 src_region(Point2(), texture_size);
|
||||
|
||||
AtlasTexture *src_atlas = Object::cast_to<AtlasTexture>(*split_sheet_preview->get_texture());
|
||||
if (src_atlas && src_atlas->get_atlas().is_valid()) {
|
||||
src_origin = src_atlas->get_region().position - src_atlas->get_margin().position;
|
||||
src_region = src_atlas->get_region();
|
||||
}
|
||||
|
||||
for (Set<int>::Element *E = frames_selected.front(); E; E = E->next()) {
|
||||
int idx = E->get();
|
||||
Point2 frame_coords(idx % frame_count_x, idx / frame_count_x);
|
||||
|
||||
Rect2 frame(frame_coords * frame_size + src_origin, frame_size);
|
||||
Rect2 region = frame.intersection(src_region);
|
||||
Rect2 margin(region == Rect2() ? Point2() : region.position - frame.position, frame.size - region.size);
|
||||
|
||||
Ref<AtlasTexture> at;
|
||||
at.instantiate();
|
||||
at->set_atlas(split_sheet_preview->get_texture());
|
||||
at->set_region(region);
|
||||
at->set_margin(margin);
|
||||
at->set_region(Rect2(frame_coords * frame_size, frame_size));
|
||||
|
||||
undo_redo->add_do_method(frames, "add_frame", edited_anim, at, -1);
|
||||
undo_redo->add_undo_method(frames, "remove_frame", edited_anim, fc);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue