All notable changes to this package are documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Added support for creating
OverlayManager
overlays on transforms other than the manager's transform
- Fixed unintentional exception being thrown in Poolable
OnDestroy
when a poolable object is destroyed fromObject.Instantiate
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
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.
- Poolable objects that are incorrectly created using
Object.Instantiate
are now immediately destroyed and log an error. ⚠️ Breaking: TheObjectPool.Instantiate
methods now return aPoolable.Instance
instead of thePoolable
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.
⚠️ Breaking: Removed public access toPoolable.poolSettings
- The pool settings defined on the Poolable component should not be modified at runtime.
⚠️ Breaking: Removed set access for values ofPoolSettings
- Modifying these values directly had very erratic behavior.
- Added public read-only property
Poolable
toPoolableBehaviour
.
- Added JsonConvert error handling support to
GameFile
- Can be overriden by setting
GameFile.jsonSerializeSettings
andGameFile.jsonDeserializeSettings
- Can be overriden by setting
- 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 toUIGroup<T>
- Added public get-only properties to
UIGroup<T>
for inspecting current values
- UIGroup now sets current item to
null
and current index to-1
when disabling all items. Previously kept old value.
- Fixed logical error in
GameFile
get byte[] functions
- Added methods to
GameFile
which returns byte[] for the current file data. - Added methods to
GameFile
which loads a given byte[] directly into the file. - Added official support for subdirectories in
GameFile
- Added
.editorconfig
to project to enforce code styling rules internally.
- Several readonly fields on
GameFile
are now publicly accessible.
GameFile
now records the engine and system time when it is load/written.
- Added an optional
DefaultValue
property to the LookupTable system. - Added ability to control the
Space
in which an ObjectPool instantiates - Added support for the
IConvertible
type in the Generic Data Bank
- Added
ClampedValue<T>
andClampedField<T>
classes which ensure a value is within boundaries which are set at the objects contruction.
- Added
Generic Data Bank
- a way to store generic objects/variables into a string based dictionary.
- Added support for horizontal scrolling on the
Autoscroll
component. - Added fields to separately enable/disable Horizontal and Vertical management on the
Autoscroll
component. Both default to enabled. - Added
PoolableBehaviour
class: A template class that automatically subscribes toPoolable
's C# events and invokes virtual methods that your own inheriting classes can override.- This can be used to make developing pooled objects slightly more convenient but is not required.
- The
DisableAllItems()
function on UIGroup is nowpublic
. Was previouslyprotected
.
- Added
PoolableReturnAfterDelay
, a component which will automatically return a poolable object after some time. - Added
PoolableUnityEventEmitter
, a component which will fire UnityEvents for the matching poolable C# events.
- Added the
Yielders
class for caching frequently used coroutine yield instructions- Has support for
WaitForFixedUpdate
,WaitForEndOfFrame
,WaitForSeconds
, andWaitForSecondsRealtime
- Has support for
- Added the
ObjectPool
system, a static class for caching frequently instantiated/destroyed prefabs
- Added
SetVisualActive(bool)
method to OverlayInterface which is called during open, close, and load.
Close()
on OverlayInterface is no longer called by the OverlayManager when a panel is loaded. Thus,Open()
is now guaranteed to be invoked beforeClose()
.
- Fixed a typo in PanelGroup
- Package created.
- Includes:
- Action Emitter: For managing dynamic events, particularly in ui.
- Aspect Ratio Calculator: Assistant to the
AspectRatioFitter
in the canvas ui system. - Auto Scroll: Component for automatically updating a scroll rect when a new object is selected.
- Confirmation Windows: Infrastructure for prompts that the user can accept/decline
- Encryption: Built in AES encryptor for
Game Files
- Extensions: Convenient extension methods for general situations
- Game File: Infrastructure for saving serializiable data to the persistent data path
- Lookup Table: Infrastructure for finding assets/objects through a string key lookup
- Overlays: Handling opening/closing full screen ui elements that the user is required to input from
- Time Manager: Pause/Unpause functionality that maintains a non one time scale override.
- UI Groups: Functionality for showing and hiding ui components anywhere
- Tab UI Groups: Ordered list of ui elements to cycle through
- Panel UI Groups: Hierarchy list of ui elements that can be traversed upwards