Skip to content

Releases: Orange-Panda/Unity-Utilities

3.0.2

26 Mar 06:30

Choose a tag to compare

Fixed

  • Fixed AspectRatioCalculator not working if RecalculateAspect() called before Start

3.0.1

27 Jan 21:17

Choose a tag to compare

Fixed

  • Fixed some OverlayInterface fields missing [SerializeField] attribute

3.0.0

26 Jan 03:42

Choose a tag to compare

This major release uproots a lot of longstanding issues with the infrastructure and organization of this package and therefore has many breaking changes. You will almost assuredly have to update your implementations and scripts will likely not compile and need to be updated upon updating to this release from a previous version.

Added

  • Add SetA(this Color, float) extension method
  • Add a few methods to GameFile to specify type of file to write
  • Add StringComparer parameter to LookupTable constructor allowing customization of how keys are compared.
  • Add TryGetPreviousTab and TryGetNextTab functions to TabGroup
  • Add OverflowScrolling public get-only property to TabGroup
  • Add ActionInvoked event to ActionEmitter
  • Add FocusEveryFrame property to AutoScroll component to control the active state of the component

Changed

  • ⚠️Breaking: Most classes have been moved to a new namespace to separate the package into different groups (to avoid some name conflicts)
    • Editor: LMirman.Utilities -> LMirman.Utilities.Editor
    • UI: LMirman.Utilities -> LMirman.Utilities.UI
    • Object Pool: LMirman.Utilities -> LMirman.Utilities.ObjectPool
    • Lookup Table: LMirman.Utilities -> LMirman.Utilities.LookupTable
    • Editor Tests: LMirman.Utilities.Tests.Editor
    • Runtime Tests: LMirman.Utilities.Tests.Runtime
    • All other classes are in the LMirman.Utilities namespace
  • ⚠️Breaking: Rename GameFile events to no longer begin with On term
  • ⚠️Breaking: Adjust the accessibility of many UI functions and fields
  • ⚠️Breaking: ActionEmitter no longer invokes ActionsUpdated event when an ActionEvent is invoked (use newly created ActionInvoked event if relevant)
  • ⚠️Breaking: ConfirmationWindow canvas field has been removed and moved to the signature of UIFunctions.CreateConfirmationWindow
  • ⚠️Breaking: UIFunctions.CreateConfirmationWindow no longer loads the confirmation window through Resources.Load("UI/Confirmation Window"), the prefab must be provided via argument
  • ⚠️Breaking: Change implementation of public serialized fields in OverlayEntry to protected serialized fields with public get-only properties
  • Update some extension methods to have [Pure] attribute, notifying if return value is unused (these methods have no consequences if return value unused)
  • The InBounds extension method now targets the ICollection interface allowing it to be used generically instead of just arrays and lists.
  • Improved documentation of many public methods (especially GameFile)
  • Confirmation window creation via UIFunctions.CreateConfirmationWindow now runs the Close event on previous window when creating a new window
  • Exposed UIFunctions.CreateConfirmationWindow creation through MostRecentConfirmation static property
  • Expose many ConfirmationWindow fields and methods to protected level to enable some custom behavior via inheritance

GitHub Tag Change

  • Going forward releases will no longer have the v prefix
    • Tags for previous releases will not be modified

v2.1.0

26 Jun 02:42

Choose a tag to compare

Added

  • Added support for creating OverlayManager overlays on transforms other than the manager's transform

v2.0.1

18 Nov 23:58

Choose a tag to compare

Fixed

  • Fixed unintentional exception being thrown in Poolable OnDestroy when a poolable object is destroyed from Object.Instantiate

v2.0.0

18 Nov 20:17

Choose a tag to compare

This major release has been created due to several breaking changes to the ObjectPool system.
Upgrading to this release will require updating syntax of scripts that utilize poolables.

Added

  • Added Poolable.Instance class, enabling usage of poolables that expire when the object is returned.
  • Added Poolable.Identifier property: a unique id that is assigned to a poolable when retrieved and revoked when returned.

Changed

  • Poolable objects that are incorrectly created using Object.Instantiate are now immediately destroyed and log an error.
  • ⚠️Breaking: The ObjectPool.Instantiate methods now return a Poolable.Instance instead of the Poolable itself.
    • To update: replace variable type with Poolable.Instance.
    • Use Poolable.Instance.IsActive to check if the instance is not null
      • Instances can be implicitly cast to bool for this check as well.
    • Use Poolable.Instance.Poolable to access the Poolable behavior as before
      • Will return null when the Poolable has been returned or disposed.

Removed

  • ⚠️Breaking: Removed public access to Poolable.poolSettings
    • The pool settings defined on the Poolable component should not be modified at runtime.
  • ⚠️Breaking: Removed set access for values of PoolSettings
    • Modifying these values directly had very erratic behavior.

v1.10.0

15 Nov 18:46

Choose a tag to compare

Added

  • Added public read-only property Poolable to PoolableBehaviour.

v1.9.0

08 Nov 20:06

Choose a tag to compare

Added

  • Added JsonConvert error handling support to GameFile
    • Can be overridden by setting GameFile.jsonSerializeSettings and GameFile.jsonDeserializeSettings

v1.8.0

11 Oct 03:09

Choose a tag to compare

Added

  • Added int.LayerMaskContains extension method
  • Added Vector2.Rotate extension method
  • Added [PublicAPI] attribute to most classes
  • Added methods to UIGroup<T> to mutate list of items
  • Added ItemIndexChanged event to UIGroup<T>
  • Added public get-only properties to UIGroup<T> for inspecting current values

Changed

  • UIGroup now sets current item to null and current index to -1 when disabling all items. Previously kept old value.

v1.7.1

13 Jun 01:51

Choose a tag to compare

Fixed

  • Fixed logical error in GameFile get byte[] functions