Reparent a Blueprint BEFORE trying to load it.

This is something I’ve wanted for quite a while, but recently even more so.

My situation is that I initially created a Weapon class based on AActor. Now that I’m deeper into my project, I’ve realised that in my case it makes considerably more sense to instead base this on UActorComponent instead. Rebasing it wasn’t too challenging in C++, but it does mean that all of my initial blueprint classes are now completely invalid, even though they share almost all the same parameters and functions.

Unfortunately Blueprints can’t be reparented at the moment unless they are loaded (and if that class no longer exists in the C++, then the engine will crash). Can we have a ‘Reparent’ option in the right-click context menu in the content browser, in order to avoid the crash and make refactoring insanely easier?

+1 definitely would be a useful addition, I’ve needed it myself multiple times.

You know you can solve this with redirects though? Add the following to DefaultEngine.ini (without A/U class prefixes) and reload the project:



[/Script/Engine.Engine]
+ActiveClassRedirects=(OldClassName="MyOldActorClassName",NewClassName="/Script/MyModuleName.MyNewComponentClassName",InstanceOnly="false")


It’ll map all references to C++ class names within assets to a different class.

4 Likes

Ahh, that’s a nice workaround… certainly better than crashing like it does currently!

You can reparent now by going to file then reparent

Yes, but if the original class no longer exists - then the engine will crash or you will be unable to open the Blueprint.

2 Likes

@TheJamsh – Just purchased Satellite Command… Can’t wait to give it a try… Didn’t know it was out! Thankfully I clicked on your link in your footer!

teak

:smiley: enjoy! (10chars)

This is honestly still a valid suggestion, as you still cannot reparent blueprints in engine if their parent class is moved/missing.

1 Like