# Changelog MLEM tries to adhere to [semantic versioning](https://semver.org/). Jump to version: - [5.2.0 (Unreleased)](#520-unreleased) - [5.1.0](#510) - [5.0.0](#500) ## 5.2.0 (Unreleased) ### MLEM Additions - Added a strikethrough formatting code - Added GenericFont SplitStringSeparate which differentiates between existing newline characters and splits due to maximum width - Added StaticSpriteBatch class Improvements - Exposed Camera's RoundPosition - Exposed the epsilon value used by Camera ### MLEM.Ui Additions - Allow specifying a maximum amount of characters for a TextField - Added a multiline editing mode to TextField Improvements - Cache TokenizedString inner offsets for non-Left text alignments to improve performance - Exposed the epsilon value used by Element calculations - Made Image ScaleToImage take ui scale into account - Added style properties for a lot of hardcoded default element styles - Allow style properties to set style values with a higher priority, which allows elements to style their default children - Allow changing the entire ui style for a single element - Skip unnecessary area updates for elements with dirty parents Fixes - Fixed VerticalSpace height parameter being an integer - Fixed text not being pasted into a text field at all if it contains characters that don't match the input rule ### MLEM.Data Additions - Allow RuntimeTexturePacker to automatically dispose submitted textures when packing Improvements - Use TitleContainer for opening streams where possible ## 5.1.0 ### MLEM Additions - Added RotateBy to Direction2Helper Improvements - Improved NinePatch memory usage - Moved sound-related classes into Sound namespace - Added customizable overloads for Keybind, Combination and GenericInput ToString methods - Moved ColorHelper.Invert to ColorExtensions.Invert - Removed LINQ Any and All usage in various methods to improve memory usage - Allow enumerating SoundEffectInstanceHandler entries - Improved KeysExtensions memory usage Fixes - Set default values for InputHandler held and pressed keys to avoid an exception if buttons are held in the very first frame - Fixed GenericFont MeasureString using incorrect width for Zwsp and OneEmSpace - Fixed tiled NinePatches missing pixels with some scales ### MLEM.Ui Additions - Added a masking character to TextField to allow for password-style text fields Improvements - Removed LINQ Any and All usage in various methods to improve memory usage - Explicitly disallow creating Paragraphs without fonts to make starting out with MLEM.Ui less confusing - Allow adding Link children to non-Paragraph elements Fixes - Fixed a crash if a paragraph has a link formatting code, but no font - Fixed tooltips with custom text scale not snapping to the mouse correctly in their first displayed frame - Fixed tooltips not displaying correctly with auto-hiding paragraphs - Fixed rounding errors causing AutoInline elements to be pushed into the next line with some ui scales ### MLEM.Extended Improvements - Use FontStashSharp's built-in LineHeight property for GenericStashFont ### MLEM.Data Additions - Added the ability to specify a coordinate offset in data texture atlases Improvements - Improved RawContentManager's reader loading and added better exception handling - Improved CopyExtensions construction speed - Improved DynamicEnum caching Fixes - Fixed DynamicEnum AddFlag going into an infinite loop ## 5.0.0 ### MLEM Additions - Added some Collection extensions, namely for dealing with combinations - Added repeat-ignoring versions of IsKeyPressed and IsGamepadButtonPressed - Added SoundExtensions - Added string truncation to TokenizedString - Added a sprite batch extension to generate a gradient - Added InputsDown and InputsPressed properties to InputHandler - Added text alignment options to tokenized strings Improvements - Allow NinePatches to be drawn tiled rather than stretched - Added the ability for Direction2 to be used as flags - Made Padding and Direction2 DataContracts - Expose the viewport of cameras - Greatly improved the efficiency of line splitting for GenericFont and TokenizedString - Improved performance of TextFormatter tokenization - Replaced TextInputWrapper with a more refined MlemPlatform that includes the ability to open links on various platforms - Allow for underline and shadow formatting codes to be mixed with font changing codes - Exposed Keybind Combinations Fixes - Fixed the input handler querying input when the window is inactive - Fixed UnderlineCode ending in the wrong places because it was marked as a font-changing code Removals - Removed the array-based GetRandomEntry method - Removed obsolete ColorExtension methods ### MLEM.Ui Additions - Added a text scale multiplier value to Paragraph - Added an option to limit auto-height and auto-width in elements to a maximum and minimum size - Added the ability to set a custom viewport for ui systems - Added string truncation to Paragraph - Added a simple way to change the action that is executed when a link is pressed in a paragraph - Added events for when a root element is added or removed - Added an ElementHelper method to create a keybind button - Added text alignment options to paragraphs Improvements - Stop a panel's scroll bar from being removed from its children list automatically - Removed unnecessary GraphicsDevice references from UiSystem - Dispose of panels' render targets to avoid memory leaks - Allow changing the color that a panel renders its texture with Fixes - Fixed auto-sized elements doing too many area update calculations - Fixed a rare stack overflow where scroll bars could get stuck in an auto-hide loop - Fixed auto-sized elements without children not updating their size correctly - Fixed panels drawing children early within the render target (instead of regularly) ### MLEM.Extended Additions - Added GenericFont compatibility for FontStashSharp - Added a method to make sidescrolling collision detection easier with TiledMapCollisions - Added some more TiledMapExtension utility methods Improvements - Reversed the y loop in GetCollidingTiles to account for gravity which is usually more important Fixes - Fixed some number parsing not using the invariant culture ### MLEM.Data Additions - Added StaticJsonConverter - Added DynamicEnum, a cursed custom enumeration class that supports arbitrarily many values Fixes - Fixed some number parsing not using the invariant culture - Fixed RawContentManager crashing with dynamic assemblies present