From fcd9a9c0ac5bcec4bfef3fa553607f19de914803 Mon Sep 17 00:00:00 2001 From: lukemckinstry Date: Wed, 15 Jan 2025 16:37:51 -0500 Subject: [PATCH] add tile visible event --- packages/engine/Source/Scene/VoxelPrimitive.js | 16 ++++++++++++++++ packages/engine/Source/Scene/VoxelTraversal.js | 1 + 2 files changed, 17 insertions(+) diff --git a/packages/engine/Source/Scene/VoxelPrimitive.js b/packages/engine/Source/Scene/VoxelPrimitive.js index ad825eaf598..54c9f529bf1 100644 --- a/packages/engine/Source/Scene/VoxelPrimitive.js +++ b/packages/engine/Source/Scene/VoxelPrimitive.js @@ -478,6 +478,22 @@ function VoxelPrimitive(options) { */ this.tileLoad = new Event(); + /** + * This event fires once for each visible tile in a frame. + *

+ * This event is fired during the traversal while the frame is being rendered. + * + * @type {Event} + * @default new Event() + * + * @example + * tileset.tileVisible.addEventListener(function() { + * console.log('A tile is visible.'); + * }); + * + */ + this.tileVisible = new Event(); + /** * The event fired to indicate that a tile's content failed to load. *

diff --git a/packages/engine/Source/Scene/VoxelTraversal.js b/packages/engine/Source/Scene/VoxelTraversal.js index 6835e1811b7..91260dbf544 100644 --- a/packages/engine/Source/Scene/VoxelTraversal.js +++ b/packages/engine/Source/Scene/VoxelTraversal.js @@ -968,6 +968,7 @@ function generateOctree(that, sampleCount, levelBlendFactor) { } else { // Store the leaf node information instead // Recursion stops here because there are no renderable children + that._primitive.tileVisible.raiseEvent(); if (useLeafNodes) { const baseIdx = leafNodeCount * 5; const keyframeNode = node.renderableKeyframeNodePrevious;