This issue is caused by us forcing user defined structs to be loaded as part of AttributeTypes::Initialize.  That is called after at the ObjectSystemReady run phase during engine initialization however, this is prior to plugins such as control rig being loaded (control rig is set to predefault load phase). 

We cannot fix this by moving AttributeTypes::Initialize to be called at EndOfEngineInit because, in cooked builds, FAttributeCurve::Serialize is called prior to EndOfEngineInit and this requires the attributes to have been initialized.  Methods like UE::Anim::AttributeTypes::GetTypeOperator will attempt to lazy load the attributes however, because FAttributeCurve::Serialize is running on a worker thread so we can't call LoadSynchronous from there.

Steps to Reproduce
  1. Create a user defined struct that contains a RigPose
  2. In the project settings, set your user defined struct as a non-blendable animation attribute (you may have to drag the struct from the content browser onto the widget in the project settings to get this to work)
  3. Save and close the project
  4. Reopen the project
  5. Open your user defined struct
    1. Expected behaviour: user defined struct is marked as successfully compiled as it was before restarting the project 
    2. Actual behaviour: user defined struct is marked as failed to compile

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-202840 in the post.

Login to Vote

ComponentUE - Anim - Runtime
Affects Versions5.3.2
Target Fix5.4
Fix Commit31251430
Main Commit31251454
Release Commit31251435
CreatedDec 18, 2023
ResolvedFeb 7, 2024
UpdatedMar 4, 2024