Skip to main content

Change Logs

[2.0.1] 2025-0x-xx

Added

  • Added SizeType.None.

Changed

  • Refactored CustomDemo.
  • Modified ButtonStyleDemo.
  • Changed the initial window display in ManualWindow.
  • Added missing ScaleFactor multiplications.

Fixed

  • Corrected an incorrect comment in CharInfosHelper.CalcXAdvance().
  • Corrected instances where an incorrect ScaleFactor was applied.
  • Fixed a bug where ScaleFactor was being multiplied twice in Gui.NextTextWidth().
  • Fixed a bug where ScrollDemo could behave incorrectly when ScaleFactor was set to a value other than 1.
  • Fixed incorrect build results when isValid was set to false in ILayoutBuilder<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 to Context as a replacement for the removed IsValidPointerIn()
  • Added BeginVertical() and BeginHorizontal() methods to Context for consistency with BeginAxis()
  • Added BeginIndent() and EndIndent() methods to Context to match naming with other scope methods
  • Added IEquatable<Padding> implementation for the Padding struct
  • Added SliderStyle.TrackThicknesses
  • Moved AdvanceFixedScrollItem() from Gui to Context to maintain separation between layout and drawing logic
  • Added InteractiveItemStyle.HoveredColors
  • Added Context.IsWindowInteractive() method
  • Implemented anti-aliasing support with Shaper.AddLineAA(), AddClosedLineAA(), and AddConvexPolygonAA()
  • Allowed setting the selected mark color in RadioButtonWidget
  • Made Gui.BeginFixedScroll() allocation-free
  • Introduced ColorPreviewStyle and added Style.ColorPreview
  • Added Gui.BeginInteractiveItem() and Gui.EndInteractiveItem()
  • Added Context.MarkLastDropTarget() method
  • Added parameterless overload for Gui.CustomDelegate()

Changed

  • Reordered the constructor and fields of HsvColor to follow the order h, s, v, a
  • Renamed CompositeScope to CompositeWidgetScope
  • Renamed all IsXXXThisFrame() methods such as IsLastPressedThisFrame() to WasXXXThisFrame() for accuracy
  • Removed the Is prefix from WidgetStatusFlags.IsHovered and IsPressed
  • Updated button behavior to properly handle click events
  • Renamed IReadOnlyKeyContext to IReadOnlyKeysContext
  • Renamed IInputContext.KeyContext to Keys
  • Improved Gui.SlidePad() to ensure WasLastPressed() and similar methods return correct values
  • Modified Gui.FocusedInputText() to accept initial text as ReadOnlySpan<char>
  • Changed the slider handle shape to a circle
  • Renamed SliderStyle.HandleHalfThicknesses to HandleRadiuses
  • Removed Gui.LayoutBuilder and moved its functionality to Context
  • Changed the return value of Gui.InputText() to InputTextResult
  • Removed Gui.HorizontalGradient() as it was a redundant helper for Gui.Gradient()
  • Updated ToggleButton to use ToggleButtonStyle instead of ButtonStyle
  • Renamed Context.GetTargetWindowId() to GetInteractableWindowId()
  • Removed GuiMeshMaterials
  • Made the check mark in CheckBoxWidget thicker
  • Removed GuiAssets.PerfectCircleSprite as it is no longer used
  • Updated ButtonWidget, ToggleButtonWidget, and CheckBoxWidget to render based on BorderWidth, BorderColor, and CornerRadius
  • Renamed CheckBoxStyle.Thicknesses to BorderThicknesses
  • Modified ScrollBarWidget to render using CornerRadius
  • 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 readonly fields
  • Implemented implicit conversions between Gridrand.Contracts.Vector3/Vector3Int and UnityEngine's types
  • Renamed Vector2.UnitPerpendicular() to UnitNormal()
  • Optimized IFigure.IsInside() to avoid GC allocations
  • Fixed a typo in Vector2.GetSqrMagnitute() by renaming it to GetSqrMagnitude()
  • Updated Gui.CustomDelegate() to support NextWidth(), NextHeight(), and NextRect()
  • Removed FixedSizeWidgetStyle due to unclear extension pattern
  • Removed RadioButtonsWidget which lacked support for flexible layout and multiple selections with [Flags]
  • Added demonstration of flexible radio button usage in RadioButtonDemo
  • Implemented IEquatable<Color32> for Color32
  • Implemented IEquatable<Color> for Color
  • Updated Gui.BeginFixedScroll() to use style-based configuration instead of fixed parameters for height
  • Renamed ScrollStyle to DynamicScrollStyle
  • Renamed ScrollWidget to DynamicScrollWidget
  • Renamed Shaper.AddHsv() to AddSVPanel()
  • Renamed Gui.Color() to Gui.ColorPreview() to reflect that it shows a checkerboard background when the color is transparent
  • Removed Style.WidgetRects and WidgetRectStack; use Gui.NextRect() instead
  • Simplified internal widget size stacks: WidgetWidthStack, WidgetHeightStack, and SizeStack
  • Updated ScrollView exception messages for clarity
  • Changed Style.EnabledStack to check only the topmost value instead of requiring all to be true
  • Introduced Style.EnabledStack.IsAllEnabled for checking full stack status
  • Renamed Style.IsEnable to IsEnabled
  • Renamed DefaultValue to Default in all scope stack types (DefaultScopeStack<T>, ScaledFloatScopeStack, ScaledPaddingScopeStack)
  • Renamed ILayoutBuilder<T>.BuildRemainHorizontal()/Vertical() to BuildRemainingHorizontal()/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 to GetRemainingWidth()/GetRemainingHeight()
  • Renamed Context.GetRegionCurrentRect() to GetCurrentRect()
  • Removed redundant GetRemainRect() and GetCurrentRegionRect() from Context
  • Renamed Context.GetCurrentRegionWidth()/Height() to GetCurrentWidth()/GetCurrentHeight()
  • Simplified the API for fixed-size scrolling
  • Split demos for RadioButton and ToggleButton from ButtonDemo
  • Implemented a tab-like example using ToggleButton in ToggleButtonDemo
  • Removed TabSetWidget in favor of flexible usage of ToggleButton
  • Made InputTextStyle.UnderLineColors configurable via StyleSettings
  • 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 IRectDynamicBuilder to IDynamicLayoutBuilder
  • Enabled loop-based flexible layout building in IDynamicLayoutBuilder
  • Changed Context.AllocateRect() so that a null width uses the remaining region width
  • Improved the AxisDemo
  • Renamed Int32Parser to IntParser, and UInt32Parser to UIntParser
  • Renamed Context.TrySetDropTarget() to MarkDropTarget()
  • Removed Context.TryDragDropLast() and split into MarkLastDropTarget() and TryDragLast()
  • Made Gui.InteractiveItem() accept a default value for isSelected
  • Darkened HoveredColor slightly for better visibility
  • Made DragDropDemo easier to understand
  • Enabled StyleSettingsDrawer to modify ScaleFactor
  • Standardized naming by removing the plural s from properties like XXXColors in StyleSettingsDrawer
  • 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 InputTextWidget to disable interaction properly based on style
  • Fixed broken link to Unity Discussions in RimGuiWindow

Fixed

  • Fixed bug in SpriteButton where click behavior was not handled correctly
  • Enabled Gui.NextHeight(), NextWidth(), and NextRect() support in MultiLineTexWidget
  • Fixed incorrect WasLastPressed() behavior after using Gui.SlidePad()
  • Fixed bug in HsvColor constructor
  • Fixed issue in Gui.Custom() where NextRect() had no effect unless shouldAllocateInRegion was true
  • 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 for Vector3 and Vector4.
  • LabelInput() support for Vector2Int and Vector3Int.
  • LabelInput() support for Rect, RectInt, Bounds, and BoundsInt.
  • Implicit conversion operators for UnityEngine.Vector4, Bounds, and BoundsInt.
  • LabelSliderNumeric<TNumeric> for generic numeric sliders.
  • IEquatable implementations for Rect, RectInt, Bounds, and BoundsInt.
  • Button linking to Unity Discussions in RimGuiWindow.

Changed

  • Refactored LabelInputInt() and similar methods to remove min/max parameters; numeric input is now handled via LabelInputNumeric().
  • Renamed SliderInputWidget to LabelSliderWidget.
  • LabelInput() now returns the result value instead of a bool indicating change.
  • Renamed InputNumericWidget to LabelInputNumericWidget.
  • Renamed InputStringWidget to LabelInputStringWidget.
  • Gui.HorizontalDragText() (now Gui.DraggableTextNumeric()) returns the modified value.
  • Renamed Gui.LabelInputColor() to LabelInput().
  • Renamed Gui.Slider<T>() for numeric types to SliderNumeric().
  • Renamed HorizontalDragText to DraggableTextNumeric.
  • Extended Gui.LabelText() to support all numeric types (TNumeric).
  • Renamed ScopeRanges to NumericRanges.
  • Refactored ManualWindow.
  • Refactored CustomDemo.
  • Renamed Time.FrameTime to TotalTime.

Fixed

  • Adjusted drag scaling behavior for Label dragging 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 LayoutDemo to LayoutBuilderDemo.
  • Renamed BoxDemo to BoxAndFrameDemo.
  • Renamed Style.RawStandardHeight and made it configurable.
  • Adjusted values in StyleDemo.
  • Adjusted style values for Heading.
  • Added space between Slider and InputText.
  • 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 ColorPicker and HueBar could 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 ScaleFactor in the manual.

[1.0.0] 2025-04-30