I’ve spent the day trying to find a way to add a custom texture finder to the UMG widget editor. I’m wondering if anyone else has had success with this.
The UMGEditorModule only implements IModuleInterface, IHasMenuExtensibility, and IHasToolBarExtensibility so it appears that right off the bat I can’t extend the PropertyEditor in the normal way. There are custom details which are set up for various widget properties (like the anchor setting UI, for instance) however, it appears that these are set up in a non-extensible way: the details panel of the UMG editor is its own special thing (an SWidgetDetailsView) which binds a hardcoded set of CustomPropertyTypeLayouts in its RegisterCustomizations() function. I can’t replicate the way it does this, because it requires access to the SWidgetDetailsView’s PropertyView. The PropertyView is exposed, but I don’t see any way to actually get the SWidgetDetailsView instance to get it, since it doesn’t exist at all until the user opens the UMG editor, so I can’t add extensions to it when my editor module loads. There aren’t any delegates or anything which I could conceivably use to register with the SWidgetDetailsView when it does its own registration of extensions.
In the SDesignerView, which I believe is the UMG editor window which contains the SWidgetDetailsView, there’s an array TArray< TSharedRef > DesignerExtensions which is commented as “Extensions for the designer to allow for custom widgets to be inserted onto the design surface as selection changes” but I think I’m in the same situation as the SWidgetDetailsView: the window doesn’t exist when the editor starts up, and there’s no way to add my extensions to it without the instance which I don’t have access to. Damningly, there’s also this comment in its Construct() function: “TODO UMG - Register these with the module through some public interface to allow for new extensions to be registered.” so it looks like there’s no way to add to it externally.
Am I just completely screwed, here? Or is there some clever way I can do this?