Change Logs
[2.1.0] 2025-08-xx
Added
- Added
StandardWindowStyle.CanCollapse. - Added
StandardWindowStyle.InitialCollapses. - Implemented
Context.GetMainWindow(). - Added the ability to collapse
StandardWindow. - Implemented
Context.GetMainWindowCount(). - Implemented
Context.SetToTop(). - Defined
IWindow.WidgetType.
Removed
- Removed the
rectparameter fromShaper.AddText()as it was internally meaningless. - Removed
PooledArrayList<T>because it was a mutable struct that could easily be misused, and implementedPooledFixedList<T>instead.
Changed
- Modified
TextDemo. - Migrated
Gridrand.RimGui.TextureFilterModetoGridrand.Rendering.TextureFilterMode. - Renamed
RectInt.Move()toTranslate(). - Migrated
EnabledScopeStackto theGridrand.Contractsnamespace. - Updated
Context.CanInteract()to considerStyle.IsEnabled. - Modified
Vector2.ToRect()to acceptwidthandheightparameters. - Changed
Gui.Image()to useITexture.FilterModeinstead of a passedTextureFilterMode. - The texture atlas policy was changed to use a fixed size specified during GUI generation, rather than expanding dynamically when needed.
- Minimized the color difference between Gamma and Linear for text.
Shaper.AddCircleFrame()andShaper.AddCircle()now acceptradiusinstead ofdiameter.
Fixed
- Fixed an issue where
AlignmentXandAlignmentYsometimes didn't work correctly. - Implemented
GuiUtil.LabelNextSquare(). - Fixed
DragInputWidgetto display the correct disabled color instead of the enabled color when disabled. - Fixed a bug where rendering would only appear in the Scene Window when the Game Window and Scene Window were displayed side-by-side in URP and HDRP.
- Implemented
Context.RemoveFromAtlas(). - Fixed a rare bug in
CustomDemo.
[2.0.2] 2025-07-xx
Removed
- Removed
Shaper.AddHorizontalGradient().- Can be replaced by
AddGradient().
- Can be replaced by
- Removed
Shaper.AddBackFrontCircle().- It's confusing, and just executes AddCircle() twice, so I deleted it.
- Removed
Shaper.AddBackFrontSpriteCircle().- Can be replaced with
AddTexture().
- Can be replaced with
- Removed
Shaper.AddSpriteCircle().- Can be replaced by
AddTexture(), which offers more functionality.
- Can be replaced by
- Removed
Shaper.AddRightPointingTriangleInSquare(),AddPointingDownTriangleInSquare(),Shaper.AddEquilateralTriangle(), andAddBottomRightTriangle().- They could be replaced by
AddTriangle()orAddConvexPolygonAA().
- They could be replaced by
- Removed
GradientWidget.- Removed as it's an inappropriate implementation for a widget.
- As an alternative, please use
Shaper.AddGradient()withGui.CustomDelegate().
Changed
- Modified argument order of
Shaper.AddConvexPolygonAA()to unify with other methods. - Changed
LayoutBuilderDemo. - Changed the initial window displayed in
ManualWindow. - Changed
ColorDemo.
Fixed
- Added anti-aliasing support to
RectSizeHandleWidget.
[2.0.1] 2025-07-04
Added
- Added
SizeType.None.
Changed
- Refactored
CustomDemo. - Modified
ButtonStyleDemo. - Changed the initial window display in
ManualWindow. - Added missing
ScaleFactormultiplications.
Fixed
- Corrected an incorrect comment in
CharInfosHelper.CalcXAdvance(). - Corrected instances where an incorrect
ScaleFactorwas applied. - Fixed a bug where
ScaleFactorwas being multiplied twice inGui.NextTextWidth(). - Fixed a bug where
ScrollDemocould behave incorrectly whenScaleFactorwas set to a value other than 1. - Fixed incorrect build results when
isValidwas set tofalseinILayoutBuilder<TNextBuilder, TRects>.Fixed(), etc. - Fixed a bug where border colors were not linearly transformed.
[2.0.0] 2025-07-03
In a nutshell, here's a summary:
- Anti-aliasing support.
- Enabled drawing of rounded corners and borders for Widgets such as Buttons.
- Migrated several Widgets to RimGui Extensions.
- Numerous other feature additions, bug fixes, and usability improvements.
Added
- Added support for setting the frame color during press in
RadioButtonWidget - Added support for setting the frame color during press in
CheckBoxWidget - Added
CanInteract()method toContextas a replacement for the removedIsValidPointerIn() - Added
BeginVertical()andBeginHorizontal()methods toContextfor consistency withBeginAxis() - Added
BeginIndent()andEndIndent()methods toContextto match naming with other scope methods - Added
IEquatable<Padding>implementation for thePaddingstruct - Added
SliderStyle.TrackThicknesses - Moved
AdvanceFixedScrollItem()fromGuitoContextto maintain separation between layout and drawing logic - Added
InteractiveItemStyle.HoveredColors - Added
Context.IsWindowInteractive()method - Implemented anti-aliasing support with
Shaper.AddLineAA(),AddClosedLineAA(), andAddConvexPolygonAA() - Allowed setting the selected mark color in
RadioButtonWidget - Made
Gui.BeginFixedScroll()allocation-free - Introduced
ColorPreviewStyleand addedStyle.ColorPreview - Added
Gui.BeginInteractiveItem()andGui.EndInteractiveItem() - Added
Context.MarkLastDropTarget()method - Added parameterless overload for
Gui.CustomDelegate()
Changed
- Reordered the constructor and fields of
HsvColorto follow the orderh, s, v, a - Renamed
CompositeScopetoCompositeWidgetScope - Renamed all
IsXXXThisFrame()methods such asIsLastPressedThisFrame()toWasXXXThisFrame()for accuracy - Removed the
Isprefix fromWidgetStatusFlags.IsHoveredandIsPressed - Updated button behavior to properly handle click events
- Renamed
IReadOnlyKeyContexttoIReadOnlyKeysContext - Renamed
IInputContext.KeyContexttoKeys - Improved
Gui.SlidePad()to ensureWasLastPressed()and similar methods return correct values - Modified
Gui.FocusedInputText()to accept initial text asReadOnlySpan<char> - Changed the slider handle shape to a circle
- Renamed
SliderStyle.HandleHalfThicknessestoHandleRadiuses - Removed
Gui.LayoutBuilderand moved its functionality toContext - Changed the return value of
Gui.InputText()toInputTextResult - Removed
Gui.HorizontalGradient()as it was a redundant helper forGui.Gradient() - Updated
ToggleButtonto useToggleButtonStyleinstead ofButtonStyle - Renamed
Context.GetTargetWindowId()toGetInteractableWindowId() - Removed
GuiMeshMaterials - Made the check mark in
CheckBoxWidgetthicker - Removed
GuiAssets.PerfectCircleSpriteas it is no longer used - Updated
ButtonWidget,ToggleButtonWidget, andCheckBoxWidgetto render based onBorderWidth,BorderColor, andCornerRadius - Renamed
CheckBoxStyle.ThicknessestoBorderThicknesses - Modified
ScrollBarWidgetto render usingCornerRadius - Added spacing between the scrollbar and the scrollable area
- Enabled anti-aliasing for
FoldoutTriangleWidget - Refined foldout widget behavior
- Unified field naming to PascalCase for all
public static readonlyfields - Implemented implicit conversions between
Gridrand.Contracts.Vector3/Vector3Intand UnityEngine's types - Renamed
Vector2.UnitPerpendicular()toUnitNormal() - Optimized
IFigure.IsInside()to avoid GC allocations - Fixed a typo in
Vector2.GetSqrMagnitute()by renaming it toGetSqrMagnitude() - Updated
Gui.CustomDelegate()to supportNextWidth(),NextHeight(), andNextRect() - Removed
FixedSizeWidgetStyledue to unclear extension pattern - Removed
RadioButtonsWidgetwhich lacked support for flexible layout and multiple selections with[Flags] - Added demonstration of flexible radio button usage in
RadioButtonDemo - Implemented
IEquatable<Color32>forColor32 - Implemented
IEquatable<Color>forColor - Updated
Gui.BeginFixedScroll()to use style-based configuration instead of fixed parameters for height - Renamed
ScrollStyletoDynamicScrollStyle - Renamed
ScrollWidgettoDynamicScrollWidget - Renamed
Shaper.AddHsv()toAddSVPanel() - Renamed
Gui.Color()toGui.ColorPreview()to reflect that it shows a checkerboard background when the color is transparent - Removed
Style.WidgetRectsandWidgetRectStack; useGui.NextRect()instead - Simplified internal widget size stacks:
WidgetWidthStack,WidgetHeightStack, andSizeStack - Updated
ScrollViewexception messages for clarity - Changed
Style.EnabledStackto check only the topmost value instead of requiring all to betrue - Introduced
Style.EnabledStack.IsAllEnabledfor checking full stack status - Renamed
Style.IsEnabletoIsEnabled - Renamed
DefaultValuetoDefaultin all scope stack types (DefaultScopeStack<T>,ScaledFloatScopeStack,ScaledPaddingScopeStack) - Renamed
ILayoutBuilder<T>.BuildRemainHorizontal()/Vertical()toBuildRemainingHorizontal()/Vertical() - Updated
WidgetInfo.ToString()format - Modified
Gui.InputText()to always return the displayed text, not only when it changes - Removed
Context.GetHorizontalRemainRect()due to misleading name and behavior - Renamed
Context.RemainingWidthInRegion()/Height toGetRemainingWidth()/GetRemainingHeight() - Renamed
Context.GetRegionCurrentRect()toGetCurrentRect() - Removed redundant
GetRemainRect()andGetCurrentRegionRect()fromContext - Renamed
Context.GetCurrentRegionWidth()/Height()toGetCurrentWidth()/GetCurrentHeight() - Simplified the API for fixed-size scrolling
- Split demos for
RadioButtonandToggleButtonfromButtonDemo - Implemented a tab-like example using
ToggleButtoninToggleButtonDemo - Removed
TabSetWidgetin favor of flexible usage ofToggleButton - Made
InputTextStyle.UnderLineColorsconfigurable viaStyleSettings - Added
Context.SetNeedNextSpace()for spacing control - Brightened default widget colors for better visibility over boxes
- Adjusted underline color of input text to be slightly darker and style-driven
- Updated manual font padding
- Brightened default text colors
- Renamed
IRectDynamicBuildertoIDynamicLayoutBuilder - Enabled loop-based flexible layout building in
IDynamicLayoutBuilder - Changed
Context.AllocateRect()so that anullwidth uses the remaining region width - Improved the
AxisDemo - Renamed
Int32ParsertoIntParser, andUInt32ParsertoUIntParser - Renamed
Context.TrySetDropTarget()toMarkDropTarget() - Removed
Context.TryDragDropLast()and split intoMarkLastDropTarget()andTryDragLast() - Made
Gui.InteractiveItem()accept a default value forisSelected - Darkened
HoveredColorslightly for better visibility - Made
DragDropDemoeasier to understand - Enabled
StyleSettingsDrawerto modifyScaleFactor - Standardized naming by removing the plural
sfrom properties likeXXXColorsinStyleSettingsDrawer - Improved exception log message in
Dispose()to clarify that the root cause may appear earlier in the log - Allowed setting of normal color in
InteractiveItemWidget - Updated
InputTextWidgetto disable interaction properly based on style - Fixed broken link to Unity Discussions in
RimGuiWindow
Fixed
- Fixed bug in
SpriteButtonwhere click behavior was not handled correctly - Enabled
Gui.NextHeight(),NextWidth(), andNextRect()support inMultiLineTexWidget - Fixed incorrect
WasLastPressed()behavior after usingGui.SlidePad() - Fixed bug in
HsvColorconstructor - Fixed issue in
Gui.Custom()whereNextRect()had no effect unlessshouldAllocateInRegionwastrue - Improved anti-aliasing rendering in
RadioButtonWidget - Fixed display issues in
FoldoutButton - Fixed
Context.TryDragLast()incorrectly returning true for a mismatched group key during drag - Fixed interaction disabling logic in
InputTextWidget
Example of Fixed-size scroll modification
version 1.2.0
var handler = Gui.CreateScrollHandler(Ctx.GetRemainRect().height, 100, Style.StandardHeight, 0f);
while (handler.Next())
{
Gui.Text(handler.CurrentIndex.ToString());
}
version 2.0.0
using (Gui.BeginFixedScroll(Ctx.GetRemainRect().height, 100, Style.StandardHeight, 0f))
{
while (Gui.AdvanceFixedScrollItem())
{
Gui.Text($"{Ctx.GetFixedScrollIndex()}");
}
}
[1.2.0] 2025-05-08
Added
LabelInput()support forVector3andVector4.LabelInput()support forVector2IntandVector3Int.LabelInput()support forRect,RectInt,Bounds, andBoundsInt.- Implicit conversion operators for
UnityEngine.Vector4,Bounds, andBoundsInt. LabelSliderNumeric<TNumeric>for generic numeric sliders.IEquatableimplementations forRect,RectInt,Bounds, andBoundsInt.- Button linking to Unity Discussions in
RimGuiWindow.
Changed
- Refactored
LabelInputInt()and similar methods to removemin/maxparameters; numeric input is now handled viaLabelInputNumeric(). - Renamed
SliderInputWidgettoLabelSliderWidget. LabelInput()now returns the result value instead of aboolindicating change.- Renamed
InputNumericWidgettoLabelInputNumericWidget. - Renamed
InputStringWidgettoLabelInputStringWidget. Gui.HorizontalDragText()(nowGui.DraggableTextNumeric()) returns the modified value.- Renamed
Gui.LabelInputColor()toLabelInput(). - Renamed
Gui.Slider<T>()for numeric types toSliderNumeric(). - Renamed
HorizontalDragTexttoDraggableTextNumeric. - Extended
Gui.LabelText()to support all numeric types (TNumeric). - Renamed
ScopeRangestoNumericRanges. - Refactored
ManualWindow. - Refactored
CustomDemo. - Renamed
Time.FrameTimetoTotalTime.
Fixed
- Adjusted drag scaling behavior for
Labeldragging to improve control sensitivity. - Fixed an error when URP15 or higher
[1.1.0] 2025-05-02
Added
- Implemented setting to make Foldouts open by default.
- Implemented methods such as
LabelInputUShort(). - Implemented
Shaper.AddTriangle(). - Implemented
Context.IsInputEnabled(). - Implemented
Context.EnableInput().
Changed
- Simplified code around
ITreeNodeHandler. - Changed exception messages.
- Refactored
CustomDemo. - Renamed
LayoutDemotoLayoutBuilderDemo. - Renamed
BoxDemotoBoxAndFrameDemo. - Renamed
Style.RawStandardHeightand made it configurable. - Adjusted values in
StyleDemo. - Adjusted style values for
Heading. - Added space between
SliderandInputText. - Moved padding settings from the base class to each individual class in
Style.
Fixed
- Fixed mistakes in
TreeDemo. - Fixed bug in
Gui.LabelInputBool(). - Fixed bug where handle in
ColorPickerandHueBarcould go below the bottom edge. - Removed
OverrideFoldoutStatus. - Fixed issue where the "G" in RGB was cut off.
- Fixed issue where WebGL build could not be operated on mobile.
- Fixed incorrect multiplication of
ScaleFactorin the manual.