From 7d26284fbd9cff16de0cbfc78b94fc0451120e8b Mon Sep 17 00:00:00 2001 From: Diego Marcos Segura Date: Mon, 9 Jun 2025 15:58:12 -0700 Subject: [PATCH] Traverse object3D hierarchy looking for SplatMesh to create an implcit SparkRenderer (fix #38) --- src/SparkRenderer.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/SparkRenderer.ts b/src/SparkRenderer.ts index 6b98b93..7e25256 100644 --- a/src/SparkRenderer.ts +++ b/src/SparkRenderer.ts @@ -43,9 +43,20 @@ let hasSparkRenderer = false; let sparkRendererInstance: SparkRenderer; +function containsSplatMesh(object3D) { + let hasSplatMesh = false; + if (object3D instanceof SplatMesh) { + return true; + } + object3D.traverse((child) => { + hasSplatMesh = hasSplatMesh || child instanceof SplatMesh; + }); + return hasSplatMesh; +} + const sceneAdd = THREE.Scene.prototype.add; THREE.Scene.prototype.add = function (object) { - hasSplatMesh = hasSplatMesh || object instanceof SplatMesh; + hasSplatMesh = hasSplatMesh || containsSplatMesh(object); hasSparkRenderer = hasSparkRenderer || object instanceof SparkRenderer; sceneAdd.call(this, object); return this;