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!
Just tried this in 4.8.0. Appears to have been fixed.
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.