fix(pointer): proper direction

This commit is contained in:
Nova
2023-05-31 08:48:24 -04:00
parent f7a9976760
commit 187d6ee7d1
2 changed files with 9 additions and 4 deletions

View File

@@ -18,8 +18,8 @@ pub struct Pointer {}
impl Pointer { impl Pointer {
fn ray_march(&self, space: &Arc<Spatial>, field: &Field) -> RayMarchResult { fn ray_march(&self, space: &Arc<Spatial>, field: &Field) -> RayMarchResult {
field.ray_march(Ray { field.ray_march(Ray {
origin: vec3(0_f32, 0_f32, 0_f32), origin: vec3(0.0, 0.0, 0.0),
direction: vec3(0_f32, 0_f32, 1_f32), direction: vec3(0.0, 0.0, -1.0),
space: space.clone(), space: space.clone(),
}) })
} }
@@ -42,7 +42,7 @@ impl InputSpecialization for Pointer {
local_to_handler_matrix: Mat4, local_to_handler_matrix: Mat4,
) -> InputDataType { ) -> InputDataType {
let (_, orientation, origin) = local_to_handler_matrix.to_scale_rotation_translation(); let (_, orientation, origin) = local_to_handler_matrix.to_scale_rotation_translation();
let direction = local_to_handler_matrix.transform_vector3(vec3(0_f32, 0_f32, 1_f32)); let direction = local_to_handler_matrix.transform_vector3(vec3(0.0, 0.0, -1.0));
let ray_march = self.ray_march(&distance_link.method.spatial, &distance_link.handler.field); let ray_march = self.ray_march(&distance_link.method.spatial, &distance_link.handler.field);
let deepest_point = (direction * ray_march.deepest_point_distance) + origin; let deepest_point = (direction * ray_march.deepest_point_distance) + origin;

View File

@@ -62,7 +62,12 @@ impl MousePointer {
let ray = ray_from_mouse(mouse.pos).unwrap(); let ray = ray_from_mouse(mouse.pos).unwrap();
self.spatial.set_local_transform( self.spatial.set_local_transform(
Mat4::look_to_rh(ray.pos.into(), -Vec3::from(ray.dir), vec3(0.0, 1.0, 0.0)).inverse(), Mat4::look_to_rh(
Vec3::from(ray.pos),
Vec3::from(ray.dir),
vec3(0.0, 1.0, 0.0),
)
.inverse(),
); );
{ {
// Set pointer input datamap // Set pointer input datamap