Merge pull request #23299 from FlamyAT/sprite3d-floating-offset

Changed Sprite3D to float based drawing
This commit is contained in:
Rémi Verschelde 2018-11-13 21:28:08 +01:00 committed by GitHub
commit 5613aa489e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -388,7 +388,7 @@ void Sprite3D::_draw() {
return; return;
Size2i s; Size2i s;
Rect2i src_rect; Rect2 src_rect;
if (region) { if (region) {
@ -396,18 +396,18 @@ void Sprite3D::_draw() {
src_rect = region_rect; src_rect = region_rect;
} else { } else {
s = texture->get_size(); s = texture->get_size();
s = s / Size2i(hframes, vframes); s = s / Size2(hframes, vframes);
src_rect.size = s; src_rect.size = s;
src_rect.position.x += (frame % hframes) * s.x; src_rect.position.x += (frame % hframes) * s.x;
src_rect.position.y += (frame / hframes) * s.y; src_rect.position.y += (frame / hframes) * s.y;
} }
Point2i ofs = get_offset(); Point2 ofs = get_offset();
if (is_centered()) if (is_centered())
ofs -= s / 2; ofs -= s / 2;
Rect2i dst_rect(ofs, s); Rect2 dst_rect(ofs, s);
Rect2 final_rect; Rect2 final_rect;
Rect2 final_src_rect; Rect2 final_src_rect;
@ -612,7 +612,7 @@ Rect2 Sprite3D::get_item_rect() const {
s = s / Point2(hframes, vframes); s = s / Point2(hframes, vframes);
} }
Point2i ofs = get_offset(); Point2 ofs = get_offset();
if (is_centered()) if (is_centered())
ofs -= s / 2; ofs -= s / 2;
@ -699,15 +699,15 @@ void AnimatedSprite3D::_draw() {
return; return;
Size2i s = tsize; Size2i s = tsize;
Rect2i src_rect; Rect2 src_rect;
src_rect.size = s; src_rect.size = s;
Point2i ofs = get_offset(); Point2 ofs = get_offset();
if (is_centered()) if (is_centered())
ofs -= s / 2; ofs -= s / 2;
Rect2i dst_rect(ofs, s); Rect2 dst_rect(ofs, s);
Rect2 final_rect; Rect2 final_rect;
Rect2 final_src_rect; Rect2 final_src_rect;