All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
"Runtime Console"
Testing the waters of some features we've been cooking up for other purposes.
- A
CommandPalette
, (Developer)Console
andRuntimeConsole
requiring (Unity 2022.2+), example code utilizes the new InputSystem. - Numerous
Watches
which provide easily visualization of static fields. - A simplified
BuildConfiguration
object with inheritance. - Simplified ways to access identifiers for
DataTableBase
rows and columns. SceneExtensions
extensions to provide better awareness of loading.FilenameTimestampFormat
as aToString
format forDateTime
.GDX.RuntimeContent
to organize runtime resources for automatic build inclusion and loading.
TestRunner
now waits for all scenes to finish loading before proceeding with tests.- Moved issues and planning back to GitHub issues; making it easier for outside contributions.
"Going Bold"
After almost a year of no public updates (the
dev
branch was bustling), the release of4.0.0
comes with significant changes and a continued effort to improve unit test coverage and discoverability. The package remains tested against2020.3
and2021.3
; however, we strongly recommend transitioning to2022.3
or newer to unlock additional functionality.
GDX.Experimental
namespace to encapsulate code and features actively being iterated until they meet the shipping bar.- New toggle added to Project Settings -> GDX -> Environment, ensuring that GDX shaders included are always included in a build. This encompasses the shaders necessary to draw the
DebugDraw
commands (Experimental). TaskDirector
to assist withTaskBase
based scheduling of the thread pool, configurable in GDX project preferences.EditorTaskDirectorSystem
andTaskDirectorSystem
to automatically tick theTaskDirector
in appropriate modes.- Boilerplate in
PlayerLoopSystemExtensions
to make modifying the PlayerLoop much simpler. Compact()
added toSimpleList
utilizing a properly sized version of the backing array.FirstIndexOf()
andLastIndexOf()
methods added toArrayExtensions
constrained toIEquatable
for easier string comparison.FirstIndexOf()
,FirstIndexOfItem()
,FirstIndexOfValue()
,LastIndexOf()
,LastIndexOfItem()
,LastIndexOfValue()
methods added toSimpleListExtensions
.Contains()
toSimpleListExtensions
constrained toIEquatable
.WaitFor
program flow helper.AssetDatabaseReference
weak-reference objects with helpers.EditorPrefsCache
to cache editor preference accessing.StableDataTable
implementation of newDataTableBase
with full suite of supporting references*CellValue
.- Spreadsheet-like editing experience for
DataTableBase
inheriting objects (Unity 2022.2+)
- Extension-based classes now live in the namespace they extend from.
- Reworked the project settings window to now include some of the recent changelog for visibility.
SimpleListManagedPool
events renamed for consistency todestroyedItem
,returnedItem
,spawnedItem
,tearingDown
.- Explicit callout that
SerializableDictionary
does not support custom struct keys. - Addressables package version dependency increased to
1.18.19
. - Internal config variable names clarified, including now a config format version number.
- Reworked internal stylesheets to be segmented and more efficient.
StringKeyDictionary
andIntKeyDictionary
can now be initialized with capacities as static fields.- Bolt changes in Unity 2022 causing Project Settings from being able to load properly.
TransformExtensions::GetFirstComponentInChildrenComplex()
will now properly handle the recursive compare of objects appropriately.
Trace
has been removed, replaced withManagedLog
(Experimental), there is no longer a preferences section for it. Given that categories are set through code, so is the output options.- Removed portability tests based on depreciation of tool.
- Reliance on
jobs
package. - Any usage of
AssetDatabase.FindAssets()
"3D Arrays"
A few additions with a bug fix that emerged.
- New
Array3D
andNativeArray3D
flattened 3D arrays.
BitArray8
,BitArray16
,BitArray32
,BitArray64
have been markedSerializable
.
IntKeyDictionary.Clear()
now properly sets bucket values.
"Clean Slate"
As we began planning what this release might look like, the decision was made to attempt to clear out a significant portion of our technical debt by sunsetting unsupported versions of Unity. We also took this opportunity to reevaluate and upgrade portions of the framework to better position it for future growth.
- Dependencies on
com.unity.mathematics
,com.unity.burst
,com.unity.jobs
andcom.unity.collections
packages. - Support for
com.unity.runtime.dots
(UNITY_DOTSRUNTIME) builds. Unsupported functionality will cause compilation errors during builds for immediate feedback on unsupported usage. Additionally, unsupported methods are flagged with anUnsupportedRuntimeException
which is visible in documentation as well as IDE intelli-sense. - Support for
com.unity.entities
programming patterns. BuildVerificationReport
structure for quick validation of builds, including aTestBehaviour
.StringKeyDictionary
to optimize one of the most common use cases for dictionaries.SegmentedString
to support string search patterns.OriginalValueAttribute
to support a default value-like pattern.- Unity editor non-pro (light) theme.
- Additional information around coding standards to documentation.
UniformArray3D
counter part toNativeUniformArray3D
- Properly formatted the
CHANGELOG.md
thanks to a proper linter, as well as tried to unify nomenclature used to describe changes. - The
GDX
namespace has been reorganized. - Conform naming conventions to Unity standard.
GDXConfig
has been simplified toConfig
, with member variables being statically accessible.- Package's project settings were rebuilt to use
UIElement
s instead ofIMGUI
with added searchability. Smooth::HalfLifeToSmoothingFactor()
no longer defaults elapsed time toTime.deltaTime
- The visual scripting module detects the package based installation available in
Unity 2021
and forward. If you wish to have support inUnity 2020.3
via the Asset Store you will need to add a scripting define symbol ofGDX_VISUALSCRIPTING
to your project. - All internal
Dictionary<string,value>
have been replaced withStringKeyDictionary<value>
BuildInfoProvider
now uses aTextGenerator
for codegen.Platform::GetOutputFolder()
supports being overridden via command-line argumentGDX_OUTPUT_FOLDER
.- Internal members of
SerializableDictionary
have been renamed,FormerlySerializedAs
attribute has been used to hopefully upgrade content. Localization::GetIETF()
was renamed for clarity toLocalization::GetIETF_BCP47()
, with further value definitions.- Optimized internals of
CircularBuffer
removing some garbage being made when usingToArray()
. ListManagedPool
rebuilt asSimpleListManagedPool
for allobject
based pooling needs.- Flagged
DisableInInspectorAttributePropertyDrawer
to only use UIElements version withUNITY_2022_2_OR_NEWER
. GenerateProjectFiles
now has more macOS options.- The Camera extension method
CaptureToPNG()
has been renamedRenderToPNG()
to reflect better its actual actions. TransformExtensions::DestroyChildren()
now has an immediate mode to remove children at author time.- Moved
SemanticVersion
into theGDX.Developer
namespace. - Moved
TransientReference
into theGDX.Developer
namespace. Byte2
accessor throwsIndexOutOfRangeException
when usingENABLE_UNITY_COLLECTIONS_CHECKS
.
Platform::IsFocused()
now returns the proper focus state on desktop platforms.TransformExtensions::DestroyChildren()
no longer has issues with child counts.NativeUniformArray3D.GetFromIndex()
provides the correct index now.NUnitReport.GetResultCount()
now reflects accurate count postNUnitReport.Process()
.
Automation::GetTempFolder()
in favour of usingPlatform::GetOutputFolder()
.Automation::GetTempFilePath()
in favour of usingPlatform::GetUniqueOutputFilePath()
.NativeSimpleList
in favour of builtin collectionUnsafeList
.NativeSimpleQueue
in favour of builtin collectionUnsafeQueue
.GDXConfigInspector
no longer needed as the serialized config model has been replaced.- All "Requires UnityEngine.CoreModule.dll" remarks removed.
"Automate This"
This marks the start of our effort to refactor GDX to be more compatible outside of the GameObject world that we currently live in. Over the next couple versions a lot of effort will be going into making types Burst compatible. We will do this by changing the backing types to NativeCollections, however this will result in some slight changes to the API to force cleanup.
- A
RandomWrapper
was created to allow forSystem.Random
to be used with theIRandomProvider
interface. - Cleaning method
StringExtensions::StripNonAscii()
. - Editor scoped functionality, with supporting functionality builtin to provide reliable Unity editor testing.
Automation::CaptureEditorWindow<T>()
Automation::CaptureEditorWindowToPNG<T>()
Automation::CaptureFocusedEditorWindow()
Automation::CaptureFocusedEditorWindowToPNG()
- Numerous color comparison operation jobs.
Jobs.ParallelFor.Color32CompareJob
Jobs.ParallelFor.Color32MatchJob
Jobs.ParallelFor.ColorCompareJob
Jobs.ParallelFor.ColorMatchJob
- Now using a
NativeArray<uint>
to store state in the 'WELL1024a', now requires the use ofDispose()
. - Some
Platform
methods behaved like extensions when they should not have been.
WELL1024a
exclusive methods truly will exclude the values correctly.
"Told Ya"
Mistakes were made; fixes happened.
- Infinitely sized
CoalesceStream
available for dealing with large data streams. - A few (
Platform::EnsureFileWritable()
,Platform::ForceDeleteFile()
,Platform::IsFileWritable()
) file permission operations have been added.
- The manifest for the package can be found again! Corrected path information to reflect new hierarchy.
"Feature Branches"
A lot of experimental work is being now done in feature branches; this should speed up iteration time on releases.
Trace
configuration matrix available in project settings.
- Internally used
SettingsStyles
has been split intoSettingsStyles
andSettingsLayoutOptions
accordingly. - Moved everything up one folder layer in package to fit with package standards.
- Optimized referencing of
GDXConfig
in author time operations (now similar to runtime). IListExtensions::ContainsItem()
now usesEquals()
to resolve literals issues with strings.- Categories for Visual Scripting based entries are now correct.
- Resolved issue with newer Package Manager based lock files having no tag identities.
"Fresh Paint"
Breaking changes and a new license (BSL-1.0); making GDX even easier to include in projects!
- New FAQ section of the website, addressing some of the more frequently asked questions.
WELL1024a
implementation to replace removedMersenneTwister
in GDX .IRandomProvider
andRandomAdaptor
to allow for some interchange with existing usages; these are slow and should be used as a last resort.StringExtensions::GetStableHashCode()
for generating hashcode of strings identical toGetHashCode()
, without the virtual call.TransientReference
provides a comparable non-garbage collection blocking reference type.Report
provides some of the common logic used by the newly addedResourcesAudit
andResourcesDiff
. Think of this as an incredibly simple way to find resource memory leaks.
- File license headers, repository wide now reference the BSL-1.0 license.
- Corrected minimum compatible version to
2018.4
inREADME.md
- Added latest version
2.0.0
toSECURITY.md
, sunsetting1.2.x
. VisualScriptingCollectionAttribute
,VisualScriptingExtensionAttribute
,VisualScriptingTypeAttribute
,VisualScriptingUtilityAttribute
have been consolidated toVisualScriptingCompatible
.NextDouble
,NextSingle
functionality onIRandomProviders
do not default to extreme values.NativeSimpleList
andNativeSimpleQueue
are only available whencom.unity.collections
is not present.- Altered API documentation to have a heirachial namespace index using custom tooling.
- Removed some supporting types and methods used by GDX's project settings from documentation.
- Removed
MersenneTwister
to allow for our new licensing model (functionally replaced withWELL1024a
implementation).
"Visual Time"
An effort to make GDX more accessible to Visual Scripting.
- Automated compatibility tests for 2018.4 LTS, 2019.4 LTS and 2020.3 LTS have been added to internal CI.
- Automated portability checks for .NET Standard 2.0 and .NET Core 3.1 to internal CI.
- Support for Visual Scripting (Bolt) with options in Project Settings to add a currated portion of the
GDX
API for usage with Visual Scripting. - New array pooling type
ArrayPool
, with correspondingJaggedArrayWithCount
. - Numerous collections gained
Reverse()
methods, and the newly addedArray2D
also havingReverseRows()
andReverseColumns()
.
- Stated support for GDX has shifted to current release cycle Unity, with support for 2018.4 LTS, 2019.4 LTS and 2020.3 LTS. This doesn't mean that it will not work with other versions, just our automation only checks against LTS and current versions.
- Removed the extension
Get
method fromGameObjectPool
to match the other methods. - Only Unity 2020+ supports the Package Manager resolve function, previous versions of Unity will be presented with an options dialog.
- Consolidated access/creation of
GDXConfig
. - Altered
NativeArray2D
to index accessor to function likeArray2D
.
- Force the Package Manager to resolve the package manifest during an update.
- Occasional infinite loop importing
GDXConfig
with a cache server. - Unsupported attributes for Unity 2018.
- Struct specific extension methods have been removed from
IListExtensions
andSimpleListExtensions
; explicitly to avoid obsfucating boxing types and hiding a problem.
"Never Say Never"
Updates have been tested across different installation methods, a pooling system, and some fixes!
- UPM and GitHub installation methods utilizing the
dev
branch will have a "Force Update" action available to them in the Project Settings. PlatformExtensions
now has aIsHeadless()
method for determining if the application is running without a graphics device initialized; aka a headless server.EnumExtensions
has a fasterHasFlags()
method for working with flags.PoolingSystem
now exists in theGDX.Collections.Pooling
namespace, including aGameObjectPool
system.Trace
static now available to funnel allGDX
based logging through, with editor/build configurations available.
- Made
SparseSets
.NET Standard 2.0 compliant @godjammit
- Caught issue with
initialCapcity
causing an OOB issue withSparseSets
@godjammit - Caught a few more null coalescing assignments that are not compatible with Unity 2019 in
InspectorMessageBoxAttributeDecoratorDrawer
. (thanks Nick & Gabe) - Resolved
PackageProvider
issues with Unity 2019.
"UPM Updates"
Starting to frame up the ability to update package adds from GitHub.
- Some functionality around being able to update a UPM based package, by removing the entry in the lockfile, a package will update.
NavMeshPathExtensions
no longer breaks compiling withoutcom.unity.mathematics
.
"Hello World"
Enough critical mass has been hit with functionality that with this release we will start to look at publicizing the package more.
- Environment section of GDX project settings allows for an initial toggling of
GDX
scripting define symbol enforcement. TransformExtensions
gained aGetScenePath()
to create an easy way to identify an object in logs.GameObjectExtensions
extended out to have more helper functionality.- A
GetOrAddComponent()
method which ensures that a component exists (by adding) when requested. - The
GetScenePath()
for easy identification as well.
- A
- The
CHANGELOG.md
has had it's identifiers simplified, retroactively. - Functionality from inside of
Editor.Build.BuildInfoProvider
has been split into more specific classes for different build pipeline / paths.- Classic Build Pipeline
BuildInfoBuildCustomizer
produces theBuildInfo
file during that pipeline execution.ScriptingDefinesBuildCustomizer
ensures theGDX
scripting define is set during builds (if enabled).
- Legacy Build Pipeline
BuildInfoBuildProcessor
is used to produce theBuildInfo
file during legacy builds, as well as resetting it in both Classic and Legacy builds.ScriptingDefinesBuildProcessor
ensures theGDX
scripting define is set during legacy builds.
- Classic Build Pipeline
- The
CHANGELOG.md
retroactively has had a Fixed section added.
"Cold Brew"
Bugfixes, feedback, and features, just what a growing library needs.
GDX
scripting define is automatically added to all build targets.GameObjectExtensions
andTransformExtensions
received aDestroyChildren()
function.DisableInInspectorAttribute
for all your disabled field needs.InspectorMessageBoxAttribute
for ease of messaging/reminders.
- Adopted using
dev
branch on GitHub for active development, pulling into version named branches for patching.
InspectorLabelAttribute
, Unity has nativeInspectorNameAttribute
in 2019.1+
- Restored reference to Unity.PerformanceTesting
"Workplace 2.0"
Extending functionality out with more code from the backlog, while still addressing some oddities in the existing codebase.
- A Unity serializable dictionary based type
Collections.Generic.SerializableDictionary
.- The
SerializableDictionaryCustomPropertyDrawer
requires Unity 2020.1 or newer; while theSerializableDictionary
will still work without it, just without a prettyPropertyDrawer
.
- The
Vector3Extensions.DistanceToRay()
- A way to get key positions
CapsuleCollider.OutSphereCenters()
from aCapsuleCollider
. - Improved on
StringExtensions
:- Optimized test
IsBooleanValue()
. - Optimized test
IsBooleanPositiveValue()
. - Optimized test
IsIntegerValue()
- Optimized test
IsNumericalValue()
. - Exposed ASCII markers.
- Optimized test
NavMeshPathExtensions
to help with working with AI/navigation.TransformExtensions
- A depth-limited
GetFirstComponentInChildrenComplex()
method. - A quick
GetActiveChildCount()
reporting only on active child transforms.
- A depth-limited
- Automated culture setting on main thread when an unknown system language is found, protecting against specific calender situations.
LICENSE.meta
has returned to the package to stop compile warnings, we will just have to deal with GitHub not being able to figure out the license model automatically.
- Added language to
README.md
and documentation regarding associations to Unity. - Optimized
GDXConfig
loading at runtime. - Wrap
InspectorLabelAttribute
inUNITY_EDITOR
define requirement. - Consolidated entirety of
Editor.Settings
related classes into private classes inside of itself. - Moved
Editor.InspectorLabelPropertyDrawer
toEditor.PropertyDrawers.InspectorLabelPropertyDrawer
- Centralized
Strings
, moving ownership of data to the actual primary consumer. - Reference to unit test locations from files.
- Corrected Jobs package being included in Unity's CoreModule.
"Cookie Monster"
A whole lot of work went into trying to solidify what documentation is going to look like, as well as get foundational work in place to make sure anyone can contribute.
- Moved all static
GUIContent
from settings window into newSettingsContent
. - Moved all static layout functionality from
SettingsStyles
intoSettingsLayout
. Developer.Conditionals
contains constant status indicators of packages used byGDX
. Useful for determine if a certain feature set is available.- Properly set define GDX_PLATFORMS based on the
com.unity.platforms
package. - The
Localization.GetHumanReadableFileSize()
method to create more readable file size outputs. - More functionality in
Vector2Extensions
NearestIndex()
to find the closest position in an array.Slope()
- Additional functionality in
Vector3Extensions
HorizontalDistance()
to get a horizontal distance ignoring vertically.NearestIndex()
to find the closest position in an array of positions.
StringExtensions
'sTryParseVector2()
andTryParseVector3()
will rehydrate0,0
and0,0,0
formatted strings.- A complex version of
GetComponentInChildren()
, calledGetFirstComponentInChildrenComplex()
is available inGameObjectExtensions
andMonoBehaviourExtensions
, allowing for recursion limits. BoxColliderExtensions.ContainsPosition()
as a quick method to determine if a world space position is inside of aBoxCollider
.CapsuleColliderExtensions.Direction()
to get aVector3
based direction for aCapsuleCollider
.RigidbodyExtensions.MomentOfInertia()
for an inertia calculation based on axis.Mathematics.Smooth
addsExponential()
smoothing functionality.Mathematics.Rotate
addsTowards()
calculations.
- Generated documentation now includes
private
andinternal
classes. - Lowered feature requirement of
com.unity.jobs
to0.2.7
, andcom.unity.burst
to1.0.0
. GDX.Developer
assembly collapsed back into mainGDX
assembly.- Modified settings framework to be in a single
GDX
category in the Project Settings window, with collapsable sections contained within. StringExtensions.GetLowerCaseHashCode()
renamed toStringExtensions.GetStableLowerCaseHashCode()
.StringExtensions.GetUpperCaseHashCode()
renamed toStringExtensions.GetStableUpperCaseHashCode()
.ByteExtensions.GetValueHashCode()
renamed toByteExtensions.GetStableHashCode()
.- Better package installation type detection and handling of upgrades.
- This has cut down the possibilities of automatic upgrades, however efforts will continue to expand on this functionality.
"Old Is New"
A DocFX generated site is now being stood up by our internal CI when a new commit is made to the
main
branch.
- A proper Getting Started section to the manual
- Fixes to compilation of code requiring C# 8 using
UNITY_2020_2_OR_NEWER
preprocessor inIO.Compression.TarFile
,StringExtensions
andEditor.UpdateProvider
.
- Removed the Wiki links and entries on GitHub, favoring discussions and content additions to the documentation.
"Cisco's Birthday"
A bit of refactoring around
BuildInfo
to make it a little easier to work with and some small additions to functionality by request.
- Separation of checking folders and files path structure, new
Platform.EnsureFileFolderHiearchyExists()
just for files. - The ability (by default) to encompass the
BuildInfo
output folder in an assembly definition. - An ability from Project Settings to output a default
BuildInfo
file. AssemblyInfo
to each assembly to support internal access during unit testing.- Applied
MethodImplOptions.AggressiveInlining
to many methods. - A bunch of split related functionality to
StringExtensions
.GetAfterFirst()
GetAfterLast()
GetBeforeFirst()
GetBeforeLast()
Vector2Extensions
andVector3Extensions
with associated unit testing.Approximately()
Midpoint()
StringExtensions
SplitCamelCase()
to help with formatting of internal data.Encrypt()
andDecrypt()
for all your string hiding needs.
- All classes/structs with unit testing will reference the class in a comments
ListExtensions
renamed toIListExtensions
(as well as its unit test class)- Removed feature highlight section from
README.md
. - Dropped in some unsafe attributes to
StringExtensions.HasLowerCase()
andStringExtensions.HasUpperCase()
inStringExtensions
. - Reorganized Project Settings sections to be alphabetically sorted.
Platform.EnsureFolderHierarchyExists()
's argument to be labeledfolderPath
to provide further clarity of the functional intent.- Combined
Developer.Build.BuildInfoGenerator
intoDeveloper.Build.BuildInfoProvider
. - Renamed
Editor.Build.BuildInfoGeneratorTests
toEditor.Build.BuildInfoProviderTests
- Fixed issue with output folder structure was not present for
BuildInfo
generation. - Renamed
Editor.SettingsGUILayout
toEditor.SettingsStyles
, while exposing more internals for reuse.
"EditMode Enabled"
Fixes for author-time code accessing runtime only parts.
- Added more
EditMode
unit test coverage.Developer.Build.BuildInfoGeneratorTests
Developer.CommandLineParserTests
- Renamed
Editor.Config
toEditor.ConfigProvider
- Fixed a bug where author-time calls to
GDXConfig.Get()
would return a null as it is meant for runtime only, they will now route through an editor safe path. - Moved all Tests to follow the test runner naming
EditMode
for editor runnable unit tests, namespaces included inside the assembly have been stripped down as well. - Exposed
ProcessArguments()
inDeveloper.CommandLineParser
to allow for manual arguments to be added.
"Let Us Build"
A minor problem came to light after pushing the button.
Developer.Build.BuildInfoGenerator
will now forcibly tell theDeveloper.CommandLineParser
to do its thing prior to filling out the file.
"Breaking Bad"
We are breaking some rules! This should have been a major release as we have altered method names to be consistent across the API.
GDX
assembly documentation contains remarks where a function or class requires the presence of Unity's CoreModule to function correctly.GDXConfig
scriptable object self creates to store persistent project-wide configurations for both runtime and author-time, editable through Project Settings.InspectorLabelAttribute
(and supportingEditor.InspectorLabelPropertyDrawer
) to facilitate a quick way of replacing a labels content in the inspector.IO.Compression.TarFile
support for decompressing tarballs.SemanticVersion
struct for assistance with versioning.StringExtensions
gainedHasLowerCase()
andHasUpperCase()
checks.Strings.Null
is a constant null value stringEditor.Config
static utility class to help withGDXConfig
at author-time.Editor.Settings
to drive specificGDX
assembly settings to show up in the Project Settings window.Editor.SettingsGUILayout
to assist with creating a consistent feel forGDX
settings.Editor.GDXConfigEditor
enforces that a selectedGDXConfig
does not allow for inspector changes.Editor.UpdateProvider
,Editor.PackageProvider
to facilitate updating of GDX package from different installation sources.Editor.VersionControl
static utility class to help with VCS operations.- Unit test coverage for extension classes.
ArrayExtensionsTests
ListExtensionsTests
SimpleListExtensionsTests
- Additional coverage was added to
StringExtensionsTests
to coverHasUpperCase()
andHasLowerCase()
methods. GDX.Developer
a separate assembly with more developer specific functionality.Developer.CommandLineParser
to provide a simple, yet configurable argument parser.Developer.Editor.Build.BuildInfoProvider
to facilitate automated BuildInfo generation across different pipelines.Developer.Editor.Build.BuildInfoGenerator
to generate content for the BuildInfo file.Developer.Editor.Settings
to drive specificGDX.Developer
assembly settings to show up in the Project Settings window.
- Updated the
README.md
header with logo and badges. - Added release names to
CHANGELOG.md
as well as removed namespace sub-lists, settling on having full names in description instead. - Altered arrangement of
LICENSE
with the hopes of appeasing the GitHub overlords of license type detection. ArrayExtensions
to be more specific- Corrected documentation of
Clear()
- Class based operations
FirstIndexOfItem()
andLastIndexOfItem()
- Struct based operations
FirstIndexOfValue()
andLastIndexOfValue()
- Correctly moved into GDX namespace.
- Corrected documentation of
ByteExtensions
to be more specific- Renamed hashing method to
GetValueHashCode()
- Renamed hashing method to
ListExtensions
to be more specific.- Class based operations
AddUniqueItem()
,ContainsItem()
,RemoveItems()
,RemoveFirstItem()
andRemoveLastItem()
.. - Struct based operations
AddUniqueValue()
,ContainsValue()
,RemoveValues()
,RemoveFirstValue()
andRemoveLastValue()
.
- Class based operations
SimpleListExtensions
to be more specific.- Class based operations
AddUncheckedUniqueItem()
,AddWithExpandCheckUniqueItem()
,ContainsItem()
,RemoveItems()
,RemoveFirstItem()
andRemoveLastItem()
. - Struct based operations
AddUncheckedUniqueValue()
,AddWithExpandCheckUniqueValue()
,ContainsValue()
,RemoveValues()
,RemoveFirstValue()
andRemoveLastValue()
.
- Class based operations
- Moved
Collections.Byte2
toMathematics.Byte2
as it made more sense to alongside other similar types inUnity.Mathematics
.
- Removed unused static StringBuilder from
Strings
.
"The Beginning"
Initial release containing only the GDX core library.
- Numerous static extension based functionality classes.
AddressablesExtensions
ArrayExtensions
ByteExtensions
ListExtensions
SimpleListExtensions
StringExtensions
- Numerous static utility classes.
Display
Localization
Memory
Platform
Strings
- Bit array structures.
Collections.BitArray8
Collections.BitArray16
Collections.BitArray32
Collections.BitArray64
Collections.BitArray128
Collections.BitArray256
Collections.BitArray512
- Byte vector
Collections.Byte2
. - Sparse index pool structures
Collections.SparseSet
andCollections.NativeSparseSet
Collections.FreeList
- Revolving buffer
Collections.Generic.CircularBuffer
. List
-like structureCollections.Generic.SimpleList
.- A few
NativeArray
based structures.Collections.Generic.NativeArray2D
Collections.Generic.NativeSimpleList
Collections.Generic.NativeSimpleQueue
Collections.Generic.NativeUniformArray3D
.
- Numerous
int32
buffer operation jobs.Jobs.ParallelFor.IntegerBufferCopyJob
Jobs.ParallelFor.IntegerBufferFillJob
Jobs.ParallelFor.IntegerBufferSwapJob
- Deterministic random
Mathematics.Random.MersenneTwister
.