We have a bunch of blueprint classes derived from a single C++ class. We also have some code that inspects CDOs in the editor in order to check what components a given class uses.
It appears that if a component is removed from the C++ class, the CDOs for all of the blueprints remain unchanged and still contain the component that was removed even though instances of the blueprint do not. If I manually recompile and save each of these blueprints, the CDO is successfully updated.
How can I fix this? Can I at least force these blueprints to regenerate their CDO from code? How is this best accomplished?
I’ve worked around this by doing a FKismetEditorUtilities::CompileBlueprint( blueprint ); before I inspect the particular blueprint’s CDO, but this should really be invalidated in the first place by the code change to the parent class. It’s not the greatest from a performance point of view to have to recompile the blueprint so frequently just because I can’t trust that it’s CDO is up to date.
Thanks for your report! We’ve brought this to the attention of the developers who are investigating possible causes (UE-14592). I’ll let you know as soon as I see an update on the issue.
Can you give this a try in the 4.8 Preview 2? This should be fixed internally, and I believe the fix made it into the Preview build. Let me know if you still experience this issue. Thanks!
As mentioned in this post, I believe we are experiencing this issue here. We are on 4.8, and upgrading to a newer version of unreal isnt possible at this time.
Is there any work around, or a specific CL I could pull to get this fix?
I think your issue may actually be a little bit different from the issue described here. I moved your post into the Bug Reports section, and we will have someone take a look at what is going on.