We are using a Blutility that is pretty similar to the one mentioned in UE-73159. When upgrading our Engine from 4.21 to 4.22 I noticed our Blutility wasn’t compiling anymore.
I tested a Blutility inheriting straight from UGlobalEditorUtilityBase and it worked fine, but a Blutility inheriting from a C++ class itself inheriting from UGlobalEditorUtilityBase doesn’t has access to functions such as “For Each Selected Actor”.
It used to work in 4.21. Is this behavior really intended ? And if so, what is the reasoning behind it ?
I checked the internal report and there was a comment that explains why this is marked by design. I edited the report to add that as a public comment on the public issue tracker, after a bit of editing, but this is the comment:
"The user’s plugin is currently a Developer plugin, which means it can also run at runtime.
If they make the plugin an Editor plugin, they will be able to compile."
I hope this helps!
First of all thank you for your answer and thanks for editing the report !
I understand the answer given, but it seems changing the plugin type to Editor doesn’t affect the behavior.
I tried it before posting but went ahead and double checked it : I set the only module contained in the plugin to “type:Editor”.
I created a new Blutility inheriting from our C++ class inheriting itself from UGlobalEditorUtilityBase and yet this newly created Blutility doesn’t have access to desired functions.
I also tried to create a C++ class inheriting from UGlobalEditorUtilityBase straight into our project, outside of any plugin. A Blutility inheriting from this class doesn’t have access to UGlobalEditorUtilityBase’s functions (such as ‘For Each Selected Actor’).
As a side note, the documentation found in this page says the following about type:Developer :
Developer modules will only be loaded in development runtime or editor builds, but never in shipping builds
However, trying to create a Shipping Build of our game with the plugin’s module set as “Developer” still tries to include the plugin in the build, resulting in the same above error.
Which seems like another non-intended behavior, although I am more interested in seeing the first mentioned problem resolved.
Would you have any news about this topic ?