Enable reparenting components in blueprint

Hey!

There is this artifically made rule in Unreal, that it’s impossible to reparent components in blueprints, forcing you to use hierarchy of components setuped in the class that you inharit from.

There is no issue to do it in c++. It takes away so much possibilities and flexibility. It forces people to make hacks and ungly solutions for the problem that does have to be there - it’s artificial/man made.

I don’t buy the argument that “it’s good for people because they can’t accidentaly destroy something” - it’s game engine. People are developing complicated systems. They should be allowed to destroy whatever they want in order to achive their goals.

Could we have at least an option in the engine to turn it off or on, so developers can decide?

Thank you!

Have a great day!

Steps to Reproduce

  • Make a blueprint A
  • Create 2 components or more
  • Create blueprint B inhariting from A
  • Try to change the hierarchy of components added in class A in class B - it can be done in the class A.
  • It is expect to be able to reoganize components structure at any point

Hello, this is not a feature we will consider implementing. It will add complexity to:

  • Defining inheritance behavior
  • Understanding that behavior as a user

And allow the feature would introduce a support burden, investigating finding bugs for edge cases during:

  • Handling conflicts duringn immediate propagation when making edits (modifying parent class hierarchy when child class is already loaded). A parent class’s changed hierarchy gets propagated on parent BP recompile. But you can edit any number of BPs before recompiling. What if the changes are incompatible: for example component A being component B’s parent in one class, but B being A’s parent in a subclass? Rules would need reinforcing and bad states need to be handled, likely some form of messaging requiring users to fixup.
  • New forms of hierarchy overrides on load: what if a parent class’s hierarchy changed while the child class had hierarchy overrides, but the child class was not updated immediately.
  • Component initialization order being different between parent and child actor classes.

There isn’t a cvar or a line of code that would implement that missing functionality, so I don’t consider this an artificial rule. We don’t allow reparenting components in blueprints because things would break. As for implementing the missing features, there isn’t an appetite for that within the blueprint team (other priorities). If you have examples of use cases, then I can pass those on to the Scene Graph team. They may consider adding that functionality for their implementing of prefabs, though that won’t help you in the near future.