UMGExPlugin - A set of UMG Extensions for UE4

UMG is great. UMG also annoys me greatly sometimes. I took that annoyance and made a plugin that speeds up my workflow greatly.

GitHub link: https://github.com//UMGExPlugin

Features:

  • Widget Lists - Create lists of buttons, sliders, choice selectors easily
  • TableView - Create a table list view thing easily
  • Improved Panel Switching - Widgets not active are destroyed, child widgets are aware of parent. Makes menu navigation really easy
  • Radio Scroller Widget - Its like a radio group and a drop down merged together
  • Tag System - All widgets have labels and tags. Easier to consolidate events.
  • Container Event Wrappers - Container widgets such as WidgetLists offer simplified events for their children so you don’t need 10 button press events if you have 10 buttons. Just one event to handle all buttons, even if buttons are added at runtime.
  • Improved Runtime Widget Manipulation - Add widgets to things at runtime better with things like Widget Lists and other small improvements throughout
  • Improved Widget Propagation - Can skin, re-layout, and change functionality of widget classes and they’ll propagate correctly and easily

I’m open sourcing it hoping that maybe someone in the community will add more cool widget types and functionality. I still have some planned functionality that doesn’t exist yet, I am building functionality as I need it. I’m hoping others will extend on to this as well.

Currently this repo is only tested against the promoted/master branch. I will officially support releases once 4.7 is… released. I have been using this plugin for months and its been pretty awesome to me, hope its awesome to you.

Now here is a really long video that could be super condensed but I was livestreaming so… yeah. If its not available in 1080p, its still processing.

Now this is cool!

Awesome work :slight_smile:

This is really cool ,

thank you very much for sharing this and open sourcing it for :slight_smile:

Nice work !

Woo - UMG Plugin!

This is really cool! Can’t wait to try it out!

  • have a link to the answerhub post for that crash on creation/deletion/recreation with the same name causing a crash? I haven’t seen that one come across my desk yet.

Well now that I’m looking for it, I can’t find it. Will make a new one. Maybe I misread another answerhub.

Also, you watched that garbage’d long video?

shrug wasn’t planning to, but you kinda sound like Strongbad so I just kept it on in the background while killing 4.7 bugs :slight_smile:

Lmao, in any case, just put this up.

Nice job. That makes the work much easier. How about to integrate this into the official support Nick? :slight_smile:

that video neads to shrink up
nice work

Not possible to compile on 4.6.1

Engine/Plugins/UMGExPlugin/Source/UMGExPlugin/Classes/UMGExTypes.h(97) : Error: In TemporaryUHTHeader_UMGExTypes: You cannot use the raw enum name as a type for member variables, instead use TEnumAsByte or a C++11 enum class with an explicit underlying type (currently only uint8 supported).
Engine/Plugins/UMGExPlugin/Source/UMGExPlugin/Classes/RadioScrollerWidget.h(19) : Error: In RadioScrollerWidget: Unrecognized type 'FRadioScrollerInfo'
Engine/Plugins/UMGExPlugin/Source/UMGExPlugin/Classes/SliderWidget.h(19) : Error: In SliderWidget: Unrecognized type 'FSliderInfo'
Engine/Plugins/UMGExPlugin/Source/UMGExPlugin/Classes/WidgetList.h(16) : Error: In WidgetList: Unrecognized type 'FWidgetInfoFactory'

I’d be surpirsed if thats the only issue under 4.6.1. To fix this, you could try changing line 97 from


ESlateVisibility VisibilityOnOpen;

to


TEnumAsByte<ESlateVisibility::Type> VisibilityOnOpen

But even if you got the code to compile, I’m pretty sure the example widgets have their packages saved as 4.7+ and would generate other errors.

Is this still available somewhere?

No, UMG has improved, this is no longer needed.

Alot of what was in there is still not supported by UMG AFAIK thogh

I was curious about your list / table view implementations. I have my own, but I wanted to see how other people go about it

I’d love to see how you did your implementation!