Repository navigation
Experiments WidgetAnimationAuthoring
Status: planned. Run it in a session of its own, and keep its code out of the plugin until the result is known.
Can an editor tool add a UMG widget animation with a property track and keys to a Widget Blueprint, without the Widget Blueprint editor, so that the Widget Blueprint compiles and the animation plays in Play In Editor?
Unreal Engine 5.8 does not answer this: its UMGToolSet reads animation bindings but has no function that creates or edits animations. In Unreal Engine 5.5 the Widget Blueprint editor creates the animation object in code, but tracks and keys are added through Sequencer.
The agreed policy does not depend on the answer: simple motion stays in C++ (see the umg-authoring skill), and timeline animations
are made in the Widget Blueprint editor. A tool would only let agents make or change timeline animations as well.
- A tool call adds the animation
Fade(1 second) to a fixture Widget Blueprint. - The animation has one track:
RenderOpacityof the widgetPanel, with the keys 0 at 0 s and 1 at 1 s. -
blueprint_compilereports no errors, andumg_inspectlists the animation and its binding toPanel. - In Play In Editor, a C++ base with
BindWidgetAnimplays the animation on construct, and two captures show different opacity. -
editor_undoremoves the animation again.
Optional, only after 1-5: a render transform track, and saving and reopening the asset.
- Stop after the first full attempt at step 4, or when three different ways of adding the track have failed. Then write the findings, also when the answer is no.
- Search engine code and read only the functions that matter (grep with a few lines of context). Do not read whole engine files.
- Take at most four captures; check structure with the text of
umg_inspect. - Put the experiment code in the testbed editor module (
Source/AgentMcpTestbedEditor) as a toolset namedexperiment. The plugin DLLs are locked while another editor loads the plugin; the testbed modules are not. - Use a new fixture Widget Blueprint and C++ base; do not change
Content/Samples.
Checked:
-
Engine/Source/Editor/UMGEditor/Private/TabFactory/AnimationTabSummoner.cpp: the "+ Animation" button creates the animation withNewObject<UWidgetAnimation>(WidgetBlueprint, FName(), RF_Transactional). -
Engine/Source/Runtime/UMG/Public/Animation/WidgetAnimation.handPrivate/Animation/WidgetAnimation.cpp:UWidgetAnimation::BindPossessableObject,CanPossessObjectandLocateBoundObjects. -
Engine/Source/Runtime/UMG/Public/Animation/:WidgetAnimationBinding.h,MovieScene2DTransformTrack.h,MovieSceneMarginTrack.handMovieSceneWidgetMaterialTrack.h. -
Engine/Source/Editor/UMGEditor/Private/Animation/UMGDetailKeyframeHandler.cpp: whether a property can be keyed is asked from Sequencer (CanKeyProperty). -
Engine/Source/Editor/UMGEditor/Private/WidgetBlueprintCompiler.cpp:BindWidgetAnimproperties must beTransient.
Search terms that have not been checked: UMovieScene::AddPossessable, UMovieScene::AddTrack, UMovieSceneFloatTrack,
SetPropertyNameAndPath, FMovieSceneFloatChannel, TickResolution, DisplayRate.
Write here what worked, the engine calls in order, what failed and why, and whether a tool is worth building.