mirror of
https://github.com/godotengine/godot.git
synced 2024-11-10 06:03:09 +00:00
Merge pull request #93467 from anniryynanen/progress-circle-atlas
Fix atlas texture positioning in circular TextureProgressBar
This commit is contained in:
commit
04bf7d4cad
@ -31,7 +31,6 @@
|
|||||||
#include "texture_progress_bar.h"
|
#include "texture_progress_bar.h"
|
||||||
|
|
||||||
#include "core/config/engine.h"
|
#include "core/config/engine.h"
|
||||||
#include "scene/resources/atlas_texture.h"
|
|
||||||
|
|
||||||
void TextureProgressBar::set_under_texture(const Ref<Texture2D> &p_texture) {
|
void TextureProgressBar::set_under_texture(const Ref<Texture2D> &p_texture) {
|
||||||
_set_texture(&under, p_texture);
|
_set_texture(&under, p_texture);
|
||||||
@ -513,15 +512,6 @@ void TextureProgressBar::_notification(int p_what) {
|
|||||||
}
|
}
|
||||||
pts.push_back(to);
|
pts.push_back(to);
|
||||||
|
|
||||||
Ref<AtlasTexture> atlas_progress = progress;
|
|
||||||
bool valid_atlas_progress = atlas_progress.is_valid() && atlas_progress->get_atlas().is_valid();
|
|
||||||
Rect2 region_rect;
|
|
||||||
Size2 atlas_size;
|
|
||||||
if (valid_atlas_progress) {
|
|
||||||
region_rect = atlas_progress->get_region();
|
|
||||||
atlas_size = atlas_progress->get_atlas()->get_size();
|
|
||||||
}
|
|
||||||
|
|
||||||
Vector<Point2> uvs;
|
Vector<Point2> uvs;
|
||||||
Vector<Point2> points;
|
Vector<Point2> points;
|
||||||
for (const float &f : pts) {
|
for (const float &f : pts) {
|
||||||
@ -530,10 +520,6 @@ void TextureProgressBar::_notification(int p_what) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
points.push_back(progress_offset + Point2(uv.x * s.x, uv.y * s.y));
|
points.push_back(progress_offset + Point2(uv.x * s.x, uv.y * s.y));
|
||||||
if (valid_atlas_progress) {
|
|
||||||
uv.x = Math::remap(uv.x, 0, 1, region_rect.position.x / atlas_size.x, (region_rect.position.x + region_rect.size.x) / atlas_size.x);
|
|
||||||
uv.y = Math::remap(uv.y, 0, 1, region_rect.position.y / atlas_size.y, (region_rect.position.y + region_rect.size.y) / atlas_size.y);
|
|
||||||
}
|
|
||||||
uvs.push_back(uv);
|
uvs.push_back(uv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,10 +527,6 @@ void TextureProgressBar::_notification(int p_what) {
|
|||||||
if (points.size() >= 2) {
|
if (points.size() >= 2) {
|
||||||
Point2 center_point = get_relative_center();
|
Point2 center_point = get_relative_center();
|
||||||
points.push_back(progress_offset + s * center_point);
|
points.push_back(progress_offset + s * center_point);
|
||||||
if (valid_atlas_progress) {
|
|
||||||
center_point.x = Math::remap(center_point.x, 0, 1, region_rect.position.x / atlas_size.x, (region_rect.position.x + region_rect.size.x) / atlas_size.x);
|
|
||||||
center_point.y = Math::remap(center_point.y, 0, 1, region_rect.position.y / atlas_size.y, (region_rect.position.y + region_rect.size.y) / atlas_size.y);
|
|
||||||
}
|
|
||||||
uvs.push_back(center_point);
|
uvs.push_back(center_point);
|
||||||
|
|
||||||
Vector<Color> colors;
|
Vector<Color> colors;
|
||||||
|
Loading…
Reference in New Issue
Block a user