refactor(input): switch to manual handler order

This commit is contained in:
Nova
2024-04-16 08:00:07 -04:00
parent 226554fadc
commit be2f5b8e37
14 changed files with 414 additions and 150 deletions

View File

@@ -1,4 +1,4 @@
use super::{DistanceLink, InputDataTrait, Pointer};
use super::{InputDataTrait, InputLink, Pointer};
use crate::nodes::{
fields::{Field, Ray, RayMarchResult},
spatial::Spatial,
@@ -29,27 +29,17 @@ impl Pointer {
}
}
impl InputDataTrait for Pointer {
fn compare_distance(&self, space: &Arc<Spatial>, field: &Field) -> f32 {
let ray_info = self.ray_march(space, field);
if ray_info.min_distance > 0.0 {
ray_info.deepest_point_distance + 1000.0
} else {
ray_info
.deepest_point_distance
.hypot(0.001 / ray_info.min_distance)
}
}
fn true_distance(&self, space: &Arc<Spatial>, field: &Field) -> f32 {
fn distance(&self, space: &Arc<Spatial>, field: &Field) -> f32 {
let ray_info = self.ray_march(space, field);
ray_info.min_distance
}
fn update_to(&mut self, distance_link: &DistanceLink, mut local_to_handler_matrix: Mat4) {
fn update_to(&mut self, input_link: &InputLink, mut local_to_handler_matrix: Mat4) {
local_to_handler_matrix =
Mat4::from_rotation_translation(self.orientation.into(), self.origin.into())
* local_to_handler_matrix;
let (_, orientation, origin) = local_to_handler_matrix.to_scale_rotation_translation();
let ray_march = self.ray_march(&distance_link.method.spatial, &distance_link.handler.field);
let ray_march = self.ray_march(&input_link.method.spatial, &input_link.handler.field);
let direction = local_to_handler_matrix
.transform_vector3(vec3(0.0, 0.0, -1.0))
.normalize();