2021-06-28 15:38:30 +02:00
# Changelog
2022-12-23 17:08:51 +01:00
MLEM tries to adhere to [semantic versioning ](https://semver.org/ ). Potentially breaking changes are written in **bold** .
2021-06-28 15:38:30 +02:00
2021-06-29 00:57:04 +02:00
Jump to version:
2024-04-10 20:27:00 +02:00
- [7.0.0 ](#700-in-development )
2024-04-05 11:07:47 +02:00
- [6.3.1 ](#631 )
2024-04-04 22:25:45 +02:00
- [6.3.0 ](#630 )
2023-06-28 13:37:05 +02:00
- [6.2.0 ](#620 )
2023-01-19 20:48:44 +01:00
- [6.1.0 ](#610 )
2022-07-25 18:44:16 +02:00
- [6.0.0 ](#600 )
2022-04-08 14:37:25 +02:00
- [5.3.0 ](#530 )
2021-12-21 23:16:18 +01:00
- [5.2.0 ](#520 )
2021-09-24 16:51:06 +02:00
- [5.1.0 ](#510 )
2021-06-30 00:18:54 +02:00
- [5.0.0 ](#500 )
2021-06-29 00:57:04 +02:00
2024-04-10 20:27:00 +02:00
## 7.0.0 (In Development)
### MLEM
Additions
- **Added the ability for formatted (tokenized) strings to be drawn with custom rotation, origin and flipping**
2024-04-13 21:14:34 +02:00
- Added a RectangleF.FromCorners overload that accepts points
2024-07-14 19:52:32 +02:00
- Added indexers and Count to SpriteAnimation and SpriteAnimationGroup
2024-07-16 12:10:41 +02:00
- Added a Keybind constructor that accepts a set of combinations
2024-04-05 11:14:35 +02:00
2024-04-13 21:12:49 +02:00
Improvements
2024-07-16 12:10:41 +02:00
- **Made the Keybind.Combinations collection a public property**
2024-04-13 21:12:49 +02:00
- Allow NumberExtensions.GetPoints to include bottom and right coordinates
2024-06-27 22:24:11 +02:00
- Allow AutoTiling overlayTextures to return null texture regions
2024-04-13 21:12:49 +02:00
2024-07-14 19:52:32 +02:00
Removals
- Marked SpriteAnimation.ByName obsolete in favor of the new indexer
2024-07-17 18:21:13 +02:00
- **Removed obsolete methods and types CharExtensions, GenericFont.OneEmSpace, Code.GetReplacementString, TokenizedString.Measure, Keybind.GetDownTime, Keybind.GetUpTime, Keybind.GetTimeSincePress, EnumHelper, non-generic GenericDataHolder methods, as well as InputHandler key, gamepad and mouse-specific methods**
2024-07-14 19:52:32 +02:00
2024-04-10 17:58:01 +02:00
### MLEM.Ui
Additions
- Added the ability to set the anchor that should be used when a tooltip attaches to an element or the mouse
- Added the ability to display tooltips using the auto-nav style even when using the mouse
2024-05-30 13:24:35 +02:00
- Added the ScissorGroup element, which applies a scissor rectangle when drawing its content
2024-06-14 22:31:32 +02:00
- Added Panel.ScrollToTop and Panel.ScrollToBottom
2024-04-10 17:58:01 +02:00
2024-05-29 23:30:12 +02:00
Improvements
2024-05-30 12:48:08 +02:00
- **Include the SpriteBatchContext in OnDrawn, OnElementDrawn and OnSelectedElementDrawn**
2024-05-29 23:37:42 +02:00
- Allow scrolling panels to set height based on children by setting TreatSizeAsMaximum
2024-06-09 20:29:23 +02:00
- Track element area update recursion count in UiMetrics
2024-06-11 18:47:22 +02:00
- Made the Element.Children collection public
2024-05-29 23:30:12 +02:00
2024-05-29 23:34:23 +02:00
Fixes
- Fixed hidden scroll bars inhibiting scrolling on their parent panel
2024-06-02 13:26:20 +02:00
- Fixed scroll bars doing unnecessary calculations when hidden
2024-06-09 20:22:24 +02:00
- Fixed auto-sized elements sometimes updating their location based on outdated parent positions
2024-06-14 22:31:32 +02:00
- Fixed Panel.ScrollToElement not scrolling correctly when the panel's area is dirty
2024-05-29 23:34:23 +02:00
2024-07-17 18:21:13 +02:00
Removals
- **Removed obsolete methods and properties Element.BeginImpl, Element.OnDisposed, parameter-heavy versions of Element.DrawTransformed and Element.Draw, Element.DrawEarly, Element.Dispose, Element.BeginDelegate, Tooltip.Paragraph, UiSystem.BlendState, UiSystem.SamplerState, UiSystem.DepthStencilState, UiSystem.Effect, as well as the StyleProp equality members**
2024-07-10 12:03:24 +02:00
### MLEM.Extended
Improvements
- **Added compatibility for MonoGame.Extended 4.0.0**
- Added compatibility for FNA.Extended
2024-07-17 18:21:13 +02:00
### MLEM.Data
Removals
- **Removed obsolete types DynamicEnumConverter, CopyExtensions, DynamicEnum, NetBufferSerializer, and NetExtensions**
2024-04-05 11:07:47 +02:00
## 6.3.1
No code changes
2024-04-04 22:34:40 +02:00
2024-04-04 22:25:45 +02:00
## 6.3.0
2023-06-28 13:56:41 +02:00
2023-07-11 12:11:12 +02:00
### MLEM
Additions
- Added GraphicsExtensions.WithRenderTargets, a multi-target version of WithRenderTarget
2023-08-03 11:29:51 +02:00
- Added Zero, One, Linear and Clamp to Easings
2023-08-07 19:00:34 +02:00
- Added GetRandomEntry and GetRandomWeightedEntry to SingleRandom
2023-08-28 01:51:25 +02:00
- Added the ability to draw single corners of AutoTiling's extended auto tiles
2023-09-30 22:50:18 +02:00
- Added ColorHelper.TryFromHexString, a non-throwing version of FromHexString
2024-03-15 20:03:52 +01:00
- Added ToHexStringRgba and ToHexStringRgb to ColorExtensions
2023-09-30 22:50:18 +02:00
Improvements
- Stopped the text formatter throwing if a color can't be parsed
2023-10-14 18:58:32 +02:00
- Improved text formatter tokenization performance
2023-12-02 19:28:59 +01:00
- Allow using control and arrow keys to move the visible area of a text input
2024-03-17 21:54:06 +01:00
- Allow formatting codes applied later to override settings of earlier ones
2023-07-11 12:11:12 +02:00
2023-07-17 15:20:36 +02:00
Fixes
- Fixed TextInput not working correctly when using surrogate pairs
2023-12-04 10:20:29 +01:00
- Fixed InputHandler touch states being initialized incorrectly when touch handling is disabled
2024-01-30 20:47:54 +01:00
- Fixed empty NinePatch regions stalling when using tile mode
2024-03-17 21:43:53 +01:00
- Fixed bold and italic formatting code closing tags working on each other
2023-07-17 15:20:36 +02:00
2023-08-14 17:37:26 +02:00
### MLEM.Ui
2023-11-08 10:31:36 +01:00
Additions
- Added UiControls.NavType, which stores the most recently used type of ui navigation
2023-11-23 22:16:31 +01:00
- Added SetWidthBasedOnAspect and SetHeightBasedOnAspect to images
2023-12-13 22:57:23 +01:00
- Added the ability to set a custom SamplerState for images
2023-12-28 17:16:31 +01:00
- Added some useful additional constructors to various elements
2023-11-08 10:31:36 +01:00
2023-08-14 17:37:26 +02:00
Improvements
- Allow scrolling panels to contain other scrolling panels
2023-08-14 17:54:32 +02:00
- Allow dropdowns to have scrolling panels
2023-11-11 12:40:11 +01:00
- Improved Panel performance when adding and removing a lot of children
2023-12-02 19:28:59 +01:00
- Don't reset the caret position of a text field when selecting or deselecting it
2024-03-30 11:52:23 +01:00
- Improved UiParser.ParseImage with locks and a callback action
2023-08-14 17:37:26 +02:00
2023-10-14 14:28:27 +02:00
Fixes
- Fixed panels updating their relevant children too much when the scroll bar is hidden
2023-10-14 15:02:58 +02:00
- Fixed a stack overflow exception when a panel's scroll bar auto-hiding causes elements to gain height
2024-03-30 12:24:57 +01:00
- Fixed scrolling panels calculating their height incorrectly when their first child is hidden
2023-10-14 14:28:27 +02:00
2023-12-13 22:06:12 +01:00
### MLEM.Extended
Improvements
- Updated to FontStashSharp 1.3.0's API
2024-01-30 20:47:05 +01:00
- Expose character and line spacing in GenericStashFont
2023-12-13 22:06:12 +01:00
2023-09-27 18:58:09 +02:00
### MLEM.Data
Fixes
- Fixed various exception types not being wrapped by ContentLoadExceptions when loading raw or JSON content
2023-06-28 13:37:05 +02:00
## 6.2.0
2023-01-19 21:03:13 +01:00
2023-02-13 14:27:39 +01:00
### MLEM
2023-02-23 15:18:07 +01:00
Additions
- Added a simple outline formatting code
2023-03-03 14:02:05 +01:00
- Added the ability to add inverse modifiers to a Keybind
- Added GenericInput collections AllKeys, AllMouseButtons, AllButtons and AllInputs
2023-05-19 19:30:45 +02:00
- Added TextFormatter.StripAllFormatting
2023-02-23 15:18:07 +01:00
2023-04-06 17:15:57 +02:00
Improvements
- Increased TextFormatter macro recursion limit to 64
- Allow changing the default values used by default TextFormatter codes
- Allow setting ExternalGestureHandling through the InputHandler constructor
2023-05-18 21:41:36 +02:00
- Allow specifying start and end indices when drawing a TokenizedString
2023-06-21 10:37:48 +02:00
- Include control characters in TextInput FileNames and PathNames rules
2023-04-06 17:15:57 +02:00
2023-02-13 14:27:39 +01:00
Fixes
- Fixed control characters being included in TextInput
2023-02-17 13:16:49 +01:00
- Fixed TextInputs behaving incorrectly when switching between multiline and single-line modes
2023-02-17 18:33:56 +01:00
- Fixed TextInput drawing characters with the wrong width if a masking character is used
2023-02-17 20:38:06 +01:00
- Fixed a multiline TextInput's cursor not returning to the default position when the last character is removed
2023-04-26 21:49:43 +02:00
- Fixed GetRandomWeightedEntry distribution not being equal for equal weights
2023-02-13 14:27:39 +01:00
2023-03-04 23:05:17 +01:00
Removals
- Marked GetDownTime, GetUpTime and GetTimeSincePress in Keybind and Combination as obsolete
2023-02-03 11:31:18 +01:00
### MLEM.Ui
2023-03-29 20:51:34 +02:00
Additions
2023-03-29 20:56:56 +02:00
- Added AutoInlineCenter and AutoInlineBottom anchors
2023-06-14 10:21:32 +02:00
- Added UiAnimation system
2023-06-14 14:54:49 +02:00
- Added AddCustomStyle and ApplyCustomStyle to UiStyle to allow for easy custom styling of elements
2023-06-20 23:23:38 +02:00
- Added UiControls.PressElement
2023-06-21 00:10:52 +02:00
- Added TextField.EnterReceiver
2023-06-28 13:35:32 +02:00
- Added a copy constructor to UiStyle
2023-03-29 20:51:34 +02:00
2023-04-06 17:15:57 +02:00
Improvements
- Increased Element area calculation recursion limit to 64
- Improved the SquishingGroup algorithm by prioritizing each element's final size
2023-05-18 21:41:36 +02:00
- Allow specifying start and end indices when drawing a Paragraph
2023-05-21 11:11:52 +02:00
- Allow elements with larger children to influence a panel's scrollable area
2023-05-22 11:29:41 +02:00
- Remove all elements from a UiSystem when it is disposed
2023-06-14 09:33:08 +02:00
- Made elements' ui styles be inherited by their children
2023-04-06 17:15:57 +02:00
2023-02-03 11:31:18 +01:00
Fixes
- Fixed images not updating their hidden state properly when the displayed texture changes
2023-03-29 20:56:56 +02:00
- Fixed AutoInline elements overflowing into their parent if it's taller
2023-04-06 15:54:24 +02:00
- Fixed Paragraph and Checkbox not reacting to SquishingGroup sizing properly
2023-04-24 11:15:16 +02:00
- Fixed TextInput and Slider still reacting to input when they are selected, but not part of the active root
2023-05-21 11:19:24 +02:00
- Fixed dropdown menu panels not updating their width when the dropdown's width changes
2023-05-23 11:18:10 +02:00
- Fixed removing and later adding children to a scrolling panel showing the scroll bar erroneously
2023-02-03 11:31:18 +01:00
2023-05-15 17:50:41 +02:00
### MLEM.Data
Improvements
- Improved RuntimeTexturePacker performance for differently sized textures
2023-05-15 18:36:23 +02:00
- Allow querying the amount of RuntimeTexturePacker regions
2023-05-15 17:50:41 +02:00
2023-01-19 20:48:44 +01:00
## 6.1.0
2022-08-04 20:44:54 +02:00
2022-07-29 19:52:01 +02:00
### MLEM
2022-09-02 13:42:21 +02:00
Additions
- Added TokenizedString.Realign
2022-10-26 23:34:30 +02:00
- Added GetFlags and GetUniqueFlags to EnumHelper
2022-11-08 17:43:34 +01:00
- Added GetDownTime, GetUpTime, GetTimeSincePress, WasModifierDown and WasDown to Keybind and Combination
2022-11-19 17:12:57 +01:00
- Added the ability for UniformTextureAtlases to have padding for each region
2022-11-23 12:14:08 +01:00
- Added UniformTextureAtlas methods ToList and ToDictionary
2022-11-30 20:21:24 +01:00
- Added SingleRandom and SeedSource
2022-12-07 13:35:57 +01:00
- Added TokenizedString.GetArea
2022-12-27 22:57:35 +01:00
- Added InputHandler.WasPressedForLess and related methods as well as InputHandler.IsPressedIgnoreRepeats
2023-01-07 20:01:22 +01:00
- Added RandomExtensions.NextSingle with minimum and maximum values
2023-01-07 22:02:22 +01:00
- Added subscript and superscript formatting codes
2022-10-10 11:31:23 +02:00
- **Added the ability to find paths to one of multiple goals using AStar**
2022-09-02 13:42:21 +02:00
2022-07-29 19:52:01 +02:00
Improvements
- Improved EnumHelper.GetValues signature to return an array
2022-08-11 11:37:41 +02:00
- Allow using external gesture handling alongside InputHandler through ExternalGestureHandling
2022-09-12 21:13:43 +02:00
- Discard old data when updating a StaticSpriteBatch
2022-09-14 21:17:43 +02:00
- Multi-target net452, making MLEM compatible with MonoGame for consoles
2022-10-10 11:31:23 +02:00
- Allow retrieving the cost of a calculated path when using AStar
2022-10-31 18:33:53 +01:00
- Added trimming and AOT annotations and made MLEM trimmable
2022-11-03 18:16:59 +01:00
- Allow specifying percentage-based padding for a NinePatch
2022-11-08 17:12:37 +01:00
- Improved the way InputHandler down time calculation works
2022-11-14 12:59:35 +01:00
- Allow explicitly specifying each region for extended auto tiles
2022-11-27 12:34:07 +01:00
- Added a generic version of IGenericDataHolder.SetData
2022-12-06 16:49:19 +01:00
- Allow formatting codes to have an arbitrary custom width
2023-01-07 22:32:38 +01:00
- Allow initializing text formatters without default codes and macros
2022-10-09 21:04:39 +02:00
- **Drastically improved StaticSpriteBatch batching performance**
2022-10-15 13:48:45 +02:00
- **Made GenericFont and TokenizedString support UTF-32 characters like emoji**
2022-07-29 19:52:01 +02:00
2022-09-02 13:58:12 +02:00
Fixes
- Fixed TokenizedString handling trailing spaces incorrectly in the last line of non-left aligned text
2022-09-02 14:07:23 +02:00
- Fixed some TokenizedString tokens starting with a line break not being split correctly
2022-10-10 19:29:01 +02:00
- Fixed InputHandler maintaining old input states when input types are toggled off
2022-11-08 17:50:58 +01:00
- Fixed Combination.IsModifierDown querying one of its modifiers instead of all of them
2022-09-02 13:58:12 +02:00
2022-10-31 13:20:26 +01:00
Removals
2022-11-22 20:09:12 +01:00
- Removed DataContract attribute from GenericDataHolder
2022-10-31 13:20:26 +01:00
- Marked EnumHelper as obsolete due to its reimplementation in [DynamicEnums ](https://www.nuget.org/packages/DynamicEnums )
2022-12-06 16:49:19 +01:00
- Marked Code.GetReplacementString as obsolete
2022-12-07 13:35:57 +01:00
- Marked TokenizedString.Measure as obsolete in favor of GetArea
2022-12-27 22:57:35 +01:00
- Marked non-GenericInput versions of IsDown, IsUp, IsPressed and related methods as obsolete in favor of GenericInput ones
2022-10-31 13:20:26 +01:00
2022-07-27 11:19:40 +02:00
### MLEM.Ui
Additions
- Added some extension methods for querying Anchor types
2022-08-16 14:20:32 +02:00
- Added Element.AutoSizeAddedAbsolute to allow for more granular control of auto-sizing
2022-09-13 14:27:49 +02:00
- Added Element.OnAddedToUi and Element.OnRemovedFromUi
2022-09-13 16:14:36 +02:00
- Added ScrollBar.MouseDragScrolling
2022-09-24 18:46:33 +02:00
- Added Panel.ScrollToElement
2022-10-17 10:57:41 +02:00
- Added ElementHelper.MakeGrid
2022-12-21 21:02:10 +01:00
- Added Button.AutoDisableCondition
2022-07-27 11:19:40 +02:00
Improvements
- Allow elements to auto-adjust their size even when their children are aligned oddly
2022-07-29 22:24:37 +02:00
- Close other dropdowns when opening a dropdown
2022-09-04 12:26:55 +02:00
- Generified UiMarkdownParser by adding abstract UiParser
2022-09-14 21:17:43 +02:00
- Multi-target net452, making MLEM compatible with MonoGame for consoles
2022-10-31 18:33:53 +01:00
- Added trimming and AOT annotations and made MLEM.Ui trimmable
2022-12-16 20:03:19 +01:00
- Ensure paragraphs display up-to-date versions of their text callbacks
2022-12-18 13:01:19 +01:00
- Set cornflower blue as the default link color
2022-12-22 11:39:07 +01:00
- Added TextField.OnCopyPasteException to allow handling exceptions thrown by TextCopy
2022-12-22 19:50:50 +01:00
- Avoid paragraphs splitting or truncating their text unnecessarily
2022-12-23 17:08:51 +01:00
- Automatically mark elements dirty when various member values are changed
2023-01-08 11:21:20 +01:00
- Allow initializing a ui system's text formatter without default codes and macros
2022-07-25 18:56:21 +02:00
2022-08-04 20:14:29 +02:00
Fixes
- Fixed parents of elements that prevent spill not being notified properly
2022-08-04 20:44:54 +02:00
- Fixed paragraphs sometimes not updating their position properly when hidden because they're empty
2022-08-04 21:03:16 +02:00
- Fixed panels sometimes not drawing children that came into view when their positions changed unexpectedly
2022-08-19 17:57:44 +02:00
- Fixed UiMarkdownParser not parsing formatting in headings and blockquotes
2022-09-13 15:44:12 +02:00
- Fixed Element.OnChildAdded and Element.OnChildRemoved being called for grandchildren when a child is added
2022-09-19 15:02:36 +02:00
- Fixed an exception when trying to force-update the area of an element without a ui system
2022-09-24 11:04:23 +02:00
- Fixed the scroll bar of an empty panel being positioned incorrectly
2022-10-10 19:29:01 +02:00
- Fixed UiControls maintaining old input states when input types are toggled off
2022-11-24 18:38:51 +01:00
- Fixed an occasional deadlock when a game is disposed with a scrolling Panel present
2023-01-08 11:21:20 +01:00
- Fixed UiStyle.LinkColor not being applied to the ui system when changed
2022-11-24 18:38:51 +01:00
Removals
- Marked Element.OnDisposed as obsolete in favor of the more predictable OnRemovedFromUi
2022-08-04 20:14:29 +02:00
2022-08-02 23:02:34 +02:00
### MLEM.Data
2022-09-14 10:40:52 +02:00
Additions
2022-09-14 11:59:28 +02:00
- Added data, from, and copy instructions to DataTextureAtlas
2022-10-20 23:59:42 +02:00
- Added the ability to add additional regions to a RuntimeTexturePacker after packing
2022-10-26 23:34:30 +02:00
- Added GetFlags, GetUniqueFlags and IsDefined to DynamicEnum
2022-11-23 12:14:08 +01:00
- Added DataTextureAtlas.ToDictionary
2022-09-14 10:40:52 +02:00
2022-08-02 23:56:18 +02:00
Improvements
- Allow data texture atlas pivots and offsets to be negative
2022-08-03 10:37:59 +02:00
- Made RuntimeTexturePacker restore texture region name and pivot when packing
2022-09-14 21:17:43 +02:00
- Multi-target net452, making MLEM compatible with MonoGame for consoles
2022-10-31 18:33:53 +01:00
- Added trimming and AOT annotations and made MLEM.Data trimmable
2022-11-14 11:49:47 +01:00
- Store a RuntimeTexturePacker packed texture region's source region
2022-11-22 20:09:12 +01:00
- Use JSON.NET attributes in favor of DataContract and DataMember
2022-11-28 00:43:50 +01:00
- Made JsonTypeSafeWrapper.Of generic to potentially avoid reflective instantiation
2022-08-02 23:56:18 +02:00
2022-08-02 23:02:34 +02:00
Fixes
- Fixed data texture atlases not allowing most characters in their region names
2022-10-31 13:20:26 +01:00
Removals
- Marked DynamicEnum as obsolete due to its reimplementation in [DynamicEnums ](https://www.nuget.org/packages/DynamicEnums )
2023-02-21 17:21:19 +01:00
### MLEM.Extended
2022-11-10 15:41:24 +01:00
Additions
- Added Range extension methods GetPercentage and FromPercentage
2022-09-14 21:17:43 +02:00
Improvements
- Multi-target net452, making MLEM compatible with MonoGame for consoles
2022-10-31 18:33:53 +01:00
- Added trimming and AOT annotations and made MLEM.Extended trimmable
2022-10-15 13:48:45 +02:00
- **Made GenericBitmapFont and GenericStashFont support UTF-32 characters like emoji**
2022-09-14 21:17:43 +02:00
2023-02-21 17:21:19 +01:00
### MLEM.Startup
2022-09-14 21:17:43 +02:00
Improvements
- Multi-target net452, making MLEM compatible with MonoGame for consoles
2022-10-31 18:33:53 +01:00
- Added trimming and AOT annotations and made MLEM.Startup trimmable
2022-09-14 21:17:43 +02:00
2022-07-25 18:44:16 +02:00
## 6.0.0
2022-08-04 20:44:54 +02:00
2022-04-11 10:33:41 +02:00
### MLEM
Additions
2022-04-30 11:38:05 +02:00
- Added consuming variants of IsPressed methods to InputHandler and Keybind
2022-04-25 15:25:58 +02:00
- Added SpriteBatchContext struct and extensions
2022-04-29 15:34:04 +02:00
- Added InputHandler.InvertPressBehavior
2022-05-10 21:32:28 +02:00
- Added ReverseInput, ReverseOutput and AndThen to Easings
2022-05-18 21:45:38 +02:00
- Added an Enum constructor to GenericInput
2022-05-20 16:59:28 +02:00
- Added RandomPitchModifier and GetRandomPitch to SoundEffectInfo
2022-06-19 18:17:46 +02:00
- Added TextInput class, which is an isolated version of MLEM.Ui's TextField logic
2022-06-24 14:01:26 +02:00
- Added MLEM.FNA, which is fully compatible with FNA
2022-06-29 15:57:41 +02:00
- Added TryGetUpTime, GetUpTime, TryGetTimeSincePress and GetTimeSincePress to InputHandler
2022-04-08 14:50:14 +02:00
2022-05-18 18:50:00 +02:00
Improvements
- Allow comparing Keybind and Combination based on the amount of modifiers they have
2022-06-08 11:05:18 +02:00
- Allow using multiple textures in a StaticSpriteBatch
2022-06-15 11:44:28 +02:00
- Added GenericInput support for Buttons.None
2022-06-26 15:08:11 +02:00
- Improved the way terminating formatting codes work by introducing SimpleEndCode
2022-07-19 15:20:19 +02:00
- Allow RandomExtensions to operate on any ICollection
2022-06-07 11:57:25 +02:00
2022-06-15 11:38:11 +02:00
Removals
- Marked AStar.InfiniteCost as obsolete
2022-04-09 22:00:21 +02:00
### MLEM.Ui
2022-04-14 17:54:25 +02:00
Additions
- Added Element.AutoNavGroup which allows forming groups for auto-navigation
2022-06-13 23:52:10 +02:00
- Added UiMarkdownParser
2022-06-24 14:01:26 +02:00
- Added MLEM.Ui.FNA, which is fully compatible with FNA
2022-04-14 17:54:25 +02:00
2022-04-15 14:18:55 +02:00
Improvements
- Ensure that Element.IsMouseOver is always accurate by making it an auto-property
2022-04-25 15:25:58 +02:00
- Started using SpriteBatchContext for Draw and DrawTransformed methods
2022-04-30 12:14:08 +02:00
- Make use of the new consuming variants in InputHandler and Keybind to consume UiControls inputs
2022-05-03 18:58:18 +02:00
- Allow Tooltip to manage more than one paragraph and make it easier to add new lines
2022-05-03 19:07:53 +02:00
- Allow adding dropdown elements at a specified index
2022-05-03 19:35:44 +02:00
- Turned Tooltip paragraph styling into style properties
2022-05-03 20:10:26 +02:00
- Improved ElementHelper.AddTooltip overloads
2022-05-03 20:26:39 +02:00
- Don't query a paragraph's text callback in the constructor
2022-05-04 13:22:24 +02:00
- Allow manually hiding a paragraph without its text overriding the hidden state
2022-05-18 15:54:29 +02:00
- Added optional isKeybindAllowed parameter to KeybindButton
2022-07-18 15:53:26 +02:00
- Allow manually setting a RootElement as CanBeActive
2022-04-15 14:18:55 +02:00
2022-04-09 22:00:21 +02:00
Fixes
- Fixed auto-nav tooltip displaying on the selected element even when not in auto-nav mode
2022-04-14 17:45:01 +02:00
- Fixed radio buttons not unchecking all other radio buttons with the same root element
2022-04-15 14:16:38 +02:00
- Fixed elements not being deselected when removed through RemoveChild
2022-05-04 13:54:15 +02:00
- Fixed elements sometimes staying hidden when they shouldn't in scrolling panels
2022-05-21 20:42:54 +02:00
- Fixed elements' OnDeselected events not being raised when CanBeSelected is set to false while selected
2022-05-26 11:39:55 +02:00
- Fixed gamepad auto-nav angle being incorrect for some elements
2022-04-09 22:00:21 +02:00
2022-04-25 15:25:58 +02:00
Removals
- Marked old Draw and DrawTransformed overloads as obsolete in favor of SpriteBatchContext ones
2022-05-03 18:58:18 +02:00
- Marked Tooltip.Paragraph as obsolete in favor of new Paragraphs collection
2022-04-25 15:25:58 +02:00
2022-06-06 23:50:13 +02:00
### MLEM.Extended
Additions
- Added LayerPositionF
2022-06-24 14:01:26 +02:00
- Added MLEM.Extended.FNA, which is fully compatible with FNA
2022-06-06 23:50:13 +02:00
Improvements
- Allow using a StaticSpriteBatch to render an IndividualTiledMapRenderer
2022-05-07 21:39:36 +02:00
### MLEM.Data
2022-05-25 12:37:51 +02:00
Additions
- Added the ability to add padding to RuntimeTexturePacker texture regions
- Added the ability to pack UniformTextureAtlas and DataTextureAtlas using RuntimeTexturePacker
2022-06-24 14:01:26 +02:00
- Added MLEM.Data.FNA, which is fully compatible with FNA
2022-05-25 12:37:51 +02:00
2022-05-07 21:39:36 +02:00
Improvements
- Premultiply textures when using RawContentManager
2022-05-25 12:37:51 +02:00
- Allow enumerating all region names of a DataTextureAtlas
2022-05-25 13:09:30 +02:00
- Cache RuntimeTexturePacker texture data while packing to improve performance
2022-05-28 21:21:25 +02:00
- Greatly improved RuntimeTexturePacker performance
2022-07-18 20:41:19 +02:00
- Allow specifying multiple names for a DataTextureAtlas region
2022-05-07 21:39:36 +02:00
2022-05-10 15:58:47 +02:00
Fixes
- Fixed SoundEffectReader incorrectly claiming it could read ogg and mp3 files
2022-06-24 14:01:26 +02:00
### MLEM.Startup
Additions
- Added MLEM.Startup.FNA, which is fully compatible with FNA
2022-07-25 18:23:16 +02:00
### MLEM.Templates
Improvements
- Updated to MonoGame 3.8.1
2022-04-08 14:37:25 +02:00
## 5.3.0
2022-08-04 20:44:54 +02:00
2021-12-22 12:46:17 +01:00
### MLEM
2021-12-22 13:00:41 +01:00
Additions
- Added StringBuilder overloads to GenericFont
2021-12-22 14:24:37 +01:00
- Added ColorExtensions.Multiply
2021-12-28 14:45:20 +01:00
- Added SoundEffectInstanceHandler.Stop
2022-01-22 16:51:42 +01:00
- Added TextureRegion.OffsetCopy
2022-03-10 16:03:09 +01:00
- Added RectangleF.DistanceSquared and RectangleF.Distance
2022-03-14 15:15:30 +01:00
- Added GamepadExtensions.GetAnalogValue to get the analog value of any gamepad button
2022-03-25 14:19:03 +01:00
- Added InputHandler.TryGetDownTime
2021-12-22 13:00:41 +01:00
2021-12-22 12:46:17 +01:00
Improvements
- Generify GenericFont's string drawing
2022-02-06 22:07:33 +01:00
- Added InputHandler mouse and touch position querying that preserves the game's viewport
2022-02-23 14:35:35 +01:00
- Added float version of GetRandomWeightedEntry
2022-03-07 12:00:33 +01:00
- Allow LinkCode to specify a color to draw with
2022-03-10 12:39:56 +01:00
- Allow better control over the order and layout of a Keybind's combinations
2022-03-14 15:15:30 +01:00
- Allow setting a gamepad button deadzone in InputHandler
2022-03-25 14:19:03 +01:00
- Trigger InputHandler key and gamepad repeats for the most recently pressed input
2022-03-26 12:51:14 +01:00
- Added properties and constructors for existing operator overloads to GenericInput
2021-12-21 23:23:25 +01:00
2022-01-02 23:31:47 +01:00
Fixes
2022-02-13 22:43:51 +01:00
- **Fixed a formatting Code only knowing about the last Token that it is applied in**
2022-02-14 00:24:31 +01:00
- Fixed Code.Draw receiving the index in the current line rather than the current token
2022-01-02 23:31:47 +01:00
- Fixed StaticSpriteBatch handling rotated sprites incorrectly
2022-03-24 11:43:55 +01:00
- Fixed InputHandler.InputsPressed ignoring repeat events for keyboards and gamepads
2022-01-02 23:31:47 +01:00
2022-01-24 11:16:23 +01:00
Removals
2022-03-25 14:19:03 +01:00
- **Removed InputHandler.StoreAllActiveInputs and always store all active inputs**
2022-01-24 11:16:23 +01:00
- Renamed GenericFont.OneEmSpace to Emsp (and marked OneEmSpace as obsolete)
2021-12-24 12:10:04 +01:00
### MLEM.Ui
2022-01-22 23:05:29 +01:00
Additions
- Added Element.OnStyleInit event
2022-03-14 16:12:51 +01:00
- Added UiControls.AutoNavModeChanged event
2022-01-22 23:05:29 +01:00
2021-12-24 12:10:04 +01:00
Improvements
- Allow for checkboxes and radio buttons to be disabled
2022-01-06 23:26:14 +01:00
- Only set a paragraph's area dirty when a text change would cause it to change size
2022-01-09 01:12:16 +01:00
- Ensure that a panel gets notified of all relevant changes by calling OnChildAreaDirty for all grandchildren
2022-01-09 01:15:05 +01:00
- Avoid unnecessary panel updates by using an Epsilon comparison when scrolling children
2022-01-22 22:54:47 +01:00
- Allow setting a default text alignment for paragraphs in UiStyle
2022-01-22 23:34:52 +01:00
- Made custom values of Element.Style persist when a new ui style is set
2022-01-30 16:56:07 +01:00
- Update elements less aggressively when changing a ui system's style
2022-02-06 21:16:35 +01:00
- Automatically update all elements when changing a ui system's viewport
2022-03-07 12:00:33 +01:00
- Allow setting a default color for clickable links in UiStyle
2022-03-10 12:39:56 +01:00
- Allow ElementHelper's KeybindButton to query a combination at a given index
2022-03-26 12:41:19 +01:00
- Allow ElementHelper's KeybindButton to accept a Keybind for clearing a combination
2022-03-10 13:50:47 +01:00
- Automatically select the first element when a dropdown is opened in auto nav mode
2022-03-10 14:25:41 +01:00
- Improved gamepad navigation by employing angles between elements
2022-03-10 15:00:42 +01:00
- Prefer elements that have the same parent as the currently selected element when using gamepad navigation
2022-03-14 14:20:12 +01:00
- Allow specifying a custom position for a tooltip to snap to
2022-04-05 14:42:30 +02:00
- Allow tooltips to display for elements when selected in auto-nav mode
2021-12-24 12:10:04 +01:00
2022-01-07 20:50:32 +01:00
Fixes
- Fixed paragraph links having incorrect hover locations when using special text alignments
2022-02-06 22:07:33 +01:00
- Fixed the graphics device's viewport being ignored for mouse and touch queries
2022-03-10 18:04:36 +01:00
- Fixed auto-navigating panels not scrolling to the center of elements properly
2022-03-11 12:29:56 +01:00
- Fixed UiControls allowing for non-selectable or non-mouseable elements to be marked as selected or moused
2022-03-11 13:25:18 +01:00
- Fixed buttons and checkboxes changing their CanBeSelected and CanBePressed values when being disabled
2022-03-17 20:04:58 +01:00
- Fixed children of Panel scroll bars also being scrolled
2022-03-17 20:45:28 +01:00
- Fixed RootElement.CanSelectContent and Element.IsSelected returning incorrect results when CanBeSelected changes
2022-03-17 20:46:49 +01:00
- Fixed dropdowns with some non-selectable children failing to navigate when using gamepad controls
2022-03-26 20:06:59 +01:00
- Fixed UiMetrics.ForceAreaUpdateTime being inaccurate for nested elements
2022-04-05 14:17:12 +02:00
- Fixed tooltips sometimes ignoring manually set IsHidden values
2022-04-05 14:54:20 +02:00
- Fixed delayed tooltips sometimes displaying in the wrong location for one frame
2022-01-07 20:50:32 +01:00
2022-01-22 23:20:04 +01:00
Removals
- Marked StyleProp equality members as obsolete
2022-03-26 21:13:05 +01:00
- Marked Element.BeginDelegate and Element.BeginImpl as obsolete
- Marked Element.DrawEarly and UiSystem.DrawEarly as obsolete
2022-01-22 23:20:04 +01:00
2022-01-22 16:55:46 +01:00
### MLEM.Extended
Improvements
- Preserve texture region names when converting between MLEM and MG.Extended
2022-01-02 22:49:39 +01:00
### MLEM.Data
Improvements
- Rethrow exceptions when no RawContentManager readers could be constructed
2022-01-02 22:51:52 +01:00
- Make Newtonsoft.Json dependency optional
2022-01-02 22:49:39 +01:00
2022-01-23 21:18:13 +01:00
Removals
- Marked CopyExtensions as obsolete
2021-12-21 23:16:18 +01:00
## 5.2.0
2022-08-04 20:44:54 +02:00
2021-10-10 20:30:40 +02:00
### MLEM
Additions
- Added a strikethrough formatting code
2021-10-12 03:23:35 +02:00
- Added GenericFont SplitStringSeparate which differentiates between existing newline characters and splits due to maximum width
2021-10-17 23:20:05 +02:00
- Added StaticSpriteBatch class
2021-11-16 15:08:35 +01:00
- Added missing easing functions Quart and Quint to Easings
2021-11-22 14:48:38 +01:00
- Added RotationVector extension methods for Matrix and Quaternion
2021-11-27 15:03:30 +01:00
- Added DrawExtendedAutoTile to the AutoTiling class
2021-10-10 20:30:40 +02:00
2021-10-19 22:06:49 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Moved AutoTiling to Graphics namespace**
2021-11-08 02:50:53 +01:00
- Cache TokenizedString inner offsets for non-Left text alignments to improve performance
2021-10-19 22:06:49 +02:00
- Exposed Camera's RoundPosition
2021-10-28 23:26:42 +02:00
- Exposed the epsilon value used by Camera
2021-11-18 10:58:50 +01:00
- Added Padding.Empty
2021-11-22 17:50:17 +01:00
- Throw an exception when text formatter macros resolve recursively too many times
2021-11-27 14:27:56 +01:00
- Allow using StaticSpriteBatch for AutoTiling
2021-11-27 22:45:37 +01:00
- Made TextFormatter string size based on the currently active font rather than the default one
2021-12-21 20:12:15 +01:00
- Allow storing multiple texture regions per SpriteAnimation frame
2021-10-19 22:06:49 +02:00
2021-11-22 18:52:52 +01:00
Fixes
- Fixed some end-of-line inconsistencies when using the Right text alignment
2021-11-29 21:24:08 +01:00
Removals
2021-11-29 21:44:00 +01:00
- **Removed deprecated Misc versions of SoundEffectInfo and SoundEffectInstanceHandler**
2021-11-29 21:24:08 +01:00
2021-10-01 03:42:27 +02:00
### MLEM.Ui
2021-10-11 23:35:50 +02:00
Additions
- Allow specifying a maximum amount of characters for a TextField
2021-10-12 02:16:09 +02:00
- Added a multiline editing mode to TextField
2021-11-27 22:45:37 +01:00
- Added a formatting code to allow for inline font changes
2021-12-11 17:26:55 +01:00
- Added a SquishingGroup element
2021-12-12 12:32:09 +01:00
- Added UiMetrics
2021-10-11 23:35:50 +02:00
2021-10-04 23:57:58 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Made Image ScaleToImage take ui scale into account**
- **Added style properties for a lot of hardcoded default element styles**
- **Allow setting a custom effect and depth stencil state for ui drawing**
2021-12-21 11:54:32 +01:00
- **Made StyleProp immutable**
2021-10-28 23:26:42 +02:00
- Exposed the epsilon value used by Element calculations
2021-10-30 15:33:38 +02:00
- 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
2021-11-01 13:39:37 +01:00
- Skip unnecessary area updates for elements with dirty parents
2021-11-08 02:02:59 +01:00
- Calculate panel scroll bar height based on content height
2021-11-14 21:32:13 +01:00
- Remember the location that a scroll bar scroller was grabbed in when scrolling
2021-12-21 00:01:57 +01:00
- Automatically set area dirty when changing child padding or paragraph fonts
2021-10-04 23:57:58 +02:00
2021-10-01 03:42:27 +02:00
Fixes
- Fixed VerticalSpace height parameter being an integer
2021-10-12 19:58:31 +02:00
- Fixed text not being pasted into a text field at all if it contains characters that don't match the input rule
2021-11-14 19:50:24 +01:00
- Fixed panels that don't auto-hide their scroll bars ignoring their width for child padding
2021-11-22 15:13:08 +01:00
- Fixed some inconsistencies with element transformations and mouse interaction
2021-09-24 17:00:05 +02:00
2021-11-14 21:04:50 +01:00
Removals
2021-11-29 21:44:00 +01:00
- **Removed ScrollBar ScrollerOffset**
2021-11-14 21:04:50 +01:00
2021-10-16 20:22:06 +02:00
### MLEM.Data
2021-11-01 16:00:13 +01:00
Additions
- Allow RuntimeTexturePacker to automatically dispose submitted textures when packing
2021-11-06 23:38:21 +01:00
- Added JsonTypeSafeWrapper and JsonTypeSafeGenericDataHolder
2021-11-01 16:00:13 +01:00
2021-10-16 20:22:06 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Use TitleContainer for opening streams where possible**
2021-11-08 23:46:59 +01:00
- Set GraphicsResource Name when loading assets using RawContentManager
2021-10-16 20:22:06 +02:00
2021-12-03 12:52:26 +01:00
Removals
- Marked features related to Lidgren.Network as obsolete
2021-12-13 00:39:36 +01:00
### MLEM.Startup
Additions
- Added virtual InitializeDefaultUiStyle to MlemGame
- Added PreDraw and PreUpdate events and coroutine events
2021-09-24 16:51:06 +02:00
## 5.1.0
2022-08-04 20:44:54 +02:00
2021-06-30 19:40:43 +02:00
### MLEM
2021-07-05 19:46:39 +02:00
Additions
- Added RotateBy to Direction2Helper
2021-07-03 01:44:39 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Moved ColorHelper.Invert to ColorExtensions.Invert**
- **Allow enumerating SoundEffectInstanceHandler entries**
2021-08-27 20:36:04 +02:00
- Improved NinePatch memory usage
2021-07-05 19:46:39 +02:00
- Moved sound-related classes into Sound namespace
2021-07-18 22:18:46 +02:00
- Added customizable overloads for Keybind, Combination and GenericInput ToString methods
- Removed LINQ Any and All usage in various methods to improve memory usage
2021-08-27 20:36:04 +02:00
- Improved KeysExtensions memory usage
2021-07-13 15:41:42 +02:00
Fixes
- Set default values for InputHandler held and pressed keys to avoid an exception if buttons are held in the very first frame
2021-07-28 17:22:47 +02:00
- Fixed GenericFont MeasureString using incorrect width for Zwsp and OneEmSpace
2021-08-06 22:40:32 +02:00
- Fixed tiled NinePatches missing pixels with some scales
2021-07-03 01:44:39 +02:00
2021-07-03 01:50:37 +02:00
### MLEM.Ui
2021-07-08 18:17:39 +02:00
Additions
- Added a masking character to TextField to allow for password-style text fields
2021-07-18 22:18:46 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Explicitly disallow creating Paragraphs without fonts to make starting out with MLEM.Ui less confusing**
2021-07-18 22:18:46 +02:00
- Removed LINQ Any and All usage in various methods to improve memory usage
2021-07-24 07:36:42 +02:00
- Allow adding Link children to non-Paragraph elements
2021-07-18 22:18:46 +02:00
2021-07-03 01:50:37 +02:00
Fixes
- Fixed a crash if a paragraph has a link formatting code, but no font
2021-07-22 04:27:57 +02:00
- Fixed tooltips with custom text scale not snapping to the mouse correctly in their first displayed frame
2021-09-09 16:53:12 +02:00
- Fixed tooltips not displaying correctly with auto-hiding paragraphs
2021-09-24 16:35:53 +02:00
- Fixed rounding errors causing AutoInline elements to be pushed into the next line with some ui scales
2021-07-03 01:50:37 +02:00
2021-07-19 23:10:27 +02:00
### MLEM.Extended
Improvements
2021-08-19 21:43:17 +02:00
- Use FontStashSharp's built-in LineHeight property for GenericStashFont
2021-07-19 23:10:27 +02:00
2021-07-12 03:14:05 +02:00
### MLEM.Data
Additions
- Added the ability to specify a coordinate offset in data texture atlases
2021-07-27 16:40:42 +02:00
Improvements
- Improved RawContentManager's reader loading and added better exception handling
2021-08-05 03:59:14 +02:00
- Improved CopyExtensions construction speed
2021-09-05 16:18:26 +02:00
- Improved DynamicEnum caching
2021-07-27 16:40:42 +02:00
2021-09-22 20:33:11 +02:00
Fixes
- Fixed DynamicEnum AddFlag going into an infinite loop
2021-06-30 00:18:54 +02:00
## 5.0.0
2022-08-04 20:44:54 +02:00
2021-06-28 15:38:30 +02:00
### 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
2021-06-29 00:57:04 +02:00
Improvements
2021-11-29 21:44:00 +01:00
- **Replaced TextInputWrapper with a more refined MlemPlatform that includes the ability to open links on various platforms**
2021-06-28 15:38:30 +02:00
- 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
- 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
2021-11-29 21:44:00 +01:00
- **Removed the array-based GetRandomEntry method**
- **Removed obsolete ColorExtension methods**
2021-06-28 15:38:30 +02:00
### 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
2021-11-29 21:44:00 +01:00
- **Removed unnecessary GraphicsDevice references from UiSystem**
2021-06-28 15:38:30 +02:00
- Stop a panel's scroll bar from being removed from its children list automatically
- 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
2022-06-19 18:17:46 +02:00
- Fixed RawContentManager crashing with dynamic assemblies present