Download

Recompiling blueprints resets my automatically populated arrays

Hi Epic,

When recompiling (and possibly also on hotreload) a blueprint, the PostLoad call in Actorcomponents is called before the actual values of the properties are put in (at least in case of instanced objects). -> somewhere in kismetreinstancerutilities.cpp

This happens only in the opened blueprint view! Any actors already in the world are actually updated correctly.
Removing and readding the Component will do the trick, but also resets my edited values.

If the PostLoad call is supposed to be there for adjusting stuff after the data is loaded, then the editor makes these changes undone and puts in the old content.

I already made a answerhub question: PostLoad called before Blueprint recompile finished

It interferes with automatic array population and i think it’s not as it should be.

Before you ask ‘Why can’t you make the properties transient?’ Because i want to be able to set certain properties in the editor but retain the values into the shipped version :slight_smile:

Example source can be provided.

2 possible solutions:

  1. call PostLoad later (likely to be harder because it could mess up other things)
  2. add a editor only method to uobject or Actorcomponent to be called at the end of recompilation/reinstantiation
  3. a Property specifier which tells the editor not to overwrite these properties on recompile/reinstantiation (InEditorCalculated?)
  • Algorithman