Upgrade Guide
Weaver 6.0+ only supports Unity 2018.4+, meaning that it can now rely on Assembly Definitions instead of requiring pre-compiled assemblies. This makes development and debugging of Weaver much easier, but unfortunately Unity is unable to properly associate the old WeaverSettings
asset with the new script so you will need to perform the following procedure before upgrading if you want to keep your old settings:
- Back up your project (preferably using a version control system like Git).
- Make sure you have no compile errors in the Console.
- Move the
WeaverSettings
file (Assets/Plugins/Weaver/Weaver Settings by default) out of the Weaver folder. - Delete the main Weaver folder (located at Assets/Plugins/Weaver by default).
- Ignore any compile errors that caused.
- Import the new version of Weaver.
- That should log a message saying it created a new
WeaverSettings
file and there might still be some compile errors.
- That should log a message saying it created a new
- Use any text editor program (such as Notepad or Visual Studio) to open both
WeaverSettings
files:- The old one you moved in step #2.
- The new one created in Assets/Plugins/Weaver/Weaver Settings.
- Find
m_Script: {fileID: 1085551216, guid: 69d5ba067c9b0e749afb18603c64a4a6, type: 3}
near the top of both files (around line 12). - Copy the rest of the file after that line (do not copy that line) from the old file to replace the rest of the new file.
- Save the new file and close the text editor.
- Return to Unity and press Ctrl + S (or use File/Save Project) to cause Weaver to regenerate the procedural scripts with the old settngs.
- Most compile errors should now be gone. Any remaining errors are likely caused by changes to Weaver's API since the previous version so you will need to fix them individually.
- Delete the old
WeaverSettings
file.
If not for that massive change, this would only be a minor version update.
Changes
- Reorganised the assembly structure:
- Weaver Pro now has the source code directly in the Unity project instead of using pre-compiled DLLs. Its Weaver.Lite.DLLs are empty dummies to allow seamless upgrades from Weaver Lite.
- Weaver Lite now has everything in Weaver.Lite.DLL instead of using separate ones for Weaver and Kybernetik.Core.
- Removed the
Kybernetik
namespace and reorganised Utility classes. - Everything is now in the
Weaver
namespace, with Editor-Only types inWeaver.Editor
. - Most of the old
Utils
class has been removed and the rest is now inWeaverUtilities
.
- Renamed
Reflection
toReflectionUtilities
. - Replaced
ObjectPool.AllocateItems
withInactiveCount
. - Replaced the "Tags and Layers" and "Physics" buttons in the Layer Constants Panel with one for "Project Settings" since all settings are accessed through the same window in recent Unity versions.
- Added validation to detect if a custom Layer Mask has the same name as a layer if the default layer masks are being included.
- Added
CSharp.NameVerbosity.Nested
and renamed the other elements toBasic
,Full
, andGlobal
. - Removed
CustomInspector
. - Changed the Asset Injection system to store its type references using partial assembly names so that version number changes don't cause it to lose them.
- Changed
Icone
into aScriptableObject
with serialized fields for all the textures so only one reference needs to be injected. - Split all procedural constants into
XConstants
andXScriptBuilder
classes. - Procedural Assets can now find their generator method in a base class.
- Procedural Scripts are now always generated if they do not already exist.
- Replaced
SimpleScriptBuilder.AutoGenerate
withProceduralAssetAttribute.AutoGenerateOnSave
so that the class containing the asset doesn't need to inherit fromSimpleScriptBuilder
. - Removed the list of examples from the
WelcomePanel
to save space.
Fixes
- Fixed the layer names in the Layer Constants Panel to line up to their mask toggles.
- Fixed
CSharp.IsValidInMemberName
to correctly treat the pipe symbol "|
" as an invalid character. - Fixed
AutoGenerateOnSave.OnWillSaveAssets
to guard against asynchronous calls. - Fixed
Include Collision Matrix 3D
label in theLayers
panel (was showing 2D). - Fixed
CSharp.GetNameCS
to work properly for jagged multidimensional arrays and generic nested types. - Fixed
WeaverSettings.EnsureInstanceIsSaved
to ensure that it uses a unique asset path. - Fixed
WeaverUtilities.WeaverPluginsDirectory
to better handle modified folder layouts. - Fixed
AssetGeneratorWindow.RefreshSelection
to not throw a null exception when first upgrading a project to Unity 2020.1+.