This repository was archived by the owner on Oct 16, 2026. It is now read-only.
Repository navigation
Loop an imported animation through asset_configure_import - #1466
Merged
Merged
Conversation
An animation imported from a .glb loops only when the scene importer's
_subresources option says so, and no tool wrote it. asset_configure_import
now takes {"_subresources": {"animations": {"idle": {"settings/loop_mode":
1}}}} for a scene import, merges it into the sidecar's dictionary,
reimports, and checks both the sidecar and the reloaded scene, putting the
old file back when either does not hold.
Measured first on 4.5.1, 4.6.2 and 4.7.2 by the new probe
tools/vibe/probes/scene_import_loop_engine.py. The engine refuses
nothing: mode 3 loads as 3, -1 as 255, a word as 0, and a name the model
does not have is kept and applied to nothing. So the tool takes 0 to 2 or
the declared labels None, Linear and Pingpong, and only names the scene
has. After one reimport the engine writes every option a configured
animation has, 2056 keys and about 69 KB, so the edit parses only the path
it changes and keeps every other entry's text, the sidecar cap is 16 MiB,
and resource_inspect reports _subresources by name with each animation's
loop mode instead of the text.
The bridge reads the loop modes from the packed scene's state rather than
an instance, so nothing in the scene is instanced in the editor. An
AnimationMixer keeps its libraries as one libraries Dictionary on 4.5 and
as one libraries/<name> property each from 4.6; the read takes both, and
the probe found it agrees with instancing on all three lines.
Refs #1425
…ixes # Conflicts: # CHANGELOG.md
saworbit
enabled auto-merge (squash)
October 15, 2026 13:13
Jobs.LongLaunchRunsAsJobAndCancelStopsIt read the job id from _meta, which only a job that finished inside the server's wait carries. On a slower runner the first answer is working, with the job in the text, and the test threw. It failed that way in CI's release-style suite pass on #1466 and does locally with the wait set to 0. It now reads either. Refs #1428
On CI's 4.7.2 runner the editor's own import of the model held reimport_files past the 10 seconds one bridge command may wait, so the harness's way-back call failed. The tool put the previous sidecar back and said so, and the registry then replaced that answer with the bare reimport error: an unknown outcome whose remedy, request_id, this tool does not take. A handler that answers a failed bridge request itself now marks its error, and the registry keeps it in the live envelope. asset_reimport's advice to wait a timeout out as a job was dropped the same way and is marked too. asset_configure_import starts its reimport detached and reads it for up to 45 seconds, and a timeout there names a retry after the editor is idle rather than request_id. Refs #1425
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An animation imported from a
.glbloops only when the scene importer's_subresourcesoption says so, and no tool wrote it.asset_configure_importrefused the scene importer, so a character's idle played once and froze, and the only way out was editing the.importfile behind the editor.asset_configure_importnow takes, for a scene import:{"_subresources": {"animations": {"idle": {"settings/loop_mode": 1}}}}It merges that into the sidecar's dictionary, reimports, and checks both the sidecar and the reloaded scene. If either does not hold, it puts the old file back, as it already does for audio.
Measured first.
tools/vibe/probes/scene_import_loop_engine.py, on 4.5.1, 4.6.2 and 4.7.2, with the harness model. All three lines gave the same answers:settings/loop_modeasNone,Linear,Pingpongat all three tags, and checks nothing. Mode 3 loads as 3, -1 as 255,"linear"as 0, andtrueand1.0as 1. A name the model does not have is kept and applied to nothing. No ERROR, no WARNING, uid kept. So the tool takes 0 to 2 or the declared labels, and only names the scene has, read from the editor before writing.resource_inspectreports_subresourcesby name with each animation's loop mode, instead of the text.librariesDictionary on 4.5, and as onelibraries/<name>property each from 4.6. The bridge reads the loop modes from the packed scene's state, both layouts, so nothing in the model is instanced in the editor. The probe found the state agrees with an instance in every case. The binds have the same hashes on all three lines.An extension from before this change lists no animations, so a scene loop change is refused
501naming the addon, and nothing is written.The amendment in
docs/SURFACE_AMENDMENTS.mdrecords the widening and its evidence, as the original amendment requires.tools/listgrows by about 160 bytes. With #1465 that comes to about 210,350 of the 210,400 full budget, so I kept the new text short rather than raise it.Found on CI. On the 4.7.2 runner the editor's own import of the model held
reimport_filesfor 8 to 11 seconds, past the 10 seconds one bridge command may wait, and the way-back call failed:request_idas its fix, which this tool does not take. A handler that answers a failed bridge request itself now marks its error, and the registry keeps it in the live envelope.asset_reimport's advice to wait a timeout out as a job was lost the same way, and is marked too.AssetConfigureImport.KeepsItsOwnFailureAnswerdrives it through the real dispatcher and fails without either change.asset_configure_importnow starts its reimport detached and reads it for up to 45 seconds. A timeout names a retry once the editor is idle.Jobs.LongLaunchRunsAsJobAndCancelStopsIt, from Run a runtime_launch past 120 seconds as a job #1465, read the job id only from a job that finished inside the server's wait. On a slower runner it threw. It now reads either answer shape.Tests
AssetConfigureImport.SceneRequestValidation,SceneSidecarEditandSceneVerifiesAndRollsBack, andTools.ResourceInspectSummarisesSubresources. Each fails with its part taken out: the loop overwrite, the scene read-back, the summary, the name check and the mode range.resource_inspect, and throughanim_list_trackson an instance of the model;previous.Fixes #1425