Weaver v6.0

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:

  1. Back up your project (preferably using a version control system like Git).
  2. Make sure you have no compile errors in the Console.
  3. Move the WeaverSettings file (Assets/Plugins/Weaver/Weaver Settings by default) out of the Weaver folder.
  4. Delete the main Weaver folder (located at Assets/Plugins/Weaver by default).
    • Ignore any compile errors that caused.
  5. 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.
  6. 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.
  7. Find m_Script: {fileID: 1085551216, guid: 69d5ba067c9b0e749afb18603c64a4a6, type: 3} near the top of both files (around line 12).
  8. 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.
  9. Save the new file and close the text editor.
  10. Return to Unity and press Ctrl + S (or use File/Save Project) to cause Weaver to regenerate the procedural scripts with the old settngs.
  11. 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.
  12. 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 in Weaver.Editor.
    • Most of the old Utils class has been removed and the rest is now in WeaverUtilities.
  • Renamed Reflection to ReflectionUtilities.
  • Replaced ObjectPool.AllocateItems with InactiveCount.
  • 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 to Basic, Full, and Global.
  • 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 a ScriptableObject with serialized fields for all the textures so only one reference needs to be injected.
  • Split all procedural constants into XConstants and XScriptBuilder 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 with ProceduralAssetAttribute.AutoGenerateOnSave so that the class containing the asset doesn't need to inherit from SimpleScriptBuilder.
  • 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 the Layers 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+.