Add methods for calculating the size and postion of UI nodes (#7930)
Co-authored-by: François <mockersf@gmail.com>
This commit is contained in:
parent
e22572d9a3
commit
f554700108
@ -7,6 +7,7 @@ use bevy_render::{
|
|||||||
color::Color,
|
color::Color,
|
||||||
texture::{Image, DEFAULT_IMAGE_HANDLE},
|
texture::{Image, DEFAULT_IMAGE_HANDLE},
|
||||||
};
|
};
|
||||||
|
use bevy_transform::prelude::GlobalTransform;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::ops::{Div, DivAssign, Mul, MulAssign};
|
use std::ops::{Div, DivAssign, Mul, MulAssign};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
@ -26,6 +27,22 @@ impl Node {
|
|||||||
pub fn size(&self) -> Vec2 {
|
pub fn size(&self) -> Vec2 {
|
||||||
self.calculated_size
|
self.calculated_size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the logical pixel coordinates of the UI node, based on its `GlobalTransform`.
|
||||||
|
#[inline]
|
||||||
|
pub fn logical_rect(&self, transform: &GlobalTransform) -> Rect {
|
||||||
|
Rect::from_center_size(transform.translation().truncate(), self.size())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns the physical pixel coordinates of the UI node, based on its `GlobalTransform` and the scale factor.
|
||||||
|
#[inline]
|
||||||
|
pub fn physical_rect(&self, transform: &GlobalTransform, scale_factor: f32) -> Rect {
|
||||||
|
let rect = self.logical_rect(transform);
|
||||||
|
Rect {
|
||||||
|
min: rect.min / scale_factor,
|
||||||
|
max: rect.max / scale_factor,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Node {
|
impl Node {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user