Blacksite/third_party/bevy_ufbx/tests/utils.rs
Rbanh b5e561904c
Some checks failed
CI / Format, lint, test, build (push) Has been cancelled
Upgrade to Bevy 0.19 and harden editor workflows
2026-07-09 23:43:47 -04:00

97 lines
2.3 KiB
Rust

//! Tests for utility conversion functions.
use bevy::prelude::*;
use bevy_ufbx::utils::{convert_matrix, convert_transform};
#[test]
fn test_convert_matrix() {
// Create a simple ufbx matrix
let ufbx_matrix = ufbx::Matrix {
m00: 1.0,
m01: 0.0,
m02: 0.0,
m03: 10.0,
m10: 0.0,
m11: 1.0,
m12: 0.0,
m13: 20.0,
m20: 0.0,
m21: 0.0,
m22: 1.0,
m23: 30.0,
};
let mat4 = convert_matrix(&ufbx_matrix);
// Check that translation is preserved
assert_eq!(mat4.w_axis.x, 10.0);
assert_eq!(mat4.w_axis.y, 20.0);
assert_eq!(mat4.w_axis.z, 30.0);
assert_eq!(mat4.w_axis.w, 1.0);
// Check diagonal elements
assert_eq!(mat4.x_axis.x, 1.0);
assert_eq!(mat4.y_axis.y, 1.0);
assert_eq!(mat4.z_axis.z, 1.0);
}
#[test]
fn test_convert_transform() {
let ufbx_transform = ufbx::Transform {
translation: ufbx::Vec3 {
x: 1.0,
y: 2.0,
z: 3.0,
},
rotation: ufbx::Quat {
x: 0.0,
y: 0.0,
z: 0.0,
w: 1.0,
},
scale: ufbx::Vec3 {
x: 2.0,
y: 2.0,
z: 2.0,
},
};
let transform = convert_transform(&ufbx_transform);
assert_eq!(transform.translation, Vec3::new(1.0, 2.0, 3.0));
assert_eq!(transform.rotation, Quat::IDENTITY);
assert_eq!(transform.scale, Vec3::new(2.0, 2.0, 2.0));
}
#[test]
fn test_convert_transform_with_rotation() {
// Test with a 90-degree rotation around Y axis
let half_sqrt2 = 0.7071067811865476;
let ufbx_transform = ufbx::Transform {
translation: ufbx::Vec3 {
x: 0.0,
y: 0.0,
z: 0.0,
},
rotation: ufbx::Quat {
x: 0.0,
y: half_sqrt2,
z: 0.0,
w: half_sqrt2,
},
scale: ufbx::Vec3 {
x: 1.0,
y: 1.0,
z: 1.0,
},
};
let transform = convert_transform(&ufbx_transform);
// Check rotation is preserved
assert!((transform.rotation.x - 0.0).abs() < 0.001);
assert!((transform.rotation.y - half_sqrt2 as f32).abs() < 0.001);
assert!((transform.rotation.z - 0.0).abs() < 0.001);
assert!((transform.rotation.w - half_sqrt2 as f32).abs() < 0.001);
}