From ecd5366870d6bca4b06778b1b57644dfff0240dd Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Thu, 2 Apr 2026 19:46:08 +0200 Subject: [PATCH] Remove unused audio assets and update sound emitter rendering --- src/runtime-three/runtime-host.ts | 2 -- src/viewport-three/viewport-host.ts | 42 ++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/runtime-three/runtime-host.ts b/src/runtime-three/runtime-host.ts index 35fbb81d..78af6891 100644 --- a/src/runtime-three/runtime-host.ts +++ b/src/runtime-three/runtime-host.ts @@ -77,7 +77,6 @@ export class RuntimeHost { private projectAssets: Record = {}; private loadedModelAssets: Record = {}; private loadedImageAssets: Record = {}; - private loadedAudioAssets: Record = {}; private resizeObserver: ResizeObserver | null = null; private animationFrame = 0; private previousFrameTime = 0; @@ -170,7 +169,6 @@ export class RuntimeHost { this.projectAssets = projectAssets; this.loadedModelAssets = loadedModelAssets; this.loadedImageAssets = loadedImageAssets; - this.loadedAudioAssets = loadedAudioAssets; if (this.currentWorld !== null) { this.applyWorld(); diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 1f43dc38..2c9ae64c 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -467,7 +467,7 @@ export class ViewportHost { case "playerStart": return this.createPlayerStartRenderObjects(entity.id, entity.position, entity.yawDegrees, selected); case "soundEmitter": - return this.createSoundEmitterRenderObjects(entity.id, entity.position, entity.radius, selected); + return this.createSoundEmitterRenderObjects(entity.id, entity.position, entity.refDistance, entity.maxDistance, selected); case "triggerVolume": return this.createTriggerVolumeRenderObjects(entity.id, entity.position, entity.size, selected); case "teleportTarget": @@ -672,9 +672,16 @@ export class ViewportHost { }; } - private createSoundEmitterRenderObjects(entityId: string, position: Vec3, radius: number, selected: boolean): EntityRenderObjects { + private createSoundEmitterRenderObjects( + entityId: string, + position: Vec3, + refDistance: number, + maxDistance: number, + selected: boolean + ): EntityRenderObjects { const markerColor = selected ? SOUND_EMITTER_SELECTED_COLOR : SOUND_EMITTER_COLOR; - const displayRadius = Math.max(0.5, radius); + const displayRefDistance = Math.max(0.4, refDistance); + const displayMaxDistance = Math.max(displayRefDistance, maxDistance); const group = new Group(); group.position.set(position.x, position.y, position.z); @@ -689,28 +696,43 @@ export class ViewportHost { }) ); - const radiusShell = new Mesh( - new SphereGeometry(displayRadius, 16, 12), + const refDistanceShell = new Mesh( + new SphereGeometry(displayRefDistance, 16, 12), new MeshStandardMaterial({ color: markerColor, emissive: markerColor, - emissiveIntensity: selected ? 0.08 : 0.02, + emissiveIntensity: selected ? 0.1 : 0.03, roughness: 0.8, metalness: 0, transparent: true, - opacity: selected ? 0.16 : 0.08, + opacity: selected ? 0.18 : 0.09, wireframe: true }) ); - radiusShell.userData.nonPickable = true; + refDistanceShell.userData.nonPickable = true; - for (const mesh of [core, radiusShell]) { + const maxDistanceShell = new Mesh( + new SphereGeometry(displayMaxDistance, 16, 12), + new MeshStandardMaterial({ + color: markerColor, + emissive: markerColor, + emissiveIntensity: selected ? 0.06 : 0.015, + roughness: 0.82, + metalness: 0, + transparent: true, + opacity: selected ? 0.12 : 0.06, + wireframe: true + }) + ); + maxDistanceShell.userData.nonPickable = true; + + for (const mesh of [core, refDistanceShell, maxDistanceShell]) { this.tagEntityMesh(mesh, entityId, "soundEmitter", group); } return { group, - meshes: [core, radiusShell] + meshes: [core, refDistanceShell, maxDistanceShell] }; }