From 258c28f958a784fda02eac3ff8a0b4a255fd7bbc Mon Sep 17 00:00:00 2001 From: "Alaric.Baraou" Date: Sat, 27 Apr 2024 08:11:33 +0800 Subject: [PATCH] Raycaster: add Raycaster.stopTraversal() (#27709) * Raycaster: add stop traversal on demand * Raycaster: fix CI warn Implicit operand conversion * Raycaster: stopTraversal on current branch only * raycast stop traversal of children when return true * Update Raycaster.js Fix code style. * Update Raycaster.js Fix check. --------- Co-authored-by: Michael Herzog --- src/core/Raycaster.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/Raycaster.js b/src/core/Raycaster.js index ef72c6b518a81..f6cc047d1530d 100644 --- a/src/core/Raycaster.js +++ b/src/core/Raycaster.js @@ -101,13 +101,15 @@ function ascSort( a, b ) { function intersect( object, raycaster, intersects, recursive ) { + let stopTraversal = false; + if ( object.layers.test( raycaster.layers ) ) { - object.raycast( raycaster, intersects ); + stopTraversal = object.raycast( raycaster, intersects ); } - if ( recursive === true ) { + if ( recursive === true && stopTraversal !== true ) { const children = object.children;