diff --git a/src/objects/input/mouse_pointer.rs b/src/objects/input/mouse_pointer.rs index b9f470f..bfff3f1 100644 --- a/src/objects/input/mouse_pointer.rs +++ b/src/objects/input/mouse_pointer.rs @@ -207,6 +207,13 @@ impl MousePointer { }; node.enabled() }) + // filter out all the fields with disabled handlers + .filter(|handler| { + let Some(node) = handler.field.spatial.node() else { + return false; + }; + node.enabled() + }) // ray march to all the enabled handlers' fields .map(|handler| { let result = handler.field.ray_march(Ray { diff --git a/src/objects/input/sk_controller.rs b/src/objects/input/sk_controller.rs index ee64ca7..c86c146 100644 --- a/src/objects/input/sk_controller.rs +++ b/src/objects/input/sk_controller.rs @@ -157,6 +157,13 @@ impl SkController { }; node.enabled() }) + // filter out all the fields with disabled handlers + .filter(|handler| { + let Some(node) = handler.field.spatial.node() else { + return false; + }; + node.enabled() + }) // get the unsigned distance to the handler's field (unsigned so giant fields won't always eat input) .map(|handler| { ( diff --git a/src/objects/input/sk_hand.rs b/src/objects/input/sk_hand.rs index b56a791..8e64a8e 100644 --- a/src/objects/input/sk_hand.rs +++ b/src/objects/input/sk_hand.rs @@ -184,6 +184,13 @@ impl SkHand { }; node.enabled() }) + // filter out all the fields with disabled handlers + .filter(|handler| { + let Some(node) = handler.field.spatial.node() else { + return false; + }; + node.enabled() + }) // get the unsigned distance to the handler's field (unsigned so giant fields won't always eat input) .map(|handler| { (