fix(pointer): proper direction
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user