small cleanup
This commit is contained in:
@@ -52,15 +52,15 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
log::logger().flush();
|
log::logger().flush();
|
||||||
|
|
||||||
scene.world
|
scene.world
|
||||||
.query_all::<(&InteractableResource, &unity_parser::WorldTransform, &unity_parser::GameObject)>()
|
.query_all::<(&InteractableResource, &unity_parser::Transform, &unity_parser::GameObject)>()
|
||||||
.for_each(|(resource, world_transform, object)| {
|
.for_each(|(resource, transform, object)| {
|
||||||
info!(" 📦 Resource: \"{}\"", object.name);
|
info!(" 📦 Resource: \"{}\"", object.name);
|
||||||
info!(" • typeId: {}", resource.type_id);
|
info!(" • typeId: {}", resource.type_id);
|
||||||
info!(" • maxHealth: {}", resource.max_health);
|
info!(" • maxHealth: {}", resource.max_health);
|
||||||
|
|
||||||
// Extract world position from WorldTransform
|
// Extract world position from WorldTransform
|
||||||
let world_pos = world_transform.position();
|
let world_pos = transform.local_position;
|
||||||
info!(" • World Position: ({:.2}, {:.2}, {:.2})", world_pos.x, world_pos.y, world_pos.z);
|
info!(" • Local Position: ({:.2}, {:.2}, {:.2})", world_pos.x, world_pos.y, world_pos.z);
|
||||||
});
|
});
|
||||||
|
|
||||||
log::logger().flush();
|
log::logger().flush();
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ pub fn compute_world_transforms(world: &mut World, entity_map: &HashMap<FileID,
|
|||||||
let transform_view = world.borrow::<Transform>();
|
let transform_view = world.borrow::<Transform>();
|
||||||
for &entity in entity_map.values() {
|
for &entity in entity_map.values() {
|
||||||
if let Some(transform) = transform_view.get(entity) {
|
if let Some(transform) = transform_view.get(entity) {
|
||||||
if transform.parent().is_none() {
|
if transform.parent.is_none() {
|
||||||
root_entities.push(entity);
|
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>();
|
let rect_transform_view = world.borrow::<RectTransform>();
|
||||||
for &entity in entity_map.values() {
|
for &entity in entity_map.values() {
|
||||||
if let Some(rect_transform) = rect_transform_view.get(entity) {
|
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);
|
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>();
|
let transform_view = world.borrow::<Transform>();
|
||||||
if let Some(transform) = transform_view.get(entity) {
|
if let Some(transform) = transform_view.get(entity) {
|
||||||
compute_local_matrix(
|
compute_local_matrix(
|
||||||
transform.local_position(),
|
Some(&transform.local_position),
|
||||||
transform.local_rotation(),
|
Some(&transform.local_rotation),
|
||||||
transform.local_scale(),
|
Some(&transform.local_scale),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
// No transform component, skip this entity
|
// 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>();
|
let transform_view = world.borrow::<Transform>();
|
||||||
transform_view
|
transform_view
|
||||||
.get(entity)
|
.get(entity)
|
||||||
.map(|t| t.children().to_vec())
|
.map(|t| t.children.clone())
|
||||||
.unwrap_or_default()
|
.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) {
|
if let Some(rect_transform) = rect_transform_view.get(entity) {
|
||||||
let transform = &rect_transform.transform;
|
let transform = &rect_transform.transform;
|
||||||
let local = compute_local_matrix(
|
let local = compute_local_matrix(
|
||||||
transform.local_position(),
|
Some(&transform.local_position),
|
||||||
transform.local_rotation(),
|
Some(&transform.local_rotation),
|
||||||
transform.local_scale(),
|
Some(&transform.local_scale),
|
||||||
);
|
);
|
||||||
let children = transform.children().to_vec();
|
let children = transform.children.clone();
|
||||||
(local, children)
|
(local, children)
|
||||||
} else {
|
} else {
|
||||||
// No rect transform component, skip this entity
|
// No rect transform component, skip this entity
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ pub mod stripped_reference;
|
|||||||
pub mod transform;
|
pub mod transform;
|
||||||
|
|
||||||
pub use box_collider::BoxCollider;
|
pub use box_collider::BoxCollider;
|
||||||
pub use capsule_collider::CapsuleCollider;
|
|
||||||
pub use collider::Collider;
|
pub use collider::Collider;
|
||||||
pub use game_object::GameObject;
|
pub use game_object::GameObject;
|
||||||
pub use mesh_filter::MeshFilter;
|
pub use mesh_filter::MeshFilter;
|
||||||
@@ -22,6 +21,5 @@ pub use prefab_instance::{
|
|||||||
PrefabInstance, PrefabInstanceComponent, PrefabModification, PrefabResolver,
|
PrefabInstance, PrefabInstanceComponent, PrefabModification, PrefabResolver,
|
||||||
};
|
};
|
||||||
pub use renderer::Renderer;
|
pub use renderer::Renderer;
|
||||||
pub use sphere_collider::SphereCollider;
|
|
||||||
pub use stripped_reference::StrippedReference;
|
pub use stripped_reference::StrippedReference;
|
||||||
pub use transform::{RectTransform, Transform};
|
pub use transform::{RectTransform, Transform};
|
||||||
|
|||||||
@@ -10,48 +10,11 @@ use sparsey::Entity;
|
|||||||
/// Transform determines the Position, Rotation, and Scale of each object in the scene.
|
/// Transform determines the Position, Rotation, and Scale of each object in the scene.
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct Transform {
|
pub struct Transform {
|
||||||
local_position: Option<Vector3>,
|
pub local_position: Vector3,
|
||||||
local_rotation: Option<Quaternion>,
|
pub local_rotation: Quaternion,
|
||||||
local_scale: Option<Vector3>,
|
pub local_scale: Vector3,
|
||||||
parent: Option<Entity>,
|
pub parent: Option<Entity>,
|
||||||
children: Vec<Entity>,
|
pub 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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnityComponent for Transform {
|
impl UnityComponent for Transform {
|
||||||
@@ -98,7 +61,7 @@ impl UnityComponent for Transform {
|
|||||||
// Set parent (might be None if unresolved)
|
// Set parent (might be None if unresolved)
|
||||||
let resolved_parent =
|
let resolved_parent =
|
||||||
parent_ref.and_then(|r| entity_map.get(&r.file_id).copied());
|
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
|
// Resolve any previously unresolved children
|
||||||
let mut all_children = children_entities.clone();
|
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 {
|
Some(Self {
|
||||||
local_position,
|
local_position: local_position.unwrap_or_default(),
|
||||||
local_rotation,
|
local_rotation: local_rotation.unwrap_or_default(),
|
||||||
local_scale,
|
local_scale: local_scale.unwrap_or_else(|| Vector3::new(1.0, 1.0, 1.0)),
|
||||||
parent: None,
|
parent: None,
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
})
|
})
|
||||||
@@ -218,7 +181,7 @@ impl UnityComponent for RectTransform {
|
|||||||
// Set parent (might be None if unresolved)
|
// Set parent (might be None if unresolved)
|
||||||
let resolved_parent =
|
let resolved_parent =
|
||||||
parent_ref.and_then(|r| entity_map.get(&r.file_id).copied());
|
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
|
// Resolve any previously unresolved children
|
||||||
let mut all_children = children_entities.clone();
|
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 {
|
let transform = Transform {
|
||||||
local_position,
|
local_position: local_position.unwrap_or_default(),
|
||||||
local_rotation,
|
local_rotation: local_rotation.unwrap_or_default(),
|
||||||
local_scale,
|
local_scale: local_scale.unwrap_or_else(|| Vector3::new(1.0, 1.0, 1.0)),
|
||||||
parent: None,
|
parent: None,
|
||||||
children: Vec::new(),
|
children: Vec::new(),
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user