Releases: vchelaru/Gum
Releases · vchelaru/Gum
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 )
June 20, 2024
Gum UI Tool
- Fixed NineSlice rendering bug when smaller than the outside borders (tool and all runtimes)
- Events file is only saved if it differs, reducing file change and disk writes
- Gum code generator now supports from-file and also fully instantiating so it can help users write code who might be loading .gumx
- Fixed Vertical grid layout bug which was laying out horizontally (tool and all runtimes)
- Added check when assigning base instance to make sure it is not of the same type as the parent
- Resetting font size to default now properly renders the text instance and creates the correct font cache files
Gum Runtimes
- First pass at GumForms including Button, ListBox, ScrollView, CheckBox, and lots of under-the-hood changes to support this
- MonoGame Gum now runs on DirectX and Android. iOS hasn't been tested, but it may work as well.
- Standard types loaded from .gumx are now loaded in their specific types rather than base GraphicalUiElements
- Added InteractiveGui class to serve as a base for clickable UI objects in MonoGameGum (buttons, etc)
- Added BlendState (not just Blend) to most GraphicalUiElement implementations for monogame - this helps with rendering Gum to a render target.
- GumProjectSave.Load (no parameters) now throws exceptions making it easier to spot missing files.
- Fixed path issues on iOS and Android
- Fixed path issues on Linux/Mac
- Rendering in Skia canvas now properly respects camera center