Releases: PassivePicasso/ThunderKit
5.1.0
5.1.0
- Add Regular Expressions support to Addressable Browser
- Improve some styling
5.0.8
Fix issue with package manager not rendering correctly
5.0.7
- Fix for StageAssetBundles causing addressables to become unloaded
5.0.6
because people deserve rights
5.0.5
Fix ThunderstorePackageInstaller getting stuck in a loop when its target package is already installed
5.0.4
Note: this is technically a breaking change, and really warrants moving to 6.0.0, but I'm not going to update the project to version 6.0.0, because I'm influenced by a foolish desire to not jump into high numbers
Update OptionalExectors.Execute to return a bool indicating whether or not the executor has completed.
This was necessary to ensure stable imports so Executors can spread their actions out over multiple frames as well as stall until the environment state is ready.
5.0.3
Fix missing semi-colon in MarkdownContextualMenuManipulator for Unity 2018
5.0.2
Fix AddressableGraphicsImport failing to load the AddressableGraphicsSettings due to a timing issue with compilation.
Solution ensures that compilation and updating is finished before executing the next step in the import process.
Additionally setting the TK_ADDRESSABLE scripting define is not conducted synchronously
5.0.1
5.0.1
- Fix compatibility issue with Unity 2019+
5.0.0
5.0.0
A Note about Installing ThunderKit
ThunderKit installation directions have generally had users install ThunderKit using it's master branch, which is provided with the url
https://github.com/PassivePicasso/ThunderKit.git
This was a poor precedent to set and can lead to unexpected upgrades for users. Going forward it is recommended to install ThunderKit using a Tagged release.
For Example installing ThunderKit 5.0.0 can be done using the following url:
https://github.com/PassivePicasso/ThunderKit.git#5.0.0
When a project needs to be migrated to a different version of ThunderKit the ProjectRoot/Packages/manifest.json can be edited to change the value of the url used to install ThunderKit. After returning to Unity the Unity Package Manager will detect the change and update the ThunderKit installation to the correct version.
Import Rework and ImportExtensions
The process for importing games has been completely reworked into a modular extensible system.
Now every default import step can be enabled or disabled allowing for the implementation of custom import processes and importers designed for different environments.
ThunderKit now loads and creates concrete types derived from ImportExtension out of assemblies decorated with the ImportExtensionsAttribute and adds them to the new ImportConfiguration ThunderKitSetting.
Using these features customized import steps can be developed for games, minimizing the time starting development on new projects.
Assembly Import Changes
The Assembly Import process has been improved with the ability to use multiple different identity algorithms when producing assembly meta files for unity. These identities are how Unity identifies the assembly to load MonoBehavior and ScriptableObject Types from.
There are currently three algorithms available for producings the identities:
- Original - This is the algorithm ThunderKit has used to since it was released.
- Stabilized - This is the same as Original, except it ensures that UTF8 encoding is used to generate and write the GUID.
- AssetRipper Compatible = This is the algorithm used by AssetRippers new Assembly Export mode and provides the ability to interoperate with AssetRipper rips and ThunderKit projects. This would allow you to copy a prefab from a rip into a mod project for example and have all the scripts be correctly loaded.
Pipeline Quick Access Toolbar
A Pipeline Toolbar has been added to the Unity Main toolbar allowing you to quickly select a pipeline and manifest to execute without having to search your Project.
To add Pipelines and Manifests to your toolbar as options, select the Pipeline or Manifest in your project and check the "Quick Access" checkbox in the header. This will allow you to click the appropriate selector in the toolbar and run it using the Execute button, or view the most recent log using the Log button.
Addressable Support
Importing
Support Addressables has been added to ThunderKit. With the new ImportAddressableCatalog ImportExtension you can import the catalog from a game using addressables, enabling you to load addressaable assets in the editor.
Edit and Runtime usage
This allows developers to setup simple tools to apply materials or instantiate prefabs in the editor for viewing. Scripts created to do this can be setup to work both in the editor or at runtime. See the Simply Address
repository for an implementation of such features.
Addressable Browser
The Addressable Browser provides an interface to search and explore a games Addressable Catalog. Using this browser you can locate the assets and their addresses so that you
can use a games assets in the editor and at runtime.
The Addressable Browser allows you to search for assets based upon their address, name, and type. Additional filters may come in the future.
Limitations
Editing Addressable Assets is limited to a code based approach and tooling to resolve this is outside of the scope of ThunderKit. Look projects like Simply Address that provide generic tools for working with addressables in a modding context.
Addressable assets can't be referenced like traditional Unity assets. This limits using addressable assets to a code based approach. However, generic tools like SimplyAddress are being and can be developed to improve the ease of use.
Documentation
Documentation has been updated to be extensible via the DocumentationRoot ScriptableObject. Creating a DocumentationRoot can be done via the Project Window Context menu under the
ThunderKit sub menu. A DocumentationRoot establishes a root documentation section in the ThunderKit documentation window with the same name.
Additionally, DocumentationRoot contains the Main Page member, which can be set to any Markdown file regardless of its location as the page displayed when the DocumentationRoot is selected.
Documentation is now easier to write and extend, no longer requiring the creation of UXML and USS files to setup simple documentation collections. See the ThunderKitDocumentation
for an example of a working documentation collection.
Documentation has been added and the layout of the existing documentation has been re-organized.
Tutorials is a new and growing collection of documents that will walk you through getting started with usaging and extending ThunderKit. Submission of markdown files to grow this collection of tutorials is very welcome and can be submitted on discord or through a pull request on github.
Binary Patcher BsDiff
The Binary Patcher BsDiff has been added to ThunderKit to enable import workflows that require modifications to game binaries for scenarios that need them such as editor compatibility.
The ApplyPatch and CreatePatch PipelineJobs have been created to enable Pipeline workflows that can utilize binary patching.
AssetsTools.NET
A modified version of AssetsTools.NET has been included to enable importing of project settings from games. This is provided via the ImportProjectSettings ImportExtension. Configure it on the Import Configuration ThunderKit Settings page.
Additionally, game version checking has also been enhanced using AssetsTools.NET
Community Contributions
Edit Source / Select Source
Documentation pages now have a context menu allowing the users to select the source markdown files or edit them in their preferred editor, configurable from ThunderKit Settings
Guid Stabilized links for Markdown
AssetLink and Documentation schemes for ThunderKit Markdown have been enhanced to allow referencing assets using their GUID. This feature enables documentation to remain stable even when moving files around inside the unity environment, or externally when the user takes care to move their associated meta file with them.
All Documenation has been updated to use the new GUID format for referencing project assets, this will help ensure that documentation links remain stable reducing maintenance cost in the future.
Cross Documentation Page Links
Documentation has been updated with links between documentation pages to improve ease of use.
- Thanks to nebby1999 for these features
FlowPipeline Whitelist / Blacklist
FlowPipelines have been updated with Whitelist / Blacklist system with automatic updating for old asset files. This affects the Copy, Zip, and Delete PipelineJobs which have the ability to exclude Manifests from their run. Now alternatively a whitelist can be provided which causes the job to only run on manifests in that list.
Users should not need to update their pipelines, but upgrading to ThunderKit 5 will make changes that are not backwards compatible to your pipeline assets.
- Thanks to KingEnderbrine for this feature
Fixes and improvements
General
- Fix error in FileUtil which produced incorrect FileIds for Script references to Assemblies
- Make minor improvements for enhancing cross platform editor compatibility
- Stop persisting PackageGroups and PackageVersions to disk to avoid runaway disk usage
- Fix a number of small memory leaks
- Add doc comments to code base (plenty more work to be done here)
- Create UXML and USS folders in ThunderKit root and move all UXML and USS too them, some template specific USS remains in the UXML folders next to their related UXML files
- Updated ThirdPartyNotices.md
Markdown
- Added JsonFrontMatter for Page Headers
- Json FrontMatter can be used to collect a limited set of values from a Markdown file. See the FrontMatter Struct for details.
- Generic Attributes - Apply USS/CSS Classes to Blocks of text in markdown
- Improvements to the markdown style have been made to bring it more in line with common markdown styling
- MarkdownElement now detects changes to source files and updates automatically
Import
- Fixed import process sometimes not completing requiring the user to change focus away from and back to the editor to complete.
PipelineLogs
- Add setting to enable the PipelineLog window to show automatically when a pipeline is executed.
- Automatically update PipelineLog window when visible and a pipeline is executed
- Updated PipelineLog window to show a button for entries with Log Context
ComposableObjects
- Fix an issue with the ComposableObjectEditor which caused it to be more computationally intensive than necessary
- Enance ComposableObjectEditor to allow it to render elemen...