small cleanup

This commit is contained in:
2026-01-06 11:12:39 +00:00
parent 1488f0398d
commit d294748b88
4 changed files with 29 additions and 68 deletions

View File

@@ -52,15 +52,15 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
log::logger().flush();
scene.world
.query_all::<(&InteractableResource, &unity_parser::WorldTransform, &unity_parser::GameObject)>()
.for_each(|(resource, world_transform, object)| {
.query_all::<(&InteractableResource, &unity_parser::Transform, &unity_parser::GameObject)>()
.for_each(|(resource, transform, object)| {
info!(" 📦 Resource: \"{}\"", object.name);
info!(" • typeId: {}", resource.type_id);
info!(" • maxHealth: {}", resource.max_health);
// Extract world position from WorldTransform
let world_pos = world_transform.position();
info!("World Position: ({:.2}, {:.2}, {:.2})", world_pos.x, world_pos.y, world_pos.z);
let world_pos = transform.local_position;
info!("Local Position: ({:.2}, {:.2}, {:.2})", world_pos.x, world_pos.y, world_pos.z);
});
log::logger().flush();

View File

@@ -92,7 +92,7 @@ pub fn compute_world_transforms(world: &mut World, entity_map: &HashMap<FileID,
let transform_view = world.borrow::<Transform>();
for &entity in entity_map.values() {
if let Some(transform) = transform_view.get(entity) {
if transform.parent().is_none() {
if transform.parent.is_none() {
root_entities.push(entity);
}
}
@@ -111,7 +111,7 @@ pub fn compute_world_transforms(world: &mut World, entity_map: &HashMap<FileID,
let rect_transform_view = world.borrow::<RectTransform>();
for &entity in entity_map.values() {
if let Some(rect_transform) = rect_transform_view.get(entity) {
if rect_transform.transform.parent().is_none() {
if rect_transform.transform.parent.is_none() {
rect_root_entities.push(entity);
}
}
@@ -130,9 +130,9 @@ fn compute_world_transform_recursive(world: &mut World, entity: Entity, parent_m
let transform_view = world.borrow::<Transform>();
if let Some(transform) = transform_view.get(entity) {
compute_local_matrix(
transform.local_position(),
transform.local_rotation(),
transform.local_scale(),
Some(&transform.local_position),
Some(&transform.local_rotation),
Some(&transform.local_scale),
)
} else {
// No transform component, skip this entity
@@ -148,7 +148,7 @@ fn compute_world_transform_recursive(world: &mut World, entity: Entity, parent_m
let transform_view = world.borrow::<Transform>();
transform_view
.get(entity)
.map(|t| t.children().to_vec())
.map(|t| t.children.clone())
.unwrap_or_default()
};
@@ -169,11 +169,11 @@ fn compute_rect_world_transform_recursive(world: &mut World, entity: Entity, par
if let Some(rect_transform) = rect_transform_view.get(entity) {
let transform = &rect_transform.transform;
let local = compute_local_matrix(
transform.local_position(),
transform.local_rotation(),
transform.local_scale(),
Some(&transform.local_position),
Some(&transform.local_rotation),
Some(&transform.local_scale),
);
let children = transform.children().to_vec();
let children = transform.children.clone();
(local, children)
} else {
// No rect transform component, skip this entity

View File

@@ -13,7 +13,6 @@ pub mod stripped_reference;
pub mod transform;
pub use box_collider::BoxCollider;
pub use capsule_collider::CapsuleCollider;
pub use collider::Collider;
pub use game_object::GameObject;
pub use mesh_filter::MeshFilter;
@@ -22,6 +21,5 @@ pub use prefab_instance::{
PrefabInstance, PrefabInstanceComponent, PrefabModification, PrefabResolver,
};
pub use renderer::Renderer;
pub use sphere_collider::SphereCollider;
pub use stripped_reference::StrippedReference;
pub use transform::{RectTransform, Transform};

View File

@@ -10,48 +10,11 @@ use sparsey::Entity;
/// Transform determines the Position, Rotation, and Scale of each object in the scene.
#[derive(Debug, Clone)]
pub struct Transform {
local_position: Option<Vector3>,
local_rotation: Option<Quaternion>,
local_scale: Option<Vector3>,
parent: Option<Entity>,
children: Vec<Entity>,
}
impl Transform {
/// Get the local position
pub fn local_position(&self) -> Option<&Vector3> {
self.local_position.as_ref()
}
/// Get the local rotation
pub fn local_rotation(&self) -> Option<&Quaternion> {
self.local_rotation.as_ref()
}
/// Get the local scale
pub fn local_scale(&self) -> Option<&Vector3> {
self.local_scale.as_ref()
}
/// Get the parent entity
pub fn parent(&self) -> Option<Entity> {
self.parent
}
/// Get the children entities
pub fn children(&self) -> &[Entity] {
&self.children
}
/// Set the parent entity (used during hierarchy resolution)
pub fn set_parent(&mut self, parent: Option<Entity>) {
self.parent = parent;
}
/// Set the children entities (used during hierarchy resolution)
pub fn set_children(&mut self, children: Vec<Entity>) {
self.children = children;
}
pub local_position: Vector3,
pub local_rotation: Quaternion,
pub local_scale: Vector3,
pub parent: Option<Entity>,
pub children: Vec<Entity>,
}
impl UnityComponent for Transform {
@@ -98,7 +61,7 @@ impl UnityComponent for Transform {
// Set parent (might be None if unresolved)
let resolved_parent =
parent_ref.and_then(|r| entity_map.get(&r.file_id).copied());
transform.set_parent(resolved_parent);
transform.parent = resolved_parent;
// Resolve any previously unresolved children
let mut all_children = children_entities.clone();
@@ -110,15 +73,15 @@ impl UnityComponent for Transform {
}
}
transform.set_children(all_children);
transform.children = all_children;
}
}));
}
Some(Self {
local_position,
local_rotation,
local_scale,
local_position: local_position.unwrap_or_default(),
local_rotation: local_rotation.unwrap_or_default(),
local_scale: local_scale.unwrap_or_else(|| Vector3::new(1.0, 1.0, 1.0)),
parent: None,
children: Vec::new(),
})
@@ -218,7 +181,7 @@ impl UnityComponent for RectTransform {
// Set parent (might be None if unresolved)
let resolved_parent =
parent_ref.and_then(|r| entity_map.get(&r.file_id).copied());
transform.set_parent(resolved_parent);
transform.parent = resolved_parent;
// Resolve any previously unresolved children
let mut all_children = children_entities.clone();
@@ -230,15 +193,15 @@ impl UnityComponent for RectTransform {
}
}
transform.set_children(all_children);
transform.children = all_children;
}
}));
}
let transform = Transform {
local_position,
local_rotation,
local_scale,
local_position: local_position.unwrap_or_default(),
local_rotation: local_rotation.unwrap_or_default(),
local_scale: local_scale.unwrap_or_else(|| Vector3::new(1.0, 1.0, 1.0)),
parent: None,
children: Vec::new(),
};