From e95da5f496478cf0e8ba988a2e64d9e9d226e20a Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 14 Apr 2026 02:50:23 +0200 Subject: [PATCH] Add function to get control effect resolution key --- src/controls/control-surface.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/controls/control-surface.ts b/src/controls/control-surface.ts index 3b8852b6..712ae239 100644 --- a/src/controls/control-surface.ts +++ b/src/controls/control-surface.ts @@ -1105,6 +1105,39 @@ export function getControlChannelDescriptorKey( )}`; } +export function getControlEffectResolutionKey(effect: ControlEffect): string { + switch (effect.type) { + case "setActorPresence": + return `state:actorPresence:${getControlTargetRefKey(effect.target)}`; + case "playModelAnimation": + case "stopModelAnimation": + return `state:modelAnimationPlayback:${getControlTargetRefKey(effect.target)}`; + case "setModelInstanceVisible": + return `state:modelVisibility:${getControlTargetRefKey(effect.target)}`; + case "playSound": + case "stopSound": + return `state:soundPlayback:${getControlTargetRefKey(effect.target)}`; + case "setSoundVolume": + return `channel:sound.volume:${getControlTargetRefKey(effect.target)}`; + case "setInteractionEnabled": + return `state:interactionEnabled:${getControlTargetRefKey(effect.target)}`; + case "setLightEnabled": + return `state:lightEnabled:${getControlTargetRefKey(effect.target)}`; + case "setLightIntensity": + return `channel:light.intensity:${getControlTargetRefKey(effect.target)}`; + case "setLightColor": + return `state:lightColor:${getControlTargetRefKey(effect.target)}`; + case "setAmbientLightIntensity": + return `channel:ambientLight.intensity:${getControlTargetRefKey(effect.target)}`; + case "setAmbientLightColor": + return `state:ambientLightColor:${getControlTargetRefKey(effect.target)}`; + case "setSunLightIntensity": + return `channel:sunLight.intensity:${getControlTargetRefKey(effect.target)}`; + case "setSunLightColor": + return `state:sunLightColor:${getControlTargetRefKey(effect.target)}`; + } +} + function getResolvedDiscreteControlStateKey( state: RuntimeResolvedDiscreteControlState ): string {