From b635081d62779e67be6f52f85294beadf67ce4ef Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Wed, 1 Apr 2026 04:06:12 +0200 Subject: [PATCH] Add loop property to play animation interaction links and update migration script --- src/app/App.tsx | 25 +++++++++++++++++++++++-- src/document/migrate-scene-document.ts | 3 ++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 04a91bf0..22f3e1b7 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1806,7 +1806,8 @@ export function App({ store, initialStatusMessage }: AppProps) { sourceEntityId: link.sourceEntityId, trigger: link.trigger, targetModelInstanceId, - clipName: link.action.clipName + clipName: link.action.clipName, + loop: link.action.loop }), "Updated play animation link target." ); @@ -1836,12 +1837,32 @@ export function App({ store, initialStatusMessage }: AppProps) { sourceEntityId: link.sourceEntityId, trigger: link.trigger, targetModelInstanceId: link.action.targetModelInstanceId, - clipName + clipName, + loop: link.action.loop }), "Updated play animation clip." ); }; + const updatePlayAnimationLinkLoop = (link: InteractionLink, loop: boolean) => { + if (link.action.type !== "playAnimation") { + return; + } + + commitInteractionLinkChange( + link, + createPlayAnimationInteractionLink({ + id: link.id, + sourceEntityId: link.sourceEntityId, + trigger: link.trigger, + targetModelInstanceId: link.action.targetModelInstanceId, + clipName: link.action.clipName, + loop + }), + "Updated play animation loop setting." + ); + }; + const handleAddPlayAnimationLink = (sourceEntity: InteractionSourceEntity) => { const firstInstance = modelInstanceDisplayList[0]; diff --git a/src/document/migrate-scene-document.ts b/src/document/migrate-scene-document.ts index 6d21fb45..1509af06 100644 --- a/src/document/migrate-scene-document.ts +++ b/src/document/migrate-scene-document.ts @@ -904,7 +904,8 @@ function readInteractionLink(value: unknown, label: string): InteractionLink { sourceEntityId: expectString(value.sourceEntityId, `${label}.sourceEntityId`), trigger, targetModelInstanceId: action.targetModelInstanceId, - clipName: action.clipName + clipName: action.clipName, + loop: action.loop }); case "stopAnimation": return createStopAnimationInteractionLink({