Releases: vchelaru/Gum
Releases · vchelaru/Gum
January 7, 2025 (pre-release)
Breaking Changes
- No breaking changes 🥳
Biggest Changes
CTRL + (plus)
andCTRL - (minus)
now zoom the tool in and out (thanks @kaltinril )- Nullable values now have a checkbox for controlling whether they are null
- Text Max Letters To Show now has a checkbox for All
Gum Tool
- Lots of fixes to adding/editing variables:
- Add variable to component/screen now properly sets a default value rather than null
- New variable window now accepts ENTER and ESC for OK and Cancel buttons
- New variables are now sorted in the element's XML file immediately
- All variable operations (add, remove, and rename) produce undo's in the History tab
- Editing a variable no longer says "Add Variable" in the title
- Adding variables are now verified against existing variable names
- Added documentation link to the Help menu item (thanks @kaltinril )
- When creating a new project you are now immediately prompted on where to save it (thanks @kaltinril )
- Fixed invalid recursive warning when changing base type on an instance in a behavior
- Fixed bug where behavior tab wasn't showing properly for screens
- Referencing a URL or invalid file name on a sprite no longer crashes gum
- Drag+dropping a behavior now shows the behavior tab on the Component with the behavior
- Changing the base type on an element now updates visuals immediately
- 🔴shows on the Errors tab if a component has errors
- 🟢shows on the Errors tab if a component has no errors
- Fully generated screens now show up correctly
- Selecting a behavior now shows highlights for states and components owned by that behavior
- Renaming components no longer allows duplicate names
- Added F2 shortcut for renaming screens and components
- Fixed right-click menu in editor not showing up immediately
- Fixed right click menu showing no options when no instances are selected
- Animations play way more smoothly now (improved editor performance)
- Fixed bug where newly-added behaviors which added states and categories didn't immediately show those variables on instances
- Fixed crash when setting Text instance color values outside of 0-255 range
- Tabbing out of file assignment no longer explicitly sets ""
- Changing source file on a sprite no longer refreshes the entire editor tab (performance improvements)
- Editor handles are now hidden when an animation is playing
- Fixed possible crash on startup due to missing Add cursor
- Textures tab now updates immediately when changing a Sprite's source file
- Generated screens now inherit from BindableGue
- Fixed possible crash on file watch
- Only generate runtime associations if using FindByName
- Fixed height relative to children when using auto grid (this also affects runtimes)
- Fixed crash when changing Y on a child which is percentage height when the parent has a height of 0
- Values like Relative to Container and Percentage of container no change "Container" to "Parent" to clarify the real behavior.
Gum Runtimes
- GraphicalUiElements (usually Root) which have been removed from managers do not need to be nulled out when being passed as the root to Update calls.
- Small improvements/refactors to Menu and MenuItem
- Added ModuleInitializer to all generated components so association happens even if they are in a separate library
- Added Cursor.TransformationMatrix for supporting render targets
- Added positive and negative infinity checks on GraphicalUiElement's X and Y properties to find invalid values before UpdateLayout is called.
- Fixed text centering bug in TextRuntime
Samples
- Added example popup to MonoGameGumFormsSample
Full Changelog: Release_December_29_2024...PreRelease_January_7_2025
December 29 2024
Breaking Changes
- No breaking changes 🥳
Biggest Changes
- ❗Fixed critical bug where undo's in a component which had behaviors would wipe the behaviors
- Full MVVM support for Gum runtimes and Forms
- Lots of tabs and variables are hidden by default to get rid of some visual noise
- Text Overflow Horizontal Variable now only shows if Text Overflow Vertical is set to Truncate.
- Code tab no longer shows when selecting a Standard Element since they cannot have generated code or if nothing is selected
- Texture coordinate selection window only displays for Sprites and NineSlices
- File Watch tab is now hidden by default
- Screens no longer show their base type when there is only 1 screen in the entire project
- Behavior tab no longer shows when an instance is selected - only when a component is selected
- Removed the Single State/ Combined State radio buttons in the States tab
- Removed the old States tab
- Right-click in States no longer shows an empty context menu if there are no options
- Polygons now support rotation
Gum Tool
- Fixed right-click options not showing up on some variables in parts of the UI (thanks @kaltinril )
- File watching now works much better when switching projects (thanks @kaltinril )
- Fixed default file path not updating when loading a new project, fixing the Open Folder button for source files going to the wrong directory
- Deleting a category no longer shows options for that category on right-click options
- Fixed bug where the default image for NineSlice wasn't getting saved when making a new project
- Fixed point updating bug where changes to points would apply to the standard Polygon
- File watching output is now case sensitive rather than always lower case
- Saving a PNG in the default Paint program now triggers a file watch in Gum so the PNG can be re-loaded
- Polygon outline now outlines the entire polygon instead of starting at the Polygon's origin
- Copy/paste of components now pastes into the selected folder instead of the same folder as the original
- Removed right-click option for exposing polygon points since that wasn't supported anyway
- Removed option for DimensionsBased Texture Address Mode for NineSlice since it makes no sense conceptually and didn't work correctly.
- Fixed typo on drag+drop screens into behaviors (thanks @kaltinril )
- Middle-click now closes File Watch tab (thanks @kaltinril )
- Fixed typo in deleting states that are required by a behavior (thanks @kaltinril )
- All popup windows now have titles (thanks @kaltinril )
- Deleting a behavior now removes it from any components which use the behavior
- Drag+drop instance on another instance which is already its parent no longer creates additional undo's
- Fixed crash on drag+drop an instance on another instance with nothing selected
- Drag+drop a behavior onto a component now creates undo's for the new behavior, new States, and new Categories.
- Behavior Default Implementation now only shows components which use the behavior instead of all behaviors
- Deleting a behavior no longer shows states/categories for the behavior in the tree view
Gum Runtimes
- MenuItem can now contain non-MenuItem children like separators, buttons, and any other FrameworkElement
- Removed unused StateSaveCategory.IsSetRecursively
Samples
- Updated Forms and from file samples to include MVVM
- GumFormsSampleGame now creates a runtime similar to as if it were using generated code.
Full Changelog: Release_December_23_2024...Release_December_29_2024
December 23 2024
Breaking Changes
- No breaking changes 🥳
Gum Tool
Biggest Changes
- Improvements to the State tab
- Component name is now displayed in the new States tab
- Categories are displayed with folder icons
- States cannot be moved when required in behaviors
- Removing or renaming states needed by behaviors gives more informative popup
- Fixed a number of cases where the right-click didn't stay in sync with the selected items
- Improved Polygon editing
- Moving, adding, and removing points now updates the point list
- Point list can now add and delete points
- Add point icon only shows over segment when within 15 pixels
- Polygon overlay icons and points now scale according to zoom
- Improved support for instances in behaviors
- Instances can be renamed
- Instance types can be changed
- Instances can be deleted
- Instances from behaviors can be dropped into components to create new instances
- Exposed variables can now be renamed
- Missing runtime files are now generated recursively making it easier to add codegen to projects. Gum asks if you would like to generate missing files.
Everything else
- Right-click options now show on label of toggle buttons (such as Width Units)
- Right-click options now show on angle selector in text box
- Removed code generation of standard elements
- Fixed a number of crashes in code generation
- Fixed back slash handling on instances in screens, behavior names, and instances in behaviors
- Hotkey menu can now be hidden with middle click, and the menu items toggle to display hide/show (thanks @kaltinril )
- Fixed state selection on undo
- Added ability to duplicate behavior categories and to move states to different behavior categories
- Adding a category to a behavior now saves the behavior
- Added check for whether project has already been saved before adding Skia components, preventing a dozen unnecessary popups
- State animation tab can be hidden with middle click, and menu item toggles properly ( thanks @kaltinril )
- Categorized states now show in the States and Visibility section
- Category/state name is now displayed in brackets when right-clicking on state tree view (thanks @kaltinril )
- Pressing X when asked if files should be copied or to overwrite existing files on copy now cancels the state assignment
- Right-click on standards folder now has a View in Explorer option
- Removed menu item for adding forms if forms have already been added
- Behaviors can now be drag+dropped onto components to add the behavior
- Removed unused Guide variable
- Fixed left alignment of Source File for sprites (thanks @kaltinril )
- Moved Source File for Sprites to the Source section (thanks @kaltinril )
- Removed Default state displayed in variable grid when the default state is selected in the state tree view
- Removed View Code menu item
- Removed ability to drag+drop instances into standard elements
- Improved folder renaming support - it succeeds more often now, and if it fails a more informative error is displayed.
- Fixed folder deleting when in a onedrive folder (thanks @kaltinril )
- Added go to definition support for instances in behaviors
- Dropping a Screen onto a Behavior now shows a more informative error
- Option to Wrap is now hidden when showing Entire Texture
- Texture Scale Width and Texture Scale Height now default to 1, making Sprites behave more predictably when changing to DimensionsBased Texture Address Mode
- Double-click to move texture coordinates in Texture Coordinate tab now records undo
- Fixed rendering error when sprite textures wrap beyond first row and column
- Texture Width Scale and Texture Height Scale now include informative description
- Animations now play more smoothly (fixed performance issues)
- Fixed texture coordinate window showing previous value instead of new value when changing texture coordinate values in the variable grid
Gum Runtimes
- Added CircleRuntime
- Added PolygonRuntime Alpha, Red, Green, and Blue
- Added RectangleRuntime alpha, Red, Green, and Blue
- Added a no-argument GraphicalUiElement.AddToManagers
- Added new Menu and MenuItems Forms controls
- Fixed runtime crash happening only on itch.io with not handling ordinal case comparison
- Fixed ListBox not raising its SelectionChanged events
- HasEvents and ExposeChildrenEvents is now carried over from gum to code
- Added support for the Move command in GraphicalUiElement Children. Calling Children.Move now updates layout
Samples
- Simplified custom list box screen
- Added SimpleListBoxItemRuntime as example for customizing list boxes
Full Changelog: Release_December_5_2024...Release_December_23_2024
December 5 2024
Breaking Changes
- Text instances with 0 Pixel (absolute) width and 0 Percent width are now treated as 0 width in tool and runtime.
Gum Tool
Biggest Changes
- Huge improvements to undo
- "Undos" tab is now History tab
- History tab now shows undo history rather than only the number of undos
- Details of each undo displayed on each item
- Undo now creates redo future
- Deleting States can be undone
- Renaming States can be undone
- Deleting categories can be undone
- Renaming categories can be undone
- Deleting variables from categories can be undone
- Changing instance lock can be undone
- Changing instance base type can be undone
- Changing Screen/Component base type can be undone
- Add/Remove behaviors can be undone
- Individual point add/move on Polygon can be undone
- Gum now checks if a folder is empty when creating a new project, preventing unexpected overwriting of files and unintentional mixing of projects
- Added fix for lost graphical device (thanks @kaltinril )
- Renaming categories now updates all variables in the project which reference the changed category
- Exposed font variables now properly show a font dropdown
Everything Else
- Using color picker no longer generates undos every frame when sliding to a new color value
- Using angle picker no longer generates undos every frame when sliding to a new angle
- Improved performance of color picker and angle picker by not refreshing the variable grid on every minor change
- Default Forms content now has a ScrollBar with a TrackInstance instead of ThumbContainer to match the expected instance name
- Fixed BBCode not properly handling newlines
- Reloading a project due to file changed on disk now re-selects the previously selected element
- Fixed crash which can occur if the file watch is relative to the .gumx and if the folder is above the root
- Improved hint text wrapping in the Variables tab (thanks @vicdotexe )
- All types of variable displays can show hint text if the variable has it
- Generated code now includes registration for runtime types
- Code generation now defaults InheritanceLocation to InGeneratedCode
- Fixed overlayed hint text when dislaying unknown types
- Fixed possible crash due to tabs becoming negative in generated code
- Fixed crash when viewing states in generated code
- Fixed items in the tree view being selected on a push, resulting in potentially confusing behavior when dragging into an invalid spot
- Renaming an element immediately sorts the items in the .gumx file, reducing version control churn
- Instances can no longer be added to a Screen or Component when non-default state is selected
- Duplicate state names can no longer be added
- Undo/Redo hotkeys displayed in the hotkey popup (thanks @kaltinril )
- Improved editing variables in multi-select situations
- Polygon points are now generated in codegen
- SHIFT+move of an object on a single axis no longer explicitly sets the snapped axis variable if it was default before.
- Fixed possible codegen crash when renaming Components and Screens
- Right-click edit option no longer available on variables which may cause Gum to be in an invalid state
Gum Runtimes
- Improved error messages when a ScrollBar is missing a TrackInstance
- Added nuget debugging symbols
- Unified code between FlatRedBall Forms and Gum Forms for better maintainability
- Calling ToGraphicalUiElement on a Screen with a runtime type that has Children now adds the items to the Children
- Added GumService (and documented it) to significantly reduce the amount of code needed to get a MonoGame Gum + Forms project up and running
- Added GraphicalUiElement.GetFrameworkElementByName to make it easier to get Forms objects
- GumService automatically registers all runtime types
- ModalRoot and PopupRoot now have explicit names to make debugging easier
- Added Sprite.Blend
- DataUiGrid no longer wipes custom variables when excluding a variable
Samples
Full Changelog: November_17_2024...Release_December_5_2024
November_17_2024
Gum Tool
- Added new plugin for adding Forms controls to empty projects
- Fixed codegen to no longer include contained type
- Fixed possible crash assigning variables
- Fixed mixed line endings on generated code
- HasEvents is now generated properly for MonoGame projects
- All objects now use forward slashes, and this fixes broken projects which might have back slashes
- Setting animation changes now immediately updates Sprite size
- Percent of other dimensions now show % in the icon
- Removed unnecessary Inverted Pixels from Center Y Unit in Gum tool
- All texts now have outlines
- Added margins to alignment tab
- Improved display of text to use top layer (not be hidden behind items)
- Variables displayed with combo boxes can now show their details text
- Added right-click removal support for guides - thanks (@kaltinril )
- MaxLettersToShow now explains
<NULL>
values - Significant improvement in searching - finding variables now works properly
- Search results now show icons for behaviors and variables
- New key combination window shows all Gum key combinations
- FormsUtilities can now update multiple root objects, useful for objects spread across multiple layers
- Auto Grid Horizontal and Auto Grid Vertical can now be used with Relative to Children Width and Height Units which will properly resize the parent
- Screens now generate inheriting from GraphicalUiElement instead of container
- Added support for changing line and text color through settings
Gum Runtimes
- Default values on TextRuntime now more closely match default Gum project
- Fixed font loading errors on Android
- Added matrix to GumBatch.Begin
- Added support for performing Forms logic with null rootGue parameter
- Initial support for GraphicalUiElement.Clone
- Added support for Cursor PrimaryDoublePush
- Added support for TextBox multiline
Samples
-no changes-
Full Changelog: November_3_2024...November_17_2024
November 3, 2024
Gum Tool
- Fully generated code now creates 2-arg constructors.
- Fixed renaming some objects causing a crash due to variable references
- Fixed compile error in generated code setting Contained type
November_2_2024
Gum Tool
- New projects now have a default nineslice image
- Fixed crashes when referencing fonts in root folder
- Fixed crashes when viewing combined states
- Fixed variable references when qualifying full path variables in the same component/screen
- Lots of codegen improvements including:
- Assigning texture on a Sprite runtime
- Constructor generation for Screens
- Adding items to Screen
- CustomInit is now called in AfterFullCreation for generated code so that custom init can reference strongly typed objects
- Setting states now works even if there is no element tag
- Disabling plugin now properly disables codegen
- Added needed default using statement
Gum Runtimes
- Fixed outline thickness not being respected on fonts
- New RadioButton control in forms
- GumCommon now targets .NET Standard 2.1 so it works on Meadow (thanks @KallDrexx )
- Removed noisy "Breaking because..." output (thanks @legendaryfishtrap )
- Added cursor support from touch screen
- Added Cursor.CleraInputValues for clearing clicks and pushes manually, such as when making the TextBox gain focus
- ComboBox now closes its ListBox when clicking outside of the ListBox
- Added ModalRoot for adding modal popups
- General code cleanup (Silverlight, Windows8, UWP, and Xbox360)
- Added code for automatically associating Gum elements to their forms runtime types
- Added a standard set of forms runtime types
- Added better error messages when trying to perform cursor logic on an element that hasn't been added to managers.
- Improved ability to use generated objects with from-files
- Added checks for whether the cursor is over the game window, and whether the game is active
- Added text runtime TextOverflowHorizontalMode an LineHeightMultiplier
- Fixed RollOn being called every frame
- Added checks for whether PopupRoot and ModalRoot are removed from managers
Samples
- Added sample code to show how to create runtimes that are automatically associated with screens
- Added froms from-file project
- Added samples for custom listboxes
- Added animated character to samples
New Contributors
- @legendaryfishtrap made their first contribution in #220
- @Fabbbou made their first contribution in #238
Full Changelog: October_21_2024...November_2_2024
October_21_2024
Gum Tool
- Added support for searching for instances
- Added support for searching on instances by their Text property
- First pass at being able to create components from an instance thanks @akaadream
- Added better error reporting when missing a base type for a component
- Added support for hint text when displaying nullable bool values
- Fixed bug where duplicate instances could be created
- Added realtime warnings about duplicate component names thanks @akaadream
- Fixed tabs not properly sizing themselves after being hidden thanks @kaltinril
- Saving new project now shows up in recent files thanks @kaltinril
- Newly-created projects automatically load thanks @kaltinril
- Improved codegen for monogame projects, including new MonoGame dropdown value
Gum Runtimes
- Added new ComboBox Forms control
- Fixed case sensitive issues when loading shaders
- Added FormsUtilities.Cursor
- Added FormsUtilities.Keyboard
- Added sample project for font loading
- Huge improvements to font load times (100x faster) thanks @KallDrexx
- Added FnaGum project
- Added support for loading from a StreamByteDictionary to speed up load times on web projects (Kni)
- Improved error reporting when missing font files
- Added SingleThreadSynchronizationContext sample for async calls
- Added InteractiveGue.HandleRollOver
- RollOverBubbling is only raised when XChange or YChange are non-zero
- Loading .gumx project now pushes Standard values to all standard runtimes making it easier to load existing projects
- FrameworkElement.UpdateState is now public allowing refreshing of visuals anytime
- Added support for assigning BitmapFont through states
- Added new const values for expected instance names in forms
- Improved diagnostics when creating a Slider Forms object with missing references
- Fixed crash when loading fonts with no spaces thanks @mfigueirido
New Contributors
- @akaadream made their first contribution in #177
- @vicdotexe made their first contribution in #181
- @kaltinril made their first contribution in #209
- @mfigueirido made their first contribution in #215
Full Changelog: August_20_2024...October_21_2024
August 20, 2024
Gum UI Tool
- Fixed crash when setting base type on a Screen
- Fixed crash when setting the base type on a component
Gum Runtimes
- Added FormsUtilities class to simplify working with FRB Forms. Documentation reflects this new addition.
- Added Forms TextBox (MonoGame Gum)
- Added Forms Slider (MonoGame Gum)
- Added Forms Slider (MonoGame Gum)
- Added support for Gum in Kni (thanks @nkast ) including support for web!
- Default missing file behavior is now to throw exceptions to help with the most common type of errors.
- Added support for LineRectangle LineWidth
- Added MonoGameGum NineSliceRuntime support for CustomFrameTextureCoordinateWidth
- Added more informative error when setting Sprite's animation
- Added NonPremultipliedAddAlpha BlendState for render target rendering
New Contributors
Full Changelog: June_21_2024...August_20_2024
June 21, 2024
Gum UI Tool
- Fixed popups appearing when selecting standard elements with no project saved (#166 )