Description

A licensee reports that the values of an FInstancedStruct do not get properly duplicated if they differ from the default values of the Actor or TArray to which they belong.

 

Possible short-term workaround:

The issue indeed seem to be the implementation of EditorUtilities::CopyActorProperties which does not copy the full struct, but just individual uproperties. Since instanced structs do not have uproperties, nothing gets copied.

 

Removing the bNeedsGenericCopy = false; from the struct case in the above function, will fix the issue, but I'm not sure what other issues it might bring.

Steps to Reproduce
  1. In C++, create an actor type called ATestInstancedStruct with a FInstancedStruct member.
  2. In the ctor, set the member to Make<FVector>() and assign X = 3.14159f
  3. Add ATestInstancedStruct to your level.
  4. Select your actor instance and inspect the details panel.
  5. Find your member and change the X to 42.0f
  6. With your actor in the level still highlighted, select "Convert Selection to Blueprint class..."
  7. In the new created blueprint, go to your member
  8. Notice it is no longer valid and does not point to a FVector

Expected:

  1. FInstancedStruct member in created blueprint still has a FVector and X is still set to 42.0f.

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - AI
Affects Versions5.3.2
Target Fix5.5
CreatedJan 24, 2024
UpdatedFeb 7, 2024