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.
- Added ability to load and create java ".properties" style configs
- Added additional logging for code-generation when loading configs
- Fixed bug where the Unity project path could not include spaces when generating config contents
- Fixed bug where the Unity project path could not include spaces when generating code
- Fixed build compilation failure with scriptable factory class and odin integration
- Updated build pipeline to include dependency updates
- Updated factory output classes to include helper methods
- Fixed bug with factory TryGet method
- A new factory option is available via new types
ISymbolObject
andGenerateSymbolFactoryAttribute
.ISymbolObject
represents a uniquely identified object by way of astring
Symbol
field. Any types implementing this interface that are also decorated withGenerateSymbolFactoryAttribute
will have factory types generated for them to enable retrieving the implementing type by it'sSymbol
value.
- All factory classes and assets generated from
ScriptableFactoryProvider
now haveFactory
suffixed to the end of the name to make it clearer what the type is supposed to reflect. They now also have optional Odin markup that will enhance their utility, usability, and readability; this is compiled out when Odin is not available (by way of the scriptable define Odin adds to the project settings).
These issues should help resolve any operating system path issues that caused either plugins to fail to be discovered or files to be written incorrectly.
- Modified
WriteToDiskPostProcessor
so that it will replace any inapropriate path characters per-platform with the correct ones. - Modified
GenerateOptions
andConfigOptions
for the Genesis.CLI so that the case-sensitive "plugins" folder name is used and removed any platform-specific path characters. - Added
OperatingSystemTools
helper methods for determining current operating system
- Modified
GetAttributes
andHasAttributes
extension methods with optional bool parametercanInherit
so that a user can check to see if aITypeSymbol
is decorated with an matching attribute or base type name. - Adjusted interface for
ICachedNamedTypeSymbol
forGetAttributes
andHasAttributes
to include new optional parametercanInherit
.
- Renamed
NamedTypeSymbolInfo
toCachedNamedTypeSymbol
and modified access to be internal. This is now exposed to users as theICachedNamedTypeSymbol
interface so that it can be easily changed in the future without breaking user-code.
- Fixed a duplicate header on the GenesisPreferences UI.
- Modified internal parallelization for Roslyn Project parsing to use async correctly.
- Modified plugin loading so that by default plugin assemblies that are not in-sync with the nuget package assemblies in use by Genesis.CLI will issue a warning and:
- If on the same major and minor version will still be loaded.
- If on an older major or minor version will not be loaded. These can still be force-loaded if a user passed the
load-unsafe
argument.
- The
CHANGELOG.MD
file containing release notes is now included with the Unity package. - Created Unity flow for third-party developers to easily expose their plugins for other users and easily install or update them in their Genesis.CLI configuration.
- Added new Genesis.CLI argument for
load-unsafe
to force load any out-of-date plugins, if any.
- Added additional helper methods and caching to NamedTypeSymbolInfo. All members are now lazily-loaded rather than initialized in constructor.
- Modified AutoUpdate functionality so that the zip extraction only overwrites content from the zip file (does not disturb other existing custom plugins for example).
- Added new overload of
AssembliesConfig.FilterTypeSymbols
method that accepts a collection ofNamedTypeSymbolInfo
.
- Fixed bug in
ITypeSymbol.GetArrayElementType
where the element type attempted to be returned would occasionally result in a cast exception from being cast to aINamedTypeSymbol
when the return type is aITypeSymbol
.
- Created NamedTypeSymbolInfo as a wrapper for
INamedTypeSymbol
that caches commonly used member returns from the symbol. It's cached fields and helper methods can be used over directly accessingINamedTypeSymbol
to improve CPU perf. - Added auto-update detection for when a Genesis.CLI installation is out-of-date when compared to the Genesis package version.
- Modified MemoryCache to cache a collection of
NamedTypeSymbolInfo
instead ofINamedTypeSymbol
. Adjusted usage in existing plugins. - Replaced menu item to select
Genesis.CLI.zip
file with updating existing installation, if present. - Parallelized several loops for CPU perf improvement.
This template should be used for any new releases to document any changes.
For new features.
For changes in existing functionality.
For soon-to-be removed features.
for now removed features.
For any bug fixes.
In case of vulnerabilities.