From 987e712c94bf40738b53d6cc2d175d8cb458b2f4 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 31 Mar 2026 06:45:43 +0200 Subject: [PATCH] Update interaction validation to support Interactable entities and specific triggers --- src/document/scene-document-validation.ts | 35 ++++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/document/scene-document-validation.ts b/src/document/scene-document-validation.ts index 998b3fb6..ffafee6d 100644 --- a/src/document/scene-document-validation.ts +++ b/src/document/scene-document-validation.ts @@ -294,26 +294,39 @@ function validateInteractionLink(link: InteractionLink, path: string, document: return; } - if (sourceEntity.kind !== "triggerVolume") { + if (sourceEntity.kind !== "triggerVolume" && sourceEntity.kind !== "interactable") { diagnostics.push( createDiagnostic( "error", "invalid-interaction-source-kind", - "Interaction links may only source from Trigger Volume entities in the current slice.", + "Interaction links may only source from Trigger Volume or Interactable entities in the current slice.", `${path}.sourceEntityId` ) ); } - if (link.trigger !== "enter" && link.trigger !== "exit") { - diagnostics.push( - createDiagnostic( - "error", - "unsupported-interaction-trigger", - `Unsupported interaction trigger ${String(link.trigger)}.`, - `${path}.trigger` - ) - ); + if (sourceEntity.kind === "triggerVolume") { + if (link.trigger !== "enter" && link.trigger !== "exit") { + diagnostics.push( + createDiagnostic( + "error", + "unsupported-interaction-trigger", + "Trigger Volume links may only use enter or exit triggers.", + `${path}.trigger` + ) + ); + } + } else if (sourceEntity.kind === "interactable") { + if (link.trigger !== "click") { + diagnostics.push( + createDiagnostic( + "error", + "unsupported-interaction-trigger", + "Interactable links may only use the click trigger.", + `${path}.trigger` + ) + ); + } } switch (link.action.type) {