From 09466f34d0b140538436b12fba1f427535ee341c Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 31 Mar 2026 20:04:57 +0200 Subject: [PATCH] Add support for pointLight and spotLight in viewport focus calculations --- src/viewport-three/viewport-focus.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/viewport-three/viewport-focus.ts b/src/viewport-three/viewport-focus.ts index 04d7bd56..a7b68ddb 100644 --- a/src/viewport-three/viewport-focus.ts +++ b/src/viewport-three/viewport-focus.ts @@ -317,6 +317,12 @@ function createTriggerVolumeFocusTarget(position: Vec3, size: Vec3): ViewportFoc function includeEntity(bounds: FocusBoundsAccumulator, entity: EntityInstance) { switch (entity.kind) { + case "pointLight": + includeSphereEntity(bounds, entity.position, Math.max(0.5, entity.distance)); + break; + case "spotLight": + includeSphereEntity(bounds, entity.position, Math.max(0.75, entity.distance)); + break; case "playerStart": includePlayerStart(bounds, entity.position); break; @@ -337,6 +343,10 @@ function includeEntity(bounds: FocusBoundsAccumulator, entity: EntityInstance) { function createEntityFocusTarget(entity: EntityInstance): ViewportFocusTarget { switch (entity.kind) { + case "pointLight": + return createSphereEntityFocusTarget(entity.position, Math.max(0.6, entity.distance), 0.75); + case "spotLight": + return createSphereEntityFocusTarget(entity.position, Math.max(0.8, entity.distance), 0.9); case "playerStart": return createPlayerStartFocusTarget(entity.position); case "soundEmitter":