diff options
author | kleonc <9283098+kleonc@users.noreply.github.com> | 2022-10-30 21:26:58 +0100 |
---|---|---|
committer | kleonc <9283098+kleonc@users.noreply.github.com> | 2022-10-30 21:26:58 +0100 |
commit | d1359579874b747ab34bdbdb23411b5dc733a609 (patch) | |
tree | e025609bb0fb5d892242ad8afdb27ce5550ebffa /editor/plugins | |
parent | aaa931659e734953f649e229ca587b5b64703a02 (diff) |
`SpriteFramesEditor` Fix calculating frame index from mouse position
Diffstat (limited to 'editor/plugins')
-rw-r--r-- | editor/plugins/sprite_frames_editor_plugin.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index 5dac66d3e1..d3ab5b6f77 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -67,14 +67,18 @@ int SpriteFramesEditor::_sheet_preview_position_to_frame_index(const Point2 &p_p const Size2i block_size = frame_size + separation; const Point2i position = p_position / sheet_zoom - offset; - if (position.x % block_size.x > frame_size.x || position.y % block_size.y > frame_size.y) { + if (position.x < 0 || position.y < 0) { + return -1; // Out of bounds. + } + + if (position.x % block_size.x >= frame_size.x || position.y % block_size.y >= frame_size.y) { return -1; // Gap between frames. } const Point2i frame = position / block_size; const Size2i frame_count = _get_frame_count(); - if (frame.x < 0 || frame.y < 0 || frame.x >= frame_count.x || frame.y >= frame_count.y) { - return -1; // Out of bound. + if (frame.x >= frame_count.x || frame.y >= frame_count.y) { + return -1; // Out of bounds. } return frame_count.x * frame.y + frame.x; |