Skip to content

Releases: vchelaru/Gum

January 7, 2025 (pre-release)

07 Jan 13:26
Compare
Choose a tag to compare
Pre-release

Breaking Changes

  • No breaking changes 🥳

Biggest Changes

  • CTRL + (plus) and CTRL - (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

29 Dec 20:11
Compare
Choose a tag to compare

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

23 Dec 16:19
Compare
Choose a tag to compare

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

05 Dec 23:30
e42b647
Compare
Choose a tag to compare

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

17 Nov 21:27
Compare
Choose a tag to compare

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

03 Nov 12:59
Compare
Choose a tag to compare

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

02 Nov 14:48
Compare
Choose a tag to compare

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

Full Changelog: October_21_2024...November_2_2024

October_21_2024

21 Oct 23:34
Compare
Choose a tag to compare

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

Full Changelog: August_20_2024...October_21_2024

August 20, 2024

20 Aug 12:31
Compare
Choose a tag to compare

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

21 Jun 11:52
Compare
Choose a tag to compare

Gum UI Tool

  • Fixed popups appearing when selecting standard elements with no project saved (#166 )