Skip to content

Commit

Permalink
Add methods for calculating the size and postion of UI nodes (bevyeng…
Browse files Browse the repository at this point in the history
…ine#7930)

Co-authored-by: François <mockersf@gmail.com>
  • Loading branch information
2 people authored and Shfty committed Mar 19, 2023
1 parent 52e4dbb commit 677b4eb
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions crates/bevy_ui/src/ui_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use bevy_render::{
color::Color,
texture::{Image, DEFAULT_IMAGE_HANDLE},
};
use bevy_transform::prelude::GlobalTransform;
use serde::{Deserialize, Serialize};
use std::ops::{Div, DivAssign, Mul, MulAssign};
use thiserror::Error;
Expand All @@ -26,6 +27,22 @@ impl Node {
pub fn size(&self) -> Vec2 {
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 {
Expand Down

0 comments on commit 677b4eb

Please sign in to comment.