Changelog
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.
[4.0.1] - 2024-01-01
Added
- A 
CommandPalette, (Developer)ConsoleandRuntimeConsolerequiring (Unity 2022.2+), example code utilizes the new InputSystem. - Numerous 
Watcheswhich provide easily visualization of static fields. - A simplified 
BuildConfigurationobject with inheritance. - Simplified ways to access identifiers for 
DataTableBaserows and columns. SceneExtensionsextensions to provide better awareness of loading.FilenameTimestampFormatas aToStringformat forDateTime.GDX.RuntimeContentto organize runtime resources for automatic build inclusion and loading.
Changed
TestRunnernow 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.
 
[4.0.0] - 2023-07-02
"Going Bold"
After almost a year of no public updates (the
devbranch was bustling), the release of4.0.0comes with significant changes and a continued effort to improve unit test coverage and discoverability. The package remains tested against2020.3and2021.3; however, we strongly recommend transitioning to2022.3or newer to unlock additional functionality.
Added
GDX.Experimentalnamespace 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 
DebugDrawcommands (Experimental). TaskDirectorto assist withTaskBasebased scheduling of the thread pool, configurable in GDX project preferences.EditorTaskDirectorSystemandTaskDirectorSystemto automatically tick theTaskDirectorin appropriate modes.- Boilerplate in 
PlayerLoopSystemExtensionsto make modifying the PlayerLoop much simpler. Compact()added toSimpleListutilizing a properly sized version of the backing array.FirstIndexOf()andLastIndexOf()methods added toArrayExtensionsconstrained toIEquatablefor easier string comparison.FirstIndexOf(),FirstIndexOfItem(),FirstIndexOfValue(),LastIndexOf(),LastIndexOfItem(),LastIndexOfValue()methods added toSimpleListExtensions.Contains()toSimpleListExtensionsconstrained toIEquatable.WaitForprogram flow helper.AssetDatabaseReferenceweak-reference objects with helpers.EditorPrefsCacheto cache editor preference accessing.StableDataTableimplementation of newDataTableBasewith full suite of supporting references*CellValue.- Spreadsheet-like editing experience for 
DataTableBaseinheriting objects (Unity 2022.2+) 
Changed
- 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.
 SimpleListManagedPoolevents renamed for consistency todestroyedItem,returnedItem,spawnedItem,tearingDown.- Explicit callout that 
SerializableDictionarydoes 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.
 
Fixed
StringKeyDictionaryandIntKeyDictionarycan 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.
Removed
Tracehas 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 
jobspackage. - Any usage of 
AssetDatabase.FindAssets() 
[3.0.1] - 2022-07-12
"3D Arrays"
A few additions with a bug fix that emerged.
Added
- New 
Array3DandNativeArray3Dflattened 3D arrays. 
Changed
BitArray8,BitArray16,BitArray32,BitArray64have been markedSerializable.
Fixed
IntKeyDictionary.Clear()now properly sets bucket values.
[3.0.0] - 2022-07-05
"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.
Added
- Dependencies on 
com.unity.mathematics,com.unity.burst,com.unity.jobsandcom.unity.collectionspackages. - 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 anUnsupportedRuntimeExceptionwhich is visible in documentation as well as IDE intelli-sense. - Support for 
com.unity.entitiesprogramming patterns. BuildVerificationReportstructure for quick validation of builds, including aTestBehaviour.StringKeyDictionaryto optimize one of the most common use cases for dictionaries.SegmentedStringto support string search patterns.OriginalValueAttributeto support a default value-like pattern.- Unity editor non-pro (light) theme.
 - Additional information around coding standards to documentation.
 UniformArray3Dcounter part toNativeUniformArray3D
Changed
- Properly formatted the 
CHANGELOG.mdthanks to a proper linter, as well as tried to unify nomenclature used to describe changes. - The 
GDXnamespace has been reorganized. - Conform naming conventions to Unity standard.
 GDXConfighas been simplified toConfig, with member variables being statically accessible.- Package's project settings were rebuilt to use 
UIElements instead ofIMGUIwith added searchability. Smooth::HalfLifeToSmoothingFactor()no longer defaults elapsed time toTime.deltaTime- The visual scripting module detects the package based installation available in 
Unity 2021and forward. If you wish to have support inUnity 2020.3via the Asset Store you will need to add a scripting define symbol ofGDX_VISUALSCRIPTINGto your project. - All internal 
Dictionary<string,value>have been replaced withStringKeyDictionary<value> BuildInfoProvidernow uses aTextGeneratorfor codegen.Platform::GetOutputFolder()supports being overridden via command-line argumentGDX_OUTPUT_FOLDER.- Internal members of 
SerializableDictionaryhave been renamed,FormerlySerializedAsattribute has been used to hopefully upgrade content. Localization::GetIETF()was renamed for clarity toLocalization::GetIETF_BCP47(), with further value definitions.- Optimized internals of 
CircularBufferremoving some garbage being made when usingToArray(). ListManagedPoolrebuilt asSimpleListManagedPoolfor allobjectbased pooling needs.- Flagged 
DisableInInspectorAttributePropertyDrawerto only use UIElements version withUNITY_2022_2_OR_NEWER. GenerateProjectFilesnow 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 
SemanticVersioninto theGDX.Developernamespace. - Moved 
TransientReferenceinto theGDX.Developernamespace. Byte2accessor throwsIndexOutOfRangeExceptionwhen usingENABLE_UNITY_COLLECTIONS_CHECKS.
Fixed
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().
Removed
Automation::GetTempFolder()in favour of usingPlatform::GetOutputFolder().Automation::GetTempFilePath()in favour of usingPlatform::GetUniqueOutputFilePath().NativeSimpleListin favour of builtin collectionUnsafeList.NativeSimpleQueuein favour of builtin collectionUnsafeQueue.GDXConfigInspectorno longer needed as the serialized config model has been replaced.- All "Requires UnityEngine.CoreModule.dll" remarks removed.
 
[2.0.3] - 2021-12-01
"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.
Added
- A 
RandomWrapperwas created to allow forSystem.Randomto be used with theIRandomProviderinterface. - 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.Color32CompareJobJobs.ParallelFor.Color32MatchJobJobs.ParallelFor.ColorCompareJobJobs.ParallelFor.ColorMatchJob
 
Changed
- Now using a 
NativeArray<uint>to store state in the 'WELL1024a', now requires the use ofDispose(). - Some 
Platformmethods behaved like extensions when they should not have been. 
Fixed
WELL1024aexclusive methods truly will exclude the values correctly.
[2.0.2] - 2021-11-03
"Told Ya"
Mistakes were made; fixes happened.
Added
- Infinitely sized 
CoalesceStreamavailable for dealing with large data streams. - A few (
Platform::EnsureFileWritable(),Platform::ForceDeleteFile(),Platform::IsFileWritable()) file permission operations have been added. 
Fixed
- The manifest for the package can be found again! Corrected path information to reflect new hierarchy.
 
[2.0.1] - 2021-11-02
"Feature Branches"
A lot of experimental work is being now done in feature branches; this should speed up iteration time on releases.
Added
Traceconfiguration matrix available in project settings.
Changed
- Internally used 
SettingsStyleshas been split intoSettingsStylesandSettingsLayoutOptionsaccordingly. - Moved everything up one folder layer in package to fit with package standards.
 
Fixed
- Optimized referencing of 
GDXConfigin 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.
 
[2.0.0] - 2021-05-09
"Fresh Paint"
Breaking changes and a new license (BSL-1.0); making GDX even easier to include in projects!
Added
- New FAQ section of the website, addressing some of the more frequently asked questions.
 WELL1024aimplementation to replace removedMersenneTwisterin GDX .IRandomProviderandRandomAdaptorto 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.TransientReferenceprovides a comparable non-garbage collection blocking reference type.Reportprovides some of the common logic used by the newly addedResourcesAuditandResourcesDiff. Think of this as an incredibly simple way to find resource memory leaks.
Changed
- File license headers, repository wide now reference the BSL-1.0 license.
 - Corrected minimum compatible version to 
2018.4inREADME.md - Added latest version 
2.0.0toSECURITY.md, sunsetting1.2.x. VisualScriptingCollectionAttribute,VisualScriptingExtensionAttribute,VisualScriptingTypeAttribute,VisualScriptingUtilityAttributehave been consolidated toVisualScriptingCompatible.NextDouble,NextSinglefunctionality onIRandomProvidersdo not default to extreme values.NativeSimpleListandNativeSimpleQueueare only available whencom.unity.collectionsis not present.- Altered API documentation to have a heirachial namespace index using custom tooling.
 
Removed
- Removed some supporting types and methods used by GDX's project settings from documentation.
 - Removed 
MersenneTwisterto allow for our new licensing model (functionally replaced withWELL1024aimplementation). 
[1.3.0] - 2021-04-06
"Visual Time"
An effort to make GDX more accessible to Visual Scripting.
Added
- 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 
GDXAPI for usage with Visual Scripting. - New array pooling type 
ArrayPool, with correspondingJaggedArrayWithCount. - Numerous collections gained 
Reverse()methods, and the newly addedArray2Dalso havingReverseRows()andReverseColumns(). 
Changed
- 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 
Getmethod fromGameObjectPoolto 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 
NativeArray2Dto index accessor to function likeArray2D. 
Fixed
- Force the Package Manager to resolve the package manifest during an update.
 - Occasional infinite loop importing 
GDXConfigwith a cache server. - Unsupported attributes for Unity 2018.
 
Removed
- Struct specific extension methods have been removed from 
IListExtensionsandSimpleListExtensions; explicitly to avoid obsfucating boxing types and hiding a problem. 
[1.2.7] - 2021-03-16
"Never Say Never"
Updates have been tested across different installation methods, a pooling system, and some fixes!
Added
- UPM and GitHub installation methods utilizing the
devbranch will have a "Force Update" action available to them in the Project Settings. PlatformExtensionsnow has aIsHeadless()method for determining if the application is running without a graphics device initialized; aka a headless server.EnumExtensionshas a fasterHasFlags()method for working with flags.PoolingSystemnow exists in theGDX.Collections.Poolingnamespace, including aGameObjectPoolsystem.Tracestatic now available to funnel allGDXbased logging through, with editor/build configurations available.
Changed
- Made 
SparseSets.NET Standard 2.0 compliant @godjammit 
Fixed
- Caught issue with 
initialCapcitycausing 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 
PackageProviderissues with Unity 2019. 
[1.2.6] - 2021-02-15
"UPM Updates"
Starting to frame up the ability to update package adds from GitHub.
Added
- Some functionality around being able to update a UPM based package, by removing the entry in the lockfile, a package will update.
 
Fixed
NavMeshPathExtensionsno longer breaks compiling withoutcom.unity.mathematics.
[1.2.5] - 2021-02-12
"Hello World"
Enough critical mass has been hit with functionality that with this release we will start to look at publicizing the package more.
Added
- Environment section of GDX project settings allows for an initial toggling of 
GDXscripting define symbol enforcement. TransformExtensionsgained aGetScenePath()to create an easy way to identify an object in logs.GameObjectExtensionsextended 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 
 
Changed
- The 
CHANGELOG.mdhas had it's identifiers simplified, retroactively. - Functionality from inside of 
Editor.Build.BuildInfoProviderhas been split into more specific classes for different build pipeline / paths.- Classic Build Pipeline
BuildInfoBuildCustomizerproduces theBuildInfofile during that pipeline execution.ScriptingDefinesBuildCustomizerensures theGDXscripting define is set during builds (if enabled).
 - Legacy Build Pipeline
BuildInfoBuildProcessoris used to produce theBuildInfofile during legacy builds, as well as resetting it in both Classic and Legacy builds.ScriptingDefinesBuildProcessorensures theGDXscripting define is set during legacy builds.
 
 - Classic Build Pipeline
 
Fixed
- The 
CHANGELOG.mdretroactively has had a Fixed section added. 
[1.2.4] - 2021-02-11
"Cold Brew"
Bugfixes, feedback, and features, just what a growing library needs.
Added
GDXscripting define is automatically added to all build targets.GameObjectExtensionsandTransformExtensionsreceived aDestroyChildren()function.DisableInInspectorAttributefor all your disabled field needs.InspectorMessageBoxAttributefor ease of messaging/reminders.
Changed
- Adopted using 
devbranch on GitHub for active development, pulling into version named branches for patching. 
Removed
InspectorLabelAttribute, Unity has nativeInspectorNameAttributein 2019.1+
Fixed
- Restored reference to Unity.PerformanceTesting
 
[1.2.3] - 2021-02-09
"Workplace 2.0"
Extending functionality out with more code from the backlog, while still addressing some oddities in the existing codebase.
Added
- A Unity serializable dictionary based type 
Collections.Generic.SerializableDictionary.- The 
SerializableDictionaryCustomPropertyDrawerrequires Unity 2020.1 or newer; while theSerializableDictionarywill 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 
 NavMeshPathExtensionsto 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.metahas 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.
Changed
- Added language to 
README.mdand documentation regarding associations to Unity. - Optimized 
GDXConfigloading at runtime. - Wrap 
InspectorLabelAttributeinUNITY_EDITORdefine requirement. - Consolidated entirety of 
Editor.Settingsrelated classes into private classes inside of itself. - Moved 
Editor.InspectorLabelPropertyDrawertoEditor.PropertyDrawers.InspectorLabelPropertyDrawer 
Removed
- 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.
 
[1.2.2] - 2021-02-1
"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.
Added
- Moved all static 
GUIContentfrom settings window into newSettingsContent. - Moved all static layout functionality from 
SettingsStylesintoSettingsLayout. Developer.Conditionalscontains 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.platformspackage. - The
Localization.GetHumanReadableFileSize()method to create more readable file size outputs. - More functionality in 
Vector2ExtensionsNearestIndex()to find the closest position in an array.Slope()
 - Additional functionality in 
Vector3ExtensionsHorizontalDistance()to get a horizontal distance ignoring vertically.NearestIndex()to find the closest position in an array of positions.
 StringExtensions'sTryParseVector2()andTryParseVector3()will rehydrate0,0and0,0,0formatted strings.- A complex version of 
GetComponentInChildren(), calledGetFirstComponentInChildrenComplex()is available inGameObjectExtensionsandMonoBehaviourExtensions, 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 aVector3based direction for aCapsuleCollider.RigidbodyExtensions.MomentOfInertia()for an inertia calculation based on axis.Mathematics.SmoothaddsExponential()smoothing functionality.Mathematics.RotateaddsTowards()calculations.
Changed
- Generated documentation now includes 
privateandinternalclasses. - Lowered feature requirement of 
com.unity.jobsto0.2.7, andcom.unity.burstto1.0.0. GDX.Developerassembly collapsed back into mainGDXassembly.- Modified settings framework to be in a single 
GDXcategory 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.
 
 
[1.2.1] - 2021-01-24
"Old Is New"
A DocFX generated site is now being stood up by our internal CI when a new commit is made to the
mainbranch.
Added
- A proper Getting Started section to the manual
 
Changed
- Fixes to compilation of code requiring C# 8 using 
UNITY_2020_2_OR_NEWERpreprocessor inIO.Compression.TarFile,StringExtensionsandEditor.UpdateProvider. 
Removed
- Removed the Wiki links and entries on GitHub, favoring discussions and content additions to the documentation.
 
[1.2.0] - 2021-01-20
"Cisco's Birthday"
A bit of refactoring around
BuildInfoto make it a little easier to work with and some small additions to functionality by request.
Added
- Separation of checking folders and files path structure, new 
Platform.EnsureFileFolderHiearchyExists()just for files. - The ability (by default) to encompass the 
BuildInfooutput folder in an assembly definition. - An ability from Project Settings to output a default 
BuildInfofile. AssemblyInfoto each assembly to support internal access during unit testing.- Applied 
MethodImplOptions.AggressiveInliningto many methods. - A bunch of split related functionality to 
StringExtensions.GetAfterFirst()GetAfterLast()GetBeforeFirst()GetBeforeLast()
 Vector2ExtensionsandVector3Extensionswith associated unit testing.Approximately()Midpoint()
StringExtensionsSplitCamelCase()to help with formatting of internal data.Encrypt()andDecrypt()for all your string hiding needs.
Changed
- All classes/structs with unit testing will reference the class in a comments
 ListExtensionsrenamed 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 labeledfolderPathto provide further clarity of the functional intent.- Combined 
Developer.Build.BuildInfoGeneratorintoDeveloper.Build.BuildInfoProvider. - Renamed 
Editor.Build.BuildInfoGeneratorTeststoEditor.Build.BuildInfoProviderTests - Fixed issue with output folder structure was not present for 
BuildInfogeneration. - Renamed 
Editor.SettingsGUILayouttoEditor.SettingsStyles, while exposing more internals for reuse. 
[1.1.2] - 2021-01-18
"EditMode Enabled"
Fixes for author-time code accessing runtime only parts.
Added
- Added more 
EditModeunit test coverage.Developer.Build.BuildInfoGeneratorTestsDeveloper.CommandLineParserTests
 
Changed
- Renamed 
Editor.ConfigtoEditor.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 
EditModefor editor runnable unit tests, namespaces included inside the assembly have been stripped down as well. - Exposed 
ProcessArguments()inDeveloper.CommandLineParserto allow for manual arguments to be added. 
[1.1.1] - 2021-01-17
"Let Us Build"
A minor problem came to light after pushing the button.
Changed
Developer.Build.BuildInfoGeneratorwill now forcibly tell theDeveloper.CommandLineParserto do its thing prior to filling out the file.
[1.1.0] - 2021-01-17
"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.
Added
GDXassembly documentation contains remarks where a function or class requires the presence of Unity's CoreModule to function correctly.GDXConfigscriptable 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.TarFilesupport for decompressing tarballs.SemanticVersionstruct for assistance with versioning.StringExtensionsgainedHasLowerCase()andHasUpperCase()checks.Strings.Nullis a constant null value stringEditor.Configstatic utility class to help withGDXConfigat author-time.Editor.Settingsto drive specificGDXassembly settings to show up in the Project Settings window.Editor.SettingsGUILayoutto assist with creating a consistent feel forGDXsettings.Editor.GDXConfigEditorenforces that a selectedGDXConfigdoes not allow for inspector changes.Editor.UpdateProvider,Editor.PackageProviderto facilitate updating of GDX package from different installation sources.Editor.VersionControlstatic utility class to help with VCS operations.- Unit test coverage for extension classes.
ArrayExtensionsTestsListExtensionsTestsSimpleListExtensionsTests
 - Additional coverage was added to 
StringExtensionsTeststo coverHasUpperCase()andHasLowerCase()methods. GDX.Developera separate assembly with more developer specific functionality.Developer.CommandLineParserto provide a simple, yet configurable argument parser.Developer.Editor.Build.BuildInfoProviderto facilitate automated BuildInfo generation across different pipelines.Developer.Editor.Build.BuildInfoGeneratorto generate content for the BuildInfo file.Developer.Editor.Settingsto drive specificGDX.Developerassembly settings to show up in the Project Settings window.
Changed
- Updated the 
README.mdheader with logo and badges. - Added release names to 
CHANGELOG.mdas well as removed namespace sub-lists, settling on having full names in description instead. - Altered arrangement of 
LICENSEwith the hopes of appeasing the GitHub overlords of license type detection. ArrayExtensionsto 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 
 ByteExtensionsto be more specific- Renamed hashing method to 
GetValueHashCode() 
- Renamed hashing method to 
 ListExtensionsto be more specific.- Class based operations 
AddUniqueItem(),ContainsItem(),RemoveItems(),RemoveFirstItem()andRemoveLastItem().. - Struct based operations 
AddUniqueValue(),ContainsValue(),RemoveValues(),RemoveFirstValue()andRemoveLastValue(). 
- Class based operations 
 SimpleListExtensionsto 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.Byte2toMathematics.Byte2as it made more sense to alongside other similar types inUnity.Mathematics. 
Removed
- Removed unused static StringBuilder from 
Strings. 
[1.0.0] - 2021-01-03
"The Beginning"
Initial release containing only the GDX core library.
Added
- Numerous static extension based functionality classes.
AddressablesExtensionsArrayExtensionsByteExtensionsListExtensionsSimpleListExtensionsStringExtensions
 - Numerous static utility classes.
DisplayLocalizationMemoryPlatformStrings
 - Bit array structures.
Collections.BitArray8Collections.BitArray16Collections.BitArray32Collections.BitArray64Collections.BitArray128Collections.BitArray256Collections.BitArray512
 - Byte vector 
Collections.Byte2. - Sparse index pool structures 
Collections.SparseSetandCollections.NativeSparseSet Collections.FreeList- Revolving buffer 
Collections.Generic.CircularBuffer. List-like structureCollections.Generic.SimpleList.- A few 
NativeArraybased structures.Collections.Generic.NativeArray2DCollections.Generic.NativeSimpleListCollections.Generic.NativeSimpleQueueCollections.Generic.NativeUniformArray3D.
 - Numerous 
int32buffer operation jobs.Jobs.ParallelFor.IntegerBufferCopyJobJobs.ParallelFor.IntegerBufferFillJobJobs.ParallelFor.IntegerBufferSwapJob
 - Deterministic random 
Mathematics.Random.MersenneTwister.