From e890b3c7a66e631df0a4650ad95e0e97d174745a Mon Sep 17 00:00:00 2001 From: Unity Technologies <@unity> Date: Tue, 1 Aug 2023 00:00:00 +0000 Subject: [PATCH] com.unity.visualscripting@1.9.0 ## [1.9.0] - 2023-08-01 ### Fixed - Fixed code for custom nodes being stripped in AOT builds when Managed Stripping Level is set to High [UVSB-2439](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2437) - Fixed OnInputSystemEvent doesn't trigger until Input Vector variates from 0.5 [UVSB-2435](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2435) - Fixed assembly disappearing from Node Library after domain reload. [UVSB-2459](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2459) - Fixed custom inspectors not being generated [UVSB-2466](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2466) - Fixed error when trying to load exceptions for TryCatch node dropdown [2463] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2463) - Fixed infinite amount of GameObjects created in Prefab mode when performing a null check of a scene variable in editor with an "OnDrawGizmos" event [UVSB-2453](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2453) - Removed corrupt mdb which caused the ScriptUpdater to fail [UVSB-2360](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2360) - Fixed Gradient graph variables resetting when entering PlayMode [UVSB-2334](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2334) - Fixed Memory leak after destroying object [UVSB-2427] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2427) --- CHANGELOG.md | 24 +- Documentation~/TableOfContents.md | 1 + Documentation~/images/vs-flagged-assembly.png | Bin 0 -> 206664 bytes Documentation~/vs-editor-script-issues.md | 38 ++ .../AssemblyOptionsSettings.cs | 11 +- .../LinkerPropertyProviderSettings.cs | 70 ++++ .../LinkerPropertyProviderSettings.cs.meta | 11 + .../ProjectSettingsProviderView.cs | 6 + .../Debugging/GraphDebugDataProvider.cs | 6 + .../Unity.VisualScripting.IonicZip.dll.mdb | Bin 125357 -> 0 bytes .../Inspection/MetadataListAdaptor.cs | 36 ++ .../Inspection/Special/ListInspector.cs | 27 +- .../Platforms/AotPreBuilder.cs | 49 --- .../Plugin/BoltCoreConfiguration.cs | 22 +- .../Reflection/Codebase.cs | 36 +- .../SerializedPropertyProviderProvider.cs | 2 +- .../SerializedPropertyUtility.cs | 8 +- .../Unity.VisualScripting.Core.Editor.asmdef | 10 +- .../Utilities/AssetUtility.cs | 1 + .../Utilities/DefineUtility.cs | 30 +- Editor/VisualScripting.Flow/Linker.meta | 8 + .../Linker/LinkerCreator.cs | 344 ++++++++++++++++++ .../Linker/LinkerCreator.cs.meta | 11 + .../Cloning/Cloners/GradientCloner.cs | 24 ++ .../Cloning/Cloners/GradientCloner.cs.meta | 3 + .../VisualScripting.Core/Cloning/Cloning.cs | 3 + .../Events/EventMachine.cs | 2 + .../Graphs/GraphPointer.cs | 1 + .../Graphs/GraphReference.cs | 26 ++ .../VisualScripting.Core/Graphs/GraphStack.cs | 5 + .../Listeners/IGraphEventListener.cs | 12 +- .../VisualScripting.Core/Machines/Machine.cs | 6 +- .../Reflection/TypeFilter.cs | 2 +- .../Serialization/SerializationData.cs | 6 + .../Unity/LudiqBehaviour.cs | 5 +- .../Unity/LudiqScriptableObject.cs | 10 +- .../Unity/SceneSingleton.cs | 28 +- .../VisualScripting.Core/Unity/Singleton.cs | 11 +- Runtime/VisualScripting.Flow/FlowGraph.cs | 9 +- .../Framework/Codebase/InvokeMember.cs | 10 +- .../Framework/Events/EventUnit.cs | 10 +- .../Framework/Events/GameObjectEventUnit.cs | 2 +- .../Input/InputSystem/OnInputSystemEvent.cs | 13 +- .../Framework/Events/Lifecycle/OnDestroy.cs | 8 + .../Framework/Time/Cooldown.cs | 10 +- .../Framework/Time/Timer.cs | 10 +- Runtime/VisualScripting.Flow/ScriptMachine.cs | 13 +- Runtime/VisualScripting.Flow/SubgraphUnit.cs | 9 +- Runtime/VisualScripting.Flow/Unit.cs | 2 +- Runtime/VisualScripting.State/FlowState.cs | 11 +- .../FlowStateTransition.cs | 11 +- Runtime/VisualScripting.State/State.cs | 2 +- Runtime/VisualScripting.State/StateGraph.cs | 9 +- .../VisualScripting.State/StateTransition.cs | 2 +- Runtime/VisualScripting.State/SuperState.cs | 9 +- ValidationExceptions.json | 2 +- package.json | 11 +- 57 files changed, 930 insertions(+), 118 deletions(-) create mode 100644 Documentation~/images/vs-flagged-assembly.png create mode 100644 Documentation~/vs-editor-script-issues.md create mode 100644 Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs create mode 100644 Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs.meta delete mode 100644 Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll.mdb create mode 100644 Editor/VisualScripting.Flow/Linker.meta create mode 100644 Editor/VisualScripting.Flow/Linker/LinkerCreator.cs create mode 100644 Editor/VisualScripting.Flow/Linker/LinkerCreator.cs.meta create mode 100644 Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs create mode 100644 Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 5899a3e0..8f65f037 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +## [1.9.0] - 2023-08-01 +### Fixed +- Fixed code for custom nodes being stripped in AOT builds when Managed Stripping Level is set to High [UVSB-2439](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2437) +- Fixed OnInputSystemEvent doesn't trigger until Input Vector variates from 0.5 [UVSB-2435](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2435) +- Fixed assembly disappearing from Node Library after domain reload. [UVSB-2459](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2459) +- Fixed custom inspectors not being generated [UVSB-2466](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2466) +- Fixed error when trying to load exceptions for TryCatch node dropdown [2463] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2463) +- Fixed infinite amount of GameObjects created in Prefab mode when performing a null check of a scene variable in editor with an "OnDrawGizmos" event [UVSB-2453](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2453) +- Removed corrupt mdb which caused the ScriptUpdater to fail [UVSB-2360](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2360) +- Fixed Gradient graph variables resetting when entering PlayMode [UVSB-2334](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2334) +- Fixed Memory leak after destroying object [UVSB-2427] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2427) +- Fixed migration deserialization bug introduced in 1.8.0 [UVSB-2492](https://issuetracker.unity3d.com/issues/deserialization-error-when-upgrading-to-1-dot-8-0) + +### Added +- Added a warning icon next to assemblies in Project Settings that reference Editor assemblies [UVSB-2382](https://issuetracker.unity3d.com/issues/nodes-from-runtime-assemblies-that-reference-unity-editor-are-not-visible-in-the-fuzzy-finder) + +### Changed +- Script Graph Asset string data is unloaded after deserialization [UVSB-2367](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2366) +- AOT Prebuild should take less memory and be faster (Added an optimization to AssetUtility.GetAllAssetsOfType) + ## [1.8.0] - 2022-11-03 ### Fixed - Fixed graphs being corrupted on deserialization if containing a node whose type cannot be found. [UVSB-2332](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2332) @@ -9,7 +29,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fixed the problem that was preventing link.xml creation when building for Mono backend [UVSB-2348](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2348) - Moved Events/MessageListeners files to a Listeners folder to avoid to exceed some OS path limit - Fixed Grandient.mode serialization. Fix available for Unity 2021.3.9f1 or newer [UVSB-2356](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2356) -- Fixed Visual Scripting settings now only save to disk when modified +- Fixed Visual Scripting settings now only save to disk when modified - Fixed sub graphs being shown with broken connections on first load as of Unity 2021.2 [UVSB-2345](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2345) - Fixed documentation links for Script Graph and State Graphs assets [UVSB-2422](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2422) @@ -39,6 +59,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Fixed a performance issue when using lots of Get/Set Scene variable nodes in an open graph - Fixed default inspectors for nodes not appearing in the correct position after a connected node is deleted [BOLT-1457](https://issuetracker.unity3d.com/product/unity/issues/guid/BOLT-1457) - Fixed Scene variables drag and drop in graph having wrong scope [BOLT-2247](https://issuetracker.unity3d.com/product/unity/issues/guid/BOLT-2247) +- OnDestroy events are now properly triggered in script graphs [BOLT-1783](https://issuetracker.unity3d.com/issues/visual-scripting-ondestroy-unit-does-not-trigger-when-a-game-object-is-deleted) + ### Changed - Small optimization of load times involving generic types. diff --git a/Documentation~/TableOfContents.md b/Documentation~/TableOfContents.md index c5c73194..10f39176 100644 --- a/Documentation~/TableOfContents.md +++ b/Documentation~/TableOfContents.md @@ -198,3 +198,4 @@ * [Developer's guide](vs-developers-guide.md) +* [Known Issues](vs-editor-script-issues.md) \ No newline at end of file diff --git a/Documentation~/images/vs-flagged-assembly.png b/Documentation~/images/vs-flagged-assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..15fd988aca786d781ea25f69b366b81ad6512626 GIT binary patch literal 206664 zcmX_o2RxVk`@IxNLW(3ArKLnR6)GWFSs7UwA(WYHsU#tfBqYh+D?2MmR^nrXBzq^x zUjK8~_xFFjp6BVI&$#dR`+8s3xz0J)?Wdw7yMvmAnv9HW$0a#wRWh>8_sPh}!>B0n zn=aS;#rR{}Z8>dwGP3=?#J`(@hGtCh%dHNV6fbTaq1?eB#QvCTH(tjIPgBx+~23Xf^H{8sWO3%T?8RM?ZQXTj(kHo?zaQniw=-8>IcLpe5n7RWHNuT;M}8*kkdiZf^t^2)H`;m z-8=X97H9s;7H}N<`?pUiJ5A#TEL8odip}11{@K%W^xrF31QbIY#1+M(WJrROPN#(< zr-GxidzFn>f=>%7JYm$37gBVcRC?gN7ET`_?JrX)$oJ*x?SFT-dX1*4!lr=q<%^V_ z-u@VsN0B187^t?e?TzmAtb2L5Cu5*Btaq5@;W_cB_2%x~{dqAKU#8%qJv+9Y5)|LYi3C+E|O?P_T zW%;?TwZp$c5+W=XQ!Zui2dBS#_;g)m$|mtwpXGY zf{iQ5@ev6|%#=0-k$9c(t?y4PB3>l;WlW3~f1aD@2#=07n9Ef@5T%sbq$Q~6YBQEp zYr;^)cUzP-Q(C3OPQBeM_w1khl9}^bbX!7M zKj@u4!sLIJpVqbCOQpk6HThXY+>6M_%bJ=@GtR74eCkr8c16EjN)?oqQ(u4XyPfoU z=1M?ze&3u6JC!+26$g`l^5$hRa<-crjEszhJvL@$W{;!~H1Ql2e6lioD%!#Gp^+go zrM9;AqMHPED_Q-q%28=i){kbnYlHc^Bi4CNrmsj1vk_5IikB{J>%0A;sHkY`J=ecm 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 z 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/.cs: error CS0103: The name '' does not exist in the current context.` + +The following code sample is an example of preprocessor directives for Unity Editor scripts : +``` +#if UNITY_EDITOR +public static List GetAllVolumeComponents() +{ + // TypeCache is only accessible in UnityEditor. + // If you instantiate a GetAllVolumeComponents node in a graph + // it prevents the project from being built. + return TypeCache.GetTypesDerivedFrom().ToList(); +} +#endif +``` + +## Find flagged packages + +Packages that contain editor scripts are flagged with a warning icon in the Node Library section of the Visual Scripting tab in the Project Settings window. + +To find the affected packages, do the following: + +1. Go to **Edit** > **Project Settings**. +1. In the Project Settings window, select the **Visual Scripting** tab. +1. On the Visual Scripting tab expand the **Node Library** section.
+ A yellow warning flag is displayed next to any affected packages as shown in the following screenshot. + ![An example of a flagged package in the Visual Scripting project settings tab](images/vs-flagged-assembly.png) + +## Resolution + +To resolve this issue, go through your graphs and replace nodes that correspond to the API mentioned in the error message until you find the error no longer occurs. \ No newline at end of file diff --git a/Editor/SettingsProvider/ProjectSettings/AssemblyOptionsSettings.cs b/Editor/SettingsProvider/ProjectSettings/AssemblyOptionsSettings.cs index 2e50a510..6bf704b0 100644 --- a/Editor/SettingsProvider/ProjectSettings/AssemblyOptionsSettings.cs +++ b/Editor/SettingsProvider/ProjectSettings/AssemblyOptionsSettings.cs @@ -14,9 +14,12 @@ public class AssemblyOptionsSettings + "By default, all project and Unity assemblies are included.\n" + "Unless you use a third-party plugin distributed as a DLL, you shouldn't need to change this."; + private ProjectAssemblyOptionsListInspector _assemblyOptionsInspector; + public AssemblyOptionsSettings(BoltCoreConfiguration coreConfig) { _assemblyOptionsMetadata = coreConfig.GetMetadata(nameof(coreConfig.assemblyOptions)); + _assemblyOptionsInspector = new ProjectAssemblyOptionsListInspector(_assemblyOptionsMetadata); } private static class Styles @@ -43,24 +46,24 @@ public void OnGUI() { GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true)); - float height = LudiqGUI.GetInspectorHeight(null, _assemblyOptionsMetadata, Styles.OptionsWidth, GUIContent.none); + var height = _assemblyOptionsInspector.GetCachedHeight(Styles.OptionsWidth, GUIContent.none, null); EditorGUI.BeginChangeCheck(); var position = GUILayoutUtility.GetRect(Styles.OptionsWidth, height); - LudiqGUI.Inspector(_assemblyOptionsMetadata, position, GUIContent.none); + _assemblyOptionsInspector.Draw(position, GUIContent.none); if (EditorGUI.EndChangeCheck()) { - _assemblyOptionsMetadata.Save(); + _assemblyOptionsMetadata.SaveImmediately(true); Codebase.UpdateSettings(); } if (GUILayout.Button("Reset to Defaults", Styles.defaultsButton) && EditorUtility.DisplayDialog("Reset the Node Library", "Reset the Node Library to its default state?", "Reset to Default", "Cancel")) { _assemblyOptionsMetadata.Reset(true); - _assemblyOptionsMetadata.Save(); + _assemblyOptionsMetadata.SaveImmediately(true); } LudiqGUI.EndVertical(); diff --git a/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs b/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs new file mode 100644 index 00000000..ebbb8a7c --- /dev/null +++ b/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace Unity.VisualScripting +{ + internal class LinkerPropertyProviderSettings + { + private readonly PluginConfigurationItemMetadata _linkerSettings; + + private const string Title = "Linker generation settings"; + + private readonly GUIContent[] _toggleTargetsLabel = + { + new GUIContent("Scan graph assets"), + new GUIContent("Scan scenes"), + new GUIContent("Scan prefabs") + }; + + private Array _options = Enum.GetValues(typeof(BoltCoreConfiguration.LinkerScanTarget)); + private List _settings; + + public LinkerPropertyProviderSettings(BoltCoreConfiguration coreConfig) + { + _linkerSettings = coreConfig.GetMetadata(nameof(LinkerPropertyProviderSettings)); + + _settings = new List((List)_linkerSettings.value); + } + + private void SaveIfNeeded() + { + var settings = (List)_linkerSettings.value; + + if (!_settings.SequenceEqual(settings)) + { + _linkerSettings.value = new List(_settings); + + _linkerSettings.SaveImmediately(); + } + } + + public void OnGUI() + { + GUILayout.Space(5f); + + GUILayout.Label(Title, EditorStyles.boldLabel); + + GUILayout.Space(5f); + + var label = "Scan for types to be added to link.xml"; + + GUILayout.BeginHorizontal(EditorStyles.helpBox); + GUILayout.Label(EditorGUIUtility.IconContent("console.infoicon"), GUILayout.ExpandWidth(true)); + GUILayout.Box(label, EditorStyles.wordWrappedLabel); + GUILayout.EndHorizontal(); + + GUILayout.Space(5f); + + foreach (var option in _options) + { + _settings[(int)option] = GUILayout.Toggle(_settings[(int)option], _toggleTargetsLabel[(int)option]); + GUILayout.Space(5f); + } + + SaveIfNeeded(); + } + } +} diff --git a/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs.meta b/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs.meta new file mode 100644 index 00000000..dcbda6b5 --- /dev/null +++ b/Editor/SettingsProvider/ProjectSettings/LinkerPropertyProviderSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f2e89b748a6ae452488da87a34e25287 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/SettingsProvider/ProjectSettingsProviderView.cs b/Editor/SettingsProvider/ProjectSettingsProviderView.cs index cb6bce2e..ca17f3dd 100644 --- a/Editor/SettingsProvider/ProjectSettingsProviderView.cs +++ b/Editor/SettingsProvider/ProjectSettingsProviderView.cs @@ -13,6 +13,7 @@ internal class ProjectSettingsProviderView : SettingsProvider private AssemblyOptionsSettings _assemblyOptionsSettings; private TypeOptionsSettings _typeOptionsSettings; private CustomPropertyProviderSettings _customPropertyProviderSettings; + private LinkerPropertyProviderSettings _linkerPropertyProviderSettings; private BackupSettings _backupSettings; private ScriptReferenceResolverSettings _scriptReferenceResolverSettings; @@ -29,6 +30,7 @@ private void CreateOptionsIfNeeded() _assemblyOptionsSettings ??= new AssemblyOptionsSettings(_vsCoreConfig); _typeOptionsSettings ??= new TypeOptionsSettings(_vsCoreConfig); _customPropertyProviderSettings ??= new CustomPropertyProviderSettings(); + _linkerPropertyProviderSettings ??= new LinkerPropertyProviderSettings(_vsCoreConfig); _backupSettings ??= new BackupSettings(); _scriptReferenceResolverSettings ??= new ScriptReferenceResolverSettings(); } @@ -82,6 +84,10 @@ public override void OnGUI(string searchContext) GUILayout.Space(10f); + _linkerPropertyProviderSettings.OnGUI(); + + GUILayout.Space(10f); + _backupSettings.OnGUI(); GUILayout.Space(10f); diff --git a/Editor/VisualScripting.Core/Debugging/GraphDebugDataProvider.cs b/Editor/VisualScripting.Core/Debugging/GraphDebugDataProvider.cs index a70677f4..ab7b42b7 100644 --- a/Editor/VisualScripting.Core/Debugging/GraphDebugDataProvider.cs +++ b/Editor/VisualScripting.Core/Debugging/GraphDebugDataProvider.cs @@ -8,6 +8,7 @@ public class GraphDebugDataProvider static GraphDebugDataProvider() { GraphPointer.fetchRootDebugDataBinding = FetchRootDebugData; + GraphPointer.releaseDebugDataBinding = ReleaseRootDebugData; } private static IGraphDebugData FetchRootDebugData(IGraphRoot root) @@ -21,6 +22,11 @@ private static IGraphDebugData FetchRootDebugData(IGraphRoot root) return rootData; } + private static void ReleaseRootDebugData(IGraphRoot root) + { + rootDatas.Remove(root); + } + private static Dictionary rootDatas = new Dictionary(); } } diff --git a/Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll.mdb b/Editor/VisualScripting.Core/Dependencies/DotNetZip/Unity.VisualScripting.IonicZip.dll.mdb deleted file mode 100644 index c3c3b270e4fb95b57b788c73e12baffeceaf9e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125357 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 HvYGrp*Hqyp diff --git a/Editor/VisualScripting.Core/Inspection/MetadataListAdaptor.cs b/Editor/VisualScripting.Core/Inspection/MetadataListAdaptor.cs index d1aeccf1..77379edb 100644 --- a/Editor/VisualScripting.Core/Inspection/MetadataListAdaptor.cs +++ b/Editor/VisualScripting.Core/Inspection/MetadataListAdaptor.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Linq; using Unity.VisualScripting.ReorderableList; using UnityEditor; using UnityEngine; @@ -286,4 +287,39 @@ public override void DrawItemBackground(Rect position, int index) #endregion } + + public class ProjectAssemblyOptionsListAdaptor : MetadataListAdaptor + { + public ProjectAssemblyOptionsListAdaptor(Metadata metadata, Inspector parentInspector) : base((Metadata)metadata, + parentInspector) + { } + + public override void DrawItem(Rect position, int index) + { + base.DrawItem(position, index); + + var assemblyName = ((LooseAssemblyName)metadata[index].value).name; + if (assemblyName == null) // Can be null when we're adding new items to the list (the last entry is empty) + return; + var shouldShowWarning = + !assemblyName.StartsWith("Unity.VisualScripting.") && + Codebase.editorAssemblies.FirstOrDefault(a => a.GetName().Name == assemblyName) != null; + if (shouldShowWarning) + { + DrawAssemblyReferencingEditorWarning(position, assemblyName); + } + } + + void DrawAssemblyReferencingEditorWarning(Rect position, string assemblyName) + { + var warningIcon = EditorGUIUtility.IconContent("console.warnicon"); + warningIcon.tooltip = + "Nodes from this assembly can use editor-only APIs. Using them might cause errors in builds."; + var warningIconRect = position; + warningIconRect.width = 20; + warningIconRect.x -= 45; + + GUI.Button(warningIconRect, warningIcon, GUIStyle.none); + } + } } diff --git a/Editor/VisualScripting.Core/Inspection/Special/ListInspector.cs b/Editor/VisualScripting.Core/Inspection/Special/ListInspector.cs index fd71b026..2ba783da 100644 --- a/Editor/VisualScripting.Core/Inspection/Special/ListInspector.cs +++ b/Editor/VisualScripting.Core/Inspection/Special/ListInspector.cs @@ -9,7 +9,32 @@ public ListInspector(Metadata metadata) : base(metadata) adaptor = new MetadataListAdaptor(metadata, this); } - protected MetadataListAdaptor adaptor { get; private set; } + protected MetadataListAdaptor adaptor { get; set; } + + protected override float GetHeight(float width, GUIContent label) + { + return adaptor.GetHeight(width, label); + } + + protected override void OnGUI(Rect position, GUIContent label) + { + adaptor.Field(position, label); + } + + public override float GetAdaptiveWidth() + { + return adaptor.GetAdaptiveWidth(); + } + } + + internal class ProjectAssemblyOptionsListInspector : Inspector + { + public ProjectAssemblyOptionsListInspector(Metadata metadata) : base(metadata) + { + adaptor = new ProjectAssemblyOptionsListAdaptor(metadata, this); + } + + ProjectAssemblyOptionsListAdaptor adaptor { get; set; } protected override float GetHeight(float width, GUIContent label) { diff --git a/Editor/VisualScripting.Core/Platforms/AotPreBuilder.cs b/Editor/VisualScripting.Core/Platforms/AotPreBuilder.cs index 659aa14d..bcfc96ef 100644 --- a/Editor/VisualScripting.Core/Platforms/AotPreBuilder.cs +++ b/Editor/VisualScripting.Core/Platforms/AotPreBuilder.cs @@ -41,7 +41,6 @@ public class AotPreBuilder : IPreprocessBuildWithReport public int callbackOrder => 1; - private string linkerPath => Path.Combine(BoltCore.Paths.persistentGenerated, "link.xml"); private string aotStubsPath => Path.Combine(BoltCore.Paths.persistentGenerated, "AotStubs.cs"); [UsedImplicitly] @@ -90,7 +89,6 @@ private void GenerateAotStubs() { try { - GenerateLinker(); GenerateStubScript(aotStubsPath); } catch (Exception ex) @@ -102,56 +100,9 @@ private void GenerateAotStubs() private void DeleteAotStubs() { - PathUtility.DeleteProjectFileIfExists(linkerPath, true); PathUtility.DeleteProjectFileIfExists(aotStubsPath, true); } - // Automatically generates the link.xml file to prevent stripping. - // Currently only used for plugin assemblies, because blanket preserving - // all setting assemblies sometimes causes the IL2CPP process to fail. - // For settings assemblies, the AOT stubs are good enough to fool - // the static code analysis without needing this full coverage. - // https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html - // However, for FullSerializer, we need to preserve our custom assemblies. - // This is mostly because IL2CPP will attempt to transform non-public - // property setters used in deserialization into read-only accessors - // that return false on PropertyInfo.CanWrite, but only in stripped builds. - // Therefore, in stripped builds, FS will skip properties that should be - // deserialized without any error (and that took hours of debugging to figure out). - private void GenerateLinker() - { - var linker = new XDocument(); - - var linkerNode = new XElement("linker"); - - if (!PluginContainer.initialized) - PluginContainer.Initialize(); - - foreach (var pluginAssembly in PluginContainer.plugins - .SelectMany(plugin => plugin.GetType() - .GetAttributes() - .Select(a => a.assemblyName)) - .Distinct()) - { - var assemblyNode = new XElement("assembly"); - var fullnameAttribute = new XAttribute("fullname", pluginAssembly); - var preserveAttribute = new XAttribute("preserve", "all"); - assemblyNode.Add(fullnameAttribute); - assemblyNode.Add(preserveAttribute); - linkerNode.Add(assemblyNode); - } - - linker.Add(linkerNode); - - PathUtility.CreateDirectoryIfNeeded(BoltCore.Paths.transientGenerated); - - PathUtility.DeleteProjectFileIfExists(linkerPath, true); - - // Using ToString instead of Save to omit the declaration, - // which doesn't appear in the Unity documentation page for the linker. - File.WriteAllText(linkerPath, linker.ToString()); - } - private IEnumerable FindAllDistinctProjectStubs() { return FindAllProjectStubs().Distinct(); diff --git a/Editor/VisualScripting.Core/Plugin/BoltCoreConfiguration.cs b/Editor/VisualScripting.Core/Plugin/BoltCoreConfiguration.cs index ede2e99c..deae0247 100644 --- a/Editor/VisualScripting.Core/Plugin/BoltCoreConfiguration.cs +++ b/Editor/VisualScripting.Core/Plugin/BoltCoreConfiguration.cs @@ -240,6 +240,26 @@ public bool humanNaming [ProjectSetting(visible = false, resettable = false)] public HashSet favoriteMembers { get; set; } = new HashSet(); + /// + /// Link.xml type scan target. + /// + internal enum LinkerScanTarget + { + GraphAssets = 0, + EmbeddedSceneGraphs = 1, + EmbeddedPrefabGraphs = 2 + } + [ProjectSetting(visible = false, resettable = false)] + public List LinkerPropertyProviderSettings { get; private set; } = new List() + { + // Graph Assets + true, + // Scenes + true, + // prefabs + true + }; + /// /// The assemblies available for reflection. /// @@ -338,7 +358,7 @@ public bool humanNaming // Cinemachine "Cinemachine", - "com.unity.cinemachine.Editor", + "com.unity.cinemachine.editor", // Input System "Unity.InputSystem", diff --git a/Editor/VisualScripting.Core/Reflection/Codebase.cs b/Editor/VisualScripting.Core/Reflection/Codebase.cs index 1c4215ee..16f3159f 100644 --- a/Editor/VisualScripting.Core/Reflection/Codebase.cs +++ b/Editor/VisualScripting.Core/Reflection/Codebase.cs @@ -145,6 +145,7 @@ static Codebase() private static List _settingsTypes; private static readonly Dictionary _editorAssemblyCache = new Dictionary(); + private static readonly Dictionary _assemblyNameCache = new Dictionary(); #region Serialization public static string SerializeType(Type type) @@ -297,6 +298,18 @@ public static ReadOnlyCollection GetTypeSetFromAttribute(IAttributeProvide return typeset; } + private static bool IsUnityEditorAssembly(Assembly assembly) + { + // Cache because .GetName() is expensive + if (!_assemblyNameCache.TryGetValue(assembly, out var name)) + { + name = assembly.GetName().Name; + _assemblyNameCache.Add(assembly, name); + } + + return IsUnityEditorAssembly(name); + } + private static bool IsUnityEditorAssembly(string name) { return @@ -427,6 +440,7 @@ private static bool IsLudiqEditorDependentAssembly(Assembly assembly) return false; } + // Need to keep this to avoid breaking the public API public static bool IsEditorType(Type type) { var rootNamespace = type.RootNamespace(); @@ -436,17 +450,27 @@ public static bool IsEditorType(Type type) rootNamespace == "UnityEditorInternal"; } - public static bool IsInternalType(Type type) + // Need to keep this to avoid breaking the public API + public static bool IsRuntimeType(Type type) + { + return !IsEditorType(type) && !IsInternalType(type); + } + + internal static bool IsUnityEditorType(Type type) { var rootNamespace = type.RootNamespace(); - return rootNamespace == "UnityEngineInternal" || - rootNamespace == "UnityEditorInternal"; + return rootNamespace == "UnityEditor" || rootNamespace == "UnityEditorInternal" || + Attribute.IsDefined(type.Assembly, typeof(AssemblyIsEditorAssembly)) || + IsUnityEditorAssembly(type.Assembly); } - public static bool IsRuntimeType(Type type) + public static bool IsInternalType(Type type) { - return !IsEditorType(type) && !IsInternalType(type); + var rootNamespace = type.RootNamespace(); + + return rootNamespace == "UnityEngineInternal" || + rootNamespace == "UnityEditorInternal"; } private static string RootNamespace(this Type type) @@ -521,7 +545,7 @@ private static bool IncludeInSettings(Type t, bool couldHaveAttribute, HashSet drawerTypeAttributes { if (_drawerTypeAttributes == null) { - _drawerTypeAttributes = Codebase.editorTypes - .Select(type => type.GetAttribute()) - .NotNull() - .ToHashSet(); + _drawerTypeAttributes = Codebase.types + .Select(type => type.GetAttribute()) + .NotNull() + .ToHashSet(); } return _drawerTypeAttributes; diff --git a/Editor/VisualScripting.Core/Unity.VisualScripting.Core.Editor.asmdef b/Editor/VisualScripting.Core/Unity.VisualScripting.Core.Editor.asmdef index ad9d3979..8a68a4cd 100644 --- a/Editor/VisualScripting.Core/Unity.VisualScripting.Core.Editor.asmdef +++ b/Editor/VisualScripting.Core/Unity.VisualScripting.Core.Editor.asmdef @@ -1,12 +1,18 @@ { "name": "Unity.VisualScripting.Core.Editor", + "rootNamespace": "", "references": [ "Unity.VisualScripting.Core" ], - "optionalUnityReferences": [], "includePlatforms": [ "Editor" ], "excludePlatforms": [], - "allowUnsafeCode": false + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false } diff --git a/Editor/VisualScripting.Core/Utilities/AssetUtility.cs b/Editor/VisualScripting.Core/Utilities/AssetUtility.cs index ea4cb4c5..b4b5d39e 100644 --- a/Editor/VisualScripting.Core/Utilities/AssetUtility.cs +++ b/Editor/VisualScripting.Core/Utilities/AssetUtility.cs @@ -55,6 +55,7 @@ public static IEnumerable GetAllAssetsOfType() // paths that are outside the assets folder, hence the where filter. var result = AssetDatabase.GetAllAssetPaths() .Where(p => p.StartsWith("Assets")) + .Where(p => typeof(T).IsAssignableFrom(AssetDatabase.GetMainAssetTypeAtPath(p))) .Select(AssetDatabase.LoadMainAssetAtPath) .OfType(); diff --git a/Editor/VisualScripting.Core/Utilities/DefineUtility.cs b/Editor/VisualScripting.Core/Utilities/DefineUtility.cs index 2e0244ff..d7ff41dc 100644 --- a/Editor/VisualScripting.Core/Utilities/DefineUtility.cs +++ b/Editor/VisualScripting.Core/Utilities/DefineUtility.cs @@ -31,18 +31,38 @@ public static bool ToggleDefine(string define, bool enable) } } + private static string GetScriptingDefineSymbolsForGroup(BuildTargetGroup targetGroup) + { +#if UNITY_2023_1_OR_NEWER + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(targetGroup); + return PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget); +#else + return PlayerSettings.GetScriptingDefineSymbolsForGroup(targetGroup); +#endif + } + + private static void SetScriptingDefineSymbolsForGroup(BuildTargetGroup targetGroup, string defines) + { +#if UNITY_2023_1_OR_NEWER + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(targetGroup); + PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, defines); +#else + PlayerSettings.SetScriptingDefineSymbolsForGroup(targetGroup, defines); +#endif + } + public static bool AddDefine(string define) { var added = false; foreach (var group in buildTargetGroups) { - var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group).Split(';').Select(d => d.Trim()).ToList(); + var defines = GetScriptingDefineSymbolsForGroup(group).Split(';').Select(d => d.Trim()).ToList(); if (!defines.Contains(define)) { defines.Add(define); - PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Join(";", defines.ToArray())); + SetScriptingDefineSymbolsForGroup(group, string.Join(";", defines.ToArray())); added = true; } } @@ -56,12 +76,12 @@ public static bool RemoveDefine(string define) foreach (var group in buildTargetGroups) { - var defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group).Split(';').Select(d => d.Trim()).ToList(); + var defines = GetScriptingDefineSymbolsForGroup(group).Split(';').Select(d => d.Trim()).ToList(); if (defines.Contains(define)) { defines.Remove(define); - PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Join(";", defines.ToArray())); + SetScriptingDefineSymbolsForGroup(group, string.Join(";", defines.ToArray())); removed = true; } } @@ -76,7 +96,7 @@ public static void ClearAllDefines() { foreach (var group in buildTargetGroups) { - PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Empty); + SetScriptingDefineSymbolsForGroup(group, string.Empty); } } } diff --git a/Editor/VisualScripting.Flow/Linker.meta b/Editor/VisualScripting.Flow/Linker.meta new file mode 100644 index 00000000..dd655256 --- /dev/null +++ b/Editor/VisualScripting.Flow/Linker.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0b9bc204e63134690a7916ae20e9f2fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs b/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs new file mode 100644 index 00000000..abaf3d16 --- /dev/null +++ b/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs @@ -0,0 +1,344 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml.Linq; +using Unity.VisualScripting; +using UnityEditor; +using UnityEditor.Build; +using UnityEditor.Build.Reporting; +using UnityEditor.Callbacks; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +internal class LinkerCreator : IPreprocessBuildWithReport +{ + private static string linkerPath => Path.Combine(BoltCore.Paths.persistentGenerated, "link.xml"); + + public int callbackOrder { get; } + + private static ManagedStrippingLevel GetManagedStrippingLevel(BuildTargetGroup buildTarget) + { +#if UNITY_2023_1_OR_NEWER + var namedBuildTarget = UnityEditor.Build.NamedBuildTarget.FromBuildTargetGroup(buildTarget); + return PlayerSettings.GetManagedStrippingLevel(namedBuildTarget); +#else + return PlayerSettings.GetManagedStrippingLevel(buildTarget); +#endif + } + + public void OnPreprocessBuild(BuildReport report) + { + if (VSUsageUtility.isVisualScriptingUsed) + { + try + { + if (GetManagedStrippingLevel(EditorUserBuildSettings.selectedBuildTargetGroup) != + ManagedStrippingLevel.Disabled) + { + GenerateLinker(); + } + } + catch (Exception ex) + { + Debug.LogException(ex); + + DeleteLinker(); + } + } + } + + [PostProcessBuild] + private static void OnPostprocessBuild(BuildTarget buildTarget, string path) + { + if (VSUsageUtility.isVisualScriptingUsed) + { + DeleteLinker(); + } + } + + private static void DeleteLinker() + { + PathUtility.DeleteProjectFileIfExists(linkerPath, true); + } + + // Automatically generates the link.xml file to prevent stripping. + // Currently only used for plugin assemblies, because blanket preserving + // all setting assemblies sometimes causes the IL2CPP process to fail. + // For settings assemblies, the AOT stubs are good enough to fool + // the static code analysis without needing this full coverage. + // https://docs.unity3d.com/Manual/iphone-playerSizeOptimization.html + // However, for FullSerializer, we need to preserve our custom assemblies. + // This is mostly because IL2CPP will attempt to transform non-public + // property setters used in deserialization into read-only accessors + // that return false on PropertyInfo.CanWrite, but only in stripped builds. + // Therefore, in stripped builds, FS will skip properties that should be + // deserialized without any error (and that took hours of debugging to figure out). + public static void GenerateLinker() + { + var linker = new XDocument(); + + var linkerNode = new XElement("linker"); + + if (!PluginContainer.initialized) + PluginContainer.Initialize(); + + foreach (var pluginAssembly in PluginContainer.plugins + .SelectMany(plugin => plugin.GetType() + .GetAttributes() + .Select(a => a.assemblyName)) + .Distinct()) + { + var assemblyNode = new XElement("assembly"); + var fullnameAttribute = new XAttribute("fullname", pluginAssembly); + var preserveAttribute = new XAttribute("preserve", "all"); + assemblyNode.Add(fullnameAttribute); + assemblyNode.Add(preserveAttribute); + linkerNode.Add(assemblyNode); + } + + linker.Add(linkerNode); + + AddCustomNodesToLinker(linkerNode, PluginContainer.plugins); + + PathUtility.CreateDirectoryIfNeeded(BoltCore.Paths.transientGenerated); + + PathUtility.DeleteProjectFileIfExists(linkerPath, true); + + // Using ToString instead of Save to omit the declaration, + // which doesn't appear in the Unity documentation page for the linker. + File.WriteAllText(linkerPath, linker.ToString()); + } + + private static void AddCustomNodesToLinker(XElement linkerNode, IEnumerable plugins) + { + var types = FindAllCustomTypes(); + + var customTypes = types.Where(t => !plugins.Any(p => t.Assembly == p.runtimeAssembly)); + + foreach (var type in customTypes) + { + var userAssembly = type.Assembly.GetName().Name; + + var assemblyNode = new XElement("assembly"); + var fullnameAttribute = new XAttribute("fullname", userAssembly); + var preserveAttribute = new XAttribute("preserve", "all"); + + assemblyNode.Add(fullnameAttribute); + + var customType = new XElement("type"); + var fullnameType = new XAttribute("fullname", type.FullName); + + customType.Add(fullnameType); + customType.Add(preserveAttribute); + + assemblyNode.Add(customType); + + linkerNode.Add(assemblyNode); + } + } + + private static void ProcessSubGraphs(HashSet types, SubgraphUnit subgraph) + { + foreach (var unit in subgraph.nest.graph.units) + { + AddTypeToHashSet(types, unit); + } + } + + private static void AddTypeToHashSet(HashSet types, IUnit unit) + { + if (unit.GetType() == typeof(SubgraphUnit)) + { + ProcessSubGraphs(types, (SubgraphUnit)unit); + } + else + { + types.Add(unit.GetType()); + } + } + + private static HashSet FindGraphsOnAssets() + { + var scriptGraphAssets = AssetUtility.GetAllAssetsOfType(); + + var types = new HashSet(); + + var index = 0; + var total = scriptGraphAssets.Count(); + + foreach (var scriptGraphAsset in scriptGraphAssets) + { + if (EditorUtility.DisplayCancelableProgressBar($"Processing on assets {index}/{total}", + $"Asset {scriptGraphAsset.name}", (float)index / (float)total)) + { + break; + } + + index++; + + if (scriptGraphAsset.graph != null) + { + foreach (var unit in scriptGraphAsset.graph.units) + { + AddTypeToHashSet(types, unit); + } + } + } + + EditorUtility.ClearProgressBar(); + + return types; + } + + private static HashSet FindGraphsOnScenes(bool includeGraphAssets) + { + var activeScenePath = SceneManager.GetActiveScene().path; + var scenePaths = EditorBuildSettings.scenes.Select(s => s.path).ToArray(); + + var index = 0; + var total = scenePaths.Count(); + var types = new HashSet(); + + foreach (var scenePath in scenePaths) + { + index++; + + if (EditorUtility.DisplayCancelableProgressBar($"Processing scenes {index} / {total}", $"Scene {scenePath}", + (float)index / (float)total)) + { + break; + } + + if (!string.IsNullOrEmpty(scenePath)) + { + EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Single); + + var scriptMachines = UnityObjectUtility.FindObjectsOfTypeIncludingInactive(); + + foreach (var scriptMachine in scriptMachines) + { + if (scriptMachine.nest != null && + (scriptMachine.nest.source == GraphSource.Macro && includeGraphAssets) || + scriptMachine.nest.source == GraphSource.Embed) + { + foreach (var unit in scriptMachine.graph.units) + { + AddTypeToHashSet(types, unit); + } + } + } + } + } + + if (!string.IsNullOrEmpty(activeScenePath)) + { + EditorSceneManager.OpenScene(activeScenePath); + } + + GC.Collect(); + + EditorUtility.ClearProgressBar(); + + return types; + } + + private static HashSet FindGraphsOnPrefabs(bool includeGraphAssets) + { + var types = new HashSet(); + + var files = System.IO.Directory.GetFiles(Application.dataPath, "*.prefab", + System.IO.SearchOption.AllDirectories); + + var index = 0; + var total = files.Count(); + + var currentScene = EditorSceneManager.GetActiveScene(); + var scenePath = currentScene.path; + + EditorSceneManager.NewScene(NewSceneSetup.EmptyScene); + + foreach (var file in files) + { + index++; + + if (EditorUtility.DisplayCancelableProgressBar($"Processing prefabs {index} / {total}", $"Prefab {file}", + (float)index / (float)total)) + { + break; + } + + var prefabPath = file.Replace(Application.dataPath, "Assets"); + + var prefab = UnityEditor.AssetDatabase.LoadAssetAtPath(prefabPath, typeof(GameObject)) as GameObject; + + if (prefab != null) + { + FindGraphInPrefab(types, prefab, includeGraphAssets); + prefab = null; + + EditorUtility.UnloadUnusedAssetsImmediate(true); + } + } + + EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Single); + + EditorUtility.UnloadUnusedAssetsImmediate(true); + + GC.Collect(); + + EditorUtility.ClearProgressBar(); + + return types; + } + + private static void FindGraphInPrefab(HashSet types, GameObject gameObject, bool includeGraphAssets) + { + var scriptMachines = gameObject.GetComponents(); + + foreach (var scriptMachine in scriptMachines) + { + if (scriptMachine.nest != null && + (scriptMachine.nest.source == GraphSource.Macro && includeGraphAssets) || + scriptMachine.nest.source == GraphSource.Embed) + { + foreach (var unit in scriptMachine.graph.units) + { + AddTypeToHashSet(types, unit); + } + } + } + + foreach (Transform child in gameObject.transform) + { + FindGraphInPrefab(types, child.gameObject, includeGraphAssets); + } + } + + private static HashSet FindAllCustomTypes() + { + var types = new HashSet(); + + var settings = (List)BoltCore.Configuration.GetMetadata("LinkerPropertyProviderSettings").value; + + if (settings[(int)BoltCoreConfiguration.LinkerScanTarget.GraphAssets]) + { + types.AddRange(FindGraphsOnAssets()); + } + + var includeGraphAssets = !settings[(int)BoltCoreConfiguration.LinkerScanTarget.GraphAssets]; + + if (settings[(int)BoltCoreConfiguration.LinkerScanTarget.EmbeddedSceneGraphs]) + { + types.AddRange(FindGraphsOnScenes(includeGraphAssets)); + } + + if (settings[(int)BoltCoreConfiguration.LinkerScanTarget.EmbeddedPrefabGraphs]) + { + types.AddRange(FindGraphsOnPrefabs(includeGraphAssets)); + } + + return types; + } +} diff --git a/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs.meta b/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs.meta new file mode 100644 index 00000000..9c27ec34 --- /dev/null +++ b/Editor/VisualScripting.Flow/Linker/LinkerCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: be35a7fb7698c4f9aac8453e9d31ae94 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs b/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs new file mode 100644 index 00000000..3030e63d --- /dev/null +++ b/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs @@ -0,0 +1,24 @@ +using System; +using UnityEngine; + +namespace Unity.VisualScripting +{ + internal sealed class GradientCloner : Cloner + { + public override bool Handles(Type type) + { + return type == typeof(Gradient); + } + + public override Gradient ConstructClone(Type type, Gradient original) + { + return new Gradient(); + } + + public override void FillClone(Type type, ref Gradient clone, Gradient original, CloningContext context) + { + clone.mode = original.mode; + clone.SetKeys(original.colorKeys, original.alphaKeys); + } + } +} diff --git a/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs.meta b/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs.meta new file mode 100644 index 00000000..11665599 --- /dev/null +++ b/Runtime/VisualScripting.Core/Cloning/Cloners/GradientCloner.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 057253f1a89340aeb7283ea133acffeb +timeCreated: 1678386566 \ No newline at end of file diff --git a/Runtime/VisualScripting.Core/Cloning/Cloning.cs b/Runtime/VisualScripting.Core/Cloning/Cloning.cs index 96336485..3d221bf1 100644 --- a/Runtime/VisualScripting.Core/Cloning/Cloning.cs +++ b/Runtime/VisualScripting.Core/Cloning/Cloning.cs @@ -15,6 +15,7 @@ static Cloning() cloners.Add(enumerableCloner); cloners.Add(listCloner); cloners.Add(animationCurveCloner); + cloners.Add(gradientCloner); } // Cloning has to be really fast, and skippable takes a while. @@ -27,6 +28,8 @@ static Cloning() public static EnumerableCloner enumerableCloner { get; } = new EnumerableCloner(); public static ListCloner listCloner { get; } = new ListCloner(); public static AnimationCurveCloner animationCurveCloner { get; } = new AnimationCurveCloner(); + internal static GradientCloner gradientCloner { get; } = new GradientCloner(); + public static FieldsCloner fieldsCloner { get; } = new FieldsCloner(); public static FakeSerializationCloner fakeSerializationCloner { get; } = new FakeSerializationCloner(); diff --git a/Runtime/VisualScripting.Core/Events/EventMachine.cs b/Runtime/VisualScripting.Core/Events/EventMachine.cs index a40a7e46..b0bf979b 100644 --- a/Runtime/VisualScripting.Core/Events/EventMachine.cs +++ b/Runtime/VisualScripting.Core/Events/EventMachine.cs @@ -40,6 +40,8 @@ protected virtual void TriggerUnregisteredEvent(EventHook hook, TArgs arg using (var stack = reference.ToStackPooled()) { stack.TriggerEventHandler(_hook => _hook == hook, args, parent => true, true); + + stack.ClearReference(); } } diff --git a/Runtime/VisualScripting.Core/Graphs/GraphPointer.cs b/Runtime/VisualScripting.Core/Graphs/GraphPointer.cs index ad5d2b91..1494681f 100644 --- a/Runtime/VisualScripting.Core/Graphs/GraphPointer.cs +++ b/Runtime/VisualScripting.Core/Graphs/GraphPointer.cs @@ -354,6 +354,7 @@ public T GetElementData(IGraphElementWithData element) where T : IGraphElemen } public static Func fetchRootDebugDataBinding { get; set; } + internal static Action releaseDebugDataBinding; public bool hasDebugData => _debugData != null; diff --git a/Runtime/VisualScripting.Core/Graphs/GraphReference.cs b/Runtime/VisualScripting.Core/Graphs/GraphReference.cs index 90faee5a..0c8acb04 100644 --- a/Runtime/VisualScripting.Core/Graphs/GraphReference.cs +++ b/Runtime/VisualScripting.Core/Graphs/GraphReference.cs @@ -97,6 +97,11 @@ public GraphStack ToStackPooled() return GraphStack.New(this); } + internal void Release() + { + releaseDebugDataBinding?.Invoke(root); + } + #endregion @@ -328,6 +333,27 @@ public static GraphReference Intern(GraphPointer pointer) } } + internal static void ClearIntern(GraphPointer pointer) + { + var hash = pointer.ComputeHashCode(); + + if (!internPool.TryGetValue(hash, out var interns)) return; + + for (var i = interns.Count - 1; i >= 0; i--) + { + if (interns[i].InstanceEquals(pointer)) + { + interns.RemoveAt(i); + break; + } + } + + if (interns.Count == 0) + { + internPool.Remove(hash); + } + } + public static void FreeInvalidInterns() { var invalidHashes = ListPool.New(); diff --git a/Runtime/VisualScripting.Core/Graphs/GraphStack.cs b/Runtime/VisualScripting.Core/Graphs/GraphStack.cs index 0711979e..3a209313 100644 --- a/Runtime/VisualScripting.Core/Graphs/GraphStack.cs +++ b/Runtime/VisualScripting.Core/Graphs/GraphStack.cs @@ -83,6 +83,11 @@ public GraphReference ToReference() return GraphReference.Intern(this); } + internal void ClearReference() + { + GraphReference.ClearIntern(this); + } + #endregion #region Traversal diff --git a/Runtime/VisualScripting.Core/Listeners/IGraphEventListener.cs b/Runtime/VisualScripting.Core/Listeners/IGraphEventListener.cs index 0b828a74..65fde9b6 100644 --- a/Runtime/VisualScripting.Core/Listeners/IGraphEventListener.cs +++ b/Runtime/VisualScripting.Core/Listeners/IGraphEventListener.cs @@ -4,7 +4,9 @@ public interface IGraphEventListener { void StartListening(GraphStack stack); - void StopListening(GraphStack stack); + void StopListening(GraphStack stack) => StopListening(stack, true); + + internal void StopListening(GraphStack stack, bool destroyed); bool IsListening(GraphPointer pointer); } @@ -27,6 +29,14 @@ public static void StopListening(this IGraphEventListener listener, GraphReferen } } + internal static void StopListening(this IGraphEventListener listener, GraphReference reference, bool destroyed) + { + using (var stack = reference.ToStackPooled()) + { + listener.StopListening(stack, destroyed); + } + } + public static bool IsHierarchyListening(GraphReference reference) { using (var stack = reference.ToStackPooled()) diff --git a/Runtime/VisualScripting.Core/Machines/Machine.cs b/Runtime/VisualScripting.Core/Machines/Machine.cs index d4726d2f..d3aed5bb 100644 --- a/Runtime/VisualScripting.Core/Machines/Machine.cs +++ b/Runtime/VisualScripting.Core/Machines/Machine.cs @@ -151,7 +151,11 @@ private void CacheReference() private void ClearCachedReference() { - _reference = null; + if (_reference != null) + { + _reference.Release(); + _reference = null; + } } public virtual void InstantiateNest() diff --git a/Runtime/VisualScripting.Core/Reflection/TypeFilter.cs b/Runtime/VisualScripting.Core/Reflection/TypeFilter.cs index 5cc089d2..71700189 100644 --- a/Runtime/VisualScripting.Core/Reflection/TypeFilter.cs +++ b/Runtime/VisualScripting.Core/Reflection/TypeFilter.cs @@ -280,7 +280,7 @@ public bool ValidateType(Type type) } else if (Matching == TypesMatching.AssignableToAll) { - valid &= allowedType.IsAssignableFrom(type); + valid &= type.IsSubclassOf(allowedType); if (!valid) { diff --git a/Runtime/VisualScripting.Core/Serialization/SerializationData.cs b/Runtime/VisualScripting.Core/Serialization/SerializationData.cs index 2bee6df3..3bcacb1b 100644 --- a/Runtime/VisualScripting.Core/Serialization/SerializationData.cs +++ b/Runtime/VisualScripting.Core/Serialization/SerializationData.cs @@ -40,6 +40,12 @@ public SerializationData(string json, IEnumerable objectReferences) public SerializationData(string json, params UnityObject[] objectReferences) : this(json, ((IEnumerable)objectReferences)) { } + internal void Clear() + { + _json = null; + _objectReferences = null; + } + public string ToString(string title) { using (var writer = new StringWriter()) diff --git a/Runtime/VisualScripting.Core/Unity/LudiqBehaviour.cs b/Runtime/VisualScripting.Core/Unity/LudiqBehaviour.cs index d782ad1f..9a1f4865 100644 --- a/Runtime/VisualScripting.Core/Unity/LudiqBehaviour.cs +++ b/Runtime/VisualScripting.Core/Unity/LudiqBehaviour.cs @@ -47,6 +47,7 @@ void ISerializationCallbackReceiver.OnAfterDeserialize() OnBeforeDeserialize(); _data.DeserializeInto(ref @this, true); OnAfterDeserialize(); + _data.Clear(); } catch (Exception ex) { @@ -67,7 +68,9 @@ protected virtual void OnAfterDeserialize() { } protected virtual void ShowData() { - _data.ShowString(ToString()); + var data = this.Serialize(true); + data.ShowString(ToString()); + data.Clear(); } public override string ToString() diff --git a/Runtime/VisualScripting.Core/Unity/LudiqScriptableObject.cs b/Runtime/VisualScripting.Core/Unity/LudiqScriptableObject.cs index cf43b158..f08b0909 100644 --- a/Runtime/VisualScripting.Core/Unity/LudiqScriptableObject.cs +++ b/Runtime/VisualScripting.Core/Unity/LudiqScriptableObject.cs @@ -6,7 +6,7 @@ namespace Unity.VisualScripting public abstract class LudiqScriptableObject : ScriptableObject, ISerializationCallbackReceiver { [SerializeField, DoNotSerialize] // Serialize with Unity, but not with FullSerializer. - protected SerializationData _data; + private SerializationData _data; internal event Action OnDestroyActions; @@ -51,6 +51,9 @@ void ISerializationCallbackReceiver.OnAfterDeserialize() OnBeforeDeserialize(); _data.DeserializeInto(ref @this, true); OnAfterDeserialize(); + + _data.Clear(); + UnityThread.EditorAsync(OnPostDeserializeInEditor); } catch (Exception ex) @@ -79,7 +82,10 @@ private void OnDestroy() protected virtual void ShowData() { - _data.ShowString(ToString()); + var data = this.Serialize(true); + data.ShowString(ToString()); + + data.Clear(); } public override string ToString() diff --git a/Runtime/VisualScripting.Core/Unity/SceneSingleton.cs b/Runtime/VisualScripting.Core/Unity/SceneSingleton.cs index 8b2229e8..24707924 100644 --- a/Runtime/VisualScripting.Core/Unity/SceneSingleton.cs +++ b/Runtime/VisualScripting.Core/Unity/SceneSingleton.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +#if UNITY_EDITOR +using UnityEditor.SceneManagement; +#endif using UnityEngine; using UnityEngine.SceneManagement; using UnityObject = UnityEngine.Object; @@ -75,19 +78,36 @@ public static T InstanceIn(Scene scene) } } + private static T[] FindObjectsOfType() + { +#if UNITY_2023_1_OR_NEWER + return UnityObject.FindObjectsByType(FindObjectsSortMode.None); +#else + return UnityObject.FindObjectsOfType(); +#endif + } + private static T[] FindInstances(Scene scene) { EnsureSceneValid(scene); // Fails here on hidden hide flags - return UnityObject.FindObjectsOfType().Where(o => o.gameObject.scene == scene).ToArray(); + return FindObjectsOfType().Where(o => o.gameObject.scene == scene).ToArray(); } private static T FindOrCreateInstance(Scene scene) { - EnsureSceneValid(scene); +#if UNITY_EDITOR + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + + var targetScene = prefabStage == null ? scene : SceneManager.GetActiveScene(); +#else + var targetScene = scene; +#endif + + EnsureSceneValid(targetScene); - var instances = FindInstances(scene); + var instances = FindInstances(targetScene); if (instances.Length == 1) { @@ -110,7 +130,7 @@ private static T FindOrCreateInstance(Scene scene) singleton.hideFlags = hideFlags; // Immediately move it to the proper scene so that Register can determine dictionary key - SceneManager.MoveGameObjectToScene(singleton, scene); + SceneManager.MoveGameObjectToScene(singleton, targetScene); // Instantiate the component, letting Awake register the instance if we're in play mode var instance = singleton.AddComponent(); diff --git a/Runtime/VisualScripting.Core/Unity/Singleton.cs b/Runtime/VisualScripting.Core/Unity/Singleton.cs index 121ba028..94b87c07 100644 --- a/Runtime/VisualScripting.Core/Unity/Singleton.cs +++ b/Runtime/VisualScripting.Core/Unity/Singleton.cs @@ -78,10 +78,19 @@ public static T instance } } + private static T[] FindObjectsOfType() + { +#if UNITY_2023_1_OR_NEWER + return UnityObject.FindObjectsByType(FindObjectsSortMode.None); +#else + return UnityObject.FindObjectsOfType(); +#endif + } + private static T[] FindInstances() { // Fails here on hidden hide flags - return UnityObject.FindObjectsOfType(); + return FindObjectsOfType(); } public static T Instantiate() diff --git a/Runtime/VisualScripting.Flow/FlowGraph.cs b/Runtime/VisualScripting.Flow/FlowGraph.cs index f46c97e1..529b44e7 100644 --- a/Runtime/VisualScripting.Flow/FlowGraph.cs +++ b/Runtime/VisualScripting.Flow/FlowGraph.cs @@ -49,11 +49,16 @@ public void StartListening(GraphStack stack) } } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { foreach (var unit in units) { - (unit as IGraphEventListener)?.StopListening(stack); + (unit as IGraphEventListener)?.StopListening(stack, destroyed); } stack.GetGraphData().isListening = false; diff --git a/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs b/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs index f42861fe..34c1b2b0 100644 --- a/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs +++ b/Runtime/VisualScripting.Flow/Framework/Codebase/InvokeMember.cs @@ -74,11 +74,17 @@ public override bool HandleDependencies() // In the past we did not serialize parameter names explicitly (only parameter types), however, if we have // exactly the same number of defaults as parameters, we happen to know what the original parameter names were. - if (parameterNames == null && member.parameterTypes.Length == defaultValues.Count) + // Note there is one specific exception that must be handled carefully, the base class (MemberUnit) adds a + // default value for the "target" (aka. the "this" instance) of the invocation; this does not correspond to + // a real parameter member so it is excluded here when trying to reconstruct the missing parameter names. + if (parameterNames == null && member.parameterTypes.Length == defaultValues.Count(d => d.Key != nameof(target))) { // Note that we strip the "%" prefix from the parameter name in the default values (the "%" denotes that // it is a parameter input) - parameterNames = defaultValues.Select(defaultValue => defaultValue.Key.Substring(1)).ToList(); + parameterNames = defaultValues + .Where(d => d.Key != nameof(target)) + .Select(defaultValue => defaultValue.Key.Substring(1)) + .ToList(); } return true; diff --git a/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs b/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs index 2b50dd13..0113b720 100644 --- a/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs +++ b/Runtime/VisualScripting.Flow/Framework/Events/EventUnit.cs @@ -74,7 +74,12 @@ public virtual void StartListening(GraphStack stack) data.isListening = true; } - public virtual void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + protected virtual void StopListening(GraphStack stack, bool destroyed) { var data = stack.GetElementData(this); @@ -93,6 +98,9 @@ public virtual void StopListening(GraphStack stack) if (register) { EventBus.Unregister(data.hook, data.handler); + + stack.ClearReference(); + data.handler = null; } diff --git a/Runtime/VisualScripting.Flow/Framework/Events/GameObjectEventUnit.cs b/Runtime/VisualScripting.Flow/Framework/Events/GameObjectEventUnit.cs index c9cade3f..b0b65084 100644 --- a/Runtime/VisualScripting.Flow/Framework/Events/GameObjectEventUnit.cs +++ b/Runtime/VisualScripting.Flow/Framework/Events/GameObjectEventUnit.cs @@ -61,7 +61,7 @@ private void UpdateTarget(GraphStack stack) { if (wasListening) { - StopListening(stack); + StopListening(stack, true); } data.target = newTarget; diff --git a/Runtime/VisualScripting.Flow/Framework/Events/Input/InputSystem/OnInputSystemEvent.cs b/Runtime/VisualScripting.Flow/Framework/Events/Input/InputSystem/OnInputSystemEvent.cs index 58fb9740..b6cbee4a 100644 --- a/Runtime/VisualScripting.Flow/Framework/Events/Input/InputSystem/OnInputSystemEvent.cs +++ b/Runtime/VisualScripting.Flow/Framework/Events/Input/InputSystem/OnInputSystemEvent.cs @@ -114,9 +114,11 @@ public override void StartListening(GraphStack stack) : inputAction.actionMap != null ? inputAction : null; } - public override void StopListening(GraphStack stack) + public void StopListening(GraphStack stack) => StopListening(stack, true); + + protected override void StopListening(GraphStack stack, bool destroyed) { - base.StopListening(stack); + base.StopListening(stack, destroyed); m_Action = null; } @@ -134,8 +136,13 @@ protected override bool ShouldTrigger(Flow flow, EmptyEventArgs args) shouldTrigger = m_Action.WasPressedThisFrame(); break; case InputActionChangeOption.OnHold: - shouldTrigger = m_Action.IsPressed(); +#if PACKAGE_INPUT_SYSTEM_1_4_0_OR_NEWER_EXISTS + shouldTrigger = OutputType == OutputType.Vector2 ? m_Action.IsInProgress() : m_Action.IsPressed(); +#else + shouldTrigger = OutputType == OutputType.Vector2 ? m_Action.triggered : m_Action.IsPressed(); +#endif break; + case InputActionChangeOption.OnReleased: shouldTrigger = m_Action.WasReleasedThisFrame(); break; diff --git a/Runtime/VisualScripting.Flow/Framework/Events/Lifecycle/OnDestroy.cs b/Runtime/VisualScripting.Flow/Framework/Events/Lifecycle/OnDestroy.cs index 61026f81..7d90c64d 100644 --- a/Runtime/VisualScripting.Flow/Framework/Events/Lifecycle/OnDestroy.cs +++ b/Runtime/VisualScripting.Flow/Framework/Events/Lifecycle/OnDestroy.cs @@ -8,5 +8,13 @@ namespace Unity.VisualScripting public sealed class OnDestroy : MachineEventUnit { protected override string hookName => EventHooks.OnDestroy; + + protected override void StopListening(GraphStack stack, bool destroyed) + { + if (!destroyed) + return; + + base.StopListening(stack, destroyed); + } } } diff --git a/Runtime/VisualScripting.Flow/Framework/Time/Cooldown.cs b/Runtime/VisualScripting.Flow/Framework/Time/Cooldown.cs index eb949fb8..64df8f1e 100644 --- a/Runtime/VisualScripting.Flow/Framework/Time/Cooldown.cs +++ b/Runtime/VisualScripting.Flow/Framework/Time/Cooldown.cs @@ -141,7 +141,12 @@ public void StartListening(GraphStack stack) data.isListening = true; } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { var data = stack.GetElementData(this); @@ -152,6 +157,9 @@ public void StopListening(GraphStack stack) var hook = new EventHook(EventHooks.Update, stack.machine); EventBus.Unregister(hook, data.update); + + stack.ClearReference(); + data.update = null; data.isListening = false; } diff --git a/Runtime/VisualScripting.Flow/Framework/Time/Timer.cs b/Runtime/VisualScripting.Flow/Framework/Time/Timer.cs index 16d1f1a5..fd5afaf9 100644 --- a/Runtime/VisualScripting.Flow/Framework/Time/Timer.cs +++ b/Runtime/VisualScripting.Flow/Framework/Time/Timer.cs @@ -160,7 +160,12 @@ public void StartListening(GraphStack stack) data.isListening = true; } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { var data = stack.GetElementData(this); @@ -171,6 +176,9 @@ public void StopListening(GraphStack stack) var hook = new EventHook(EventHooks.Update, stack.machine); EventBus.Unregister(hook, data.update); + + stack.ClearReference(); + data.update = null; data.isListening = false; } diff --git a/Runtime/VisualScripting.Flow/ScriptMachine.cs b/Runtime/VisualScripting.Flow/ScriptMachine.cs index beab332d..f2cddb1a 100644 --- a/Runtime/VisualScripting.Flow/ScriptMachine.cs +++ b/Runtime/VisualScripting.Flow/ScriptMachine.cs @@ -41,7 +41,7 @@ protected override void OnUninstantiateWhileEnabled() if (hasGraph) { - graph.StopListening(reference); + graph.StopListening(reference, true); } } @@ -51,7 +51,16 @@ protected override void OnDisable() if (hasGraph) { - graph.StopListening(reference); + graph.StopListening(reference, false); + } + } + + protected override void OnDestroy() + { + base.OnDestroy(); + if (hasGraph) + { + graph.StopListening(reference, true); } } diff --git a/Runtime/VisualScripting.Flow/SubgraphUnit.cs b/Runtime/VisualScripting.Flow/SubgraphUnit.cs index 39de98e4..614f0482 100644 --- a/Runtime/VisualScripting.Flow/SubgraphUnit.cs +++ b/Runtime/VisualScripting.Flow/SubgraphUnit.cs @@ -146,13 +146,18 @@ public void StartListening(GraphStack stack) stack.GetElementData(this).isListening = true; } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { stack.GetElementData(this).isListening = false; if (stack.TryEnterParentElement(this)) { - nest.graph.StopListening(stack); + (nest.graph as IGraphEventListener).StopListening(stack, destroyed); stack.ExitParentElement(); } } diff --git a/Runtime/VisualScripting.Flow/Unit.cs b/Runtime/VisualScripting.Flow/Unit.cs index f4fe30d9..88c72aaa 100644 --- a/Runtime/VisualScripting.Flow/Unit.cs +++ b/Runtime/VisualScripting.Flow/Unit.cs @@ -66,7 +66,7 @@ public override void Uninstantiate(GraphReference instance) { if (this is IGraphEventListener listener) { - listener.StopListening(instance); + listener.StopListening(instance, true); } base.Uninstantiate(instance); diff --git a/Runtime/VisualScripting.State/FlowState.cs b/Runtime/VisualScripting.State/FlowState.cs index bebb1622..dc6b3b71 100644 --- a/Runtime/VisualScripting.State/FlowState.cs +++ b/Runtime/VisualScripting.State/FlowState.cs @@ -30,7 +30,7 @@ protected override void OnExitImplementation(Flow flow) if (flow.stack.TryEnterParentElement(this)) { flow.stack.TriggerEventHandler(hook => hook == StateEventHooks.OnExitState, new EmptyEventArgs(), parent => parent is SubgraphUnit, false); - nest.graph.StopListening(flow.stack); + (nest.graph as IGraphEventListener).StopListening(flow.stack, true); flow.stack.ExitParentElement(); } } @@ -44,11 +44,16 @@ public void StartListening(GraphStack stack) } } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + public void StopListening(GraphStack stack, bool destroyed) { if (stack.TryEnterParentElement(this)) { - nest.graph.StopListening(stack); + (nest.graph as IGraphEventListener).StopListening(stack, destroyed); stack.ExitParentElement(); } } diff --git a/Runtime/VisualScripting.State/FlowStateTransition.cs b/Runtime/VisualScripting.State/FlowStateTransition.cs index a4ed049a..e4056a81 100644 --- a/Runtime/VisualScripting.State/FlowStateTransition.cs +++ b/Runtime/VisualScripting.State/FlowStateTransition.cs @@ -56,7 +56,7 @@ public override void OnExit(Flow flow) if (flow.stack.TryEnterParentElement(this)) { flow.stack.TriggerEventHandler(hook => hook == StateEventHooks.OnExitState, new EmptyEventArgs(), parent => parent is SubgraphUnit, false); - nest.graph.StopListening(flow.stack); + (nest.graph as IGraphEventListener).StopListening(flow.stack, true); flow.stack.ExitParentElement(); } } @@ -70,11 +70,16 @@ public void StartListening(GraphStack stack) } } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { if (stack.TryEnterParentElement(this)) { - nest.graph.StopListening(stack); + (nest.graph as IGraphEventListener).StopListening(stack, destroyed); stack.ExitParentElement(); } } diff --git a/Runtime/VisualScripting.State/State.cs b/Runtime/VisualScripting.State/State.cs index d2691e6e..79184ba4 100644 --- a/Runtime/VisualScripting.State/State.cs +++ b/Runtime/VisualScripting.State/State.cs @@ -72,7 +72,7 @@ public override void Uninstantiate(GraphReference instance) { if (this is IGraphEventListener listener) { - listener.StopListening(instance); + listener.StopListening(instance, true); } base.Uninstantiate(instance); diff --git a/Runtime/VisualScripting.State/StateGraph.cs b/Runtime/VisualScripting.State/StateGraph.cs index 3cd7f963..a651f176 100644 --- a/Runtime/VisualScripting.State/StateGraph.cs +++ b/Runtime/VisualScripting.State/StateGraph.cs @@ -40,13 +40,18 @@ public void StartListening(GraphStack stack) activeStates.Free(); } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { var activeStates = GetActiveStatesNoAlloc(stack); foreach (var state in activeStates) { - (state as IGraphEventListener)?.StopListening(stack); + (state as IGraphEventListener)?.StopListening(stack, destroyed); } activeStates.Free(); diff --git a/Runtime/VisualScripting.State/StateTransition.cs b/Runtime/VisualScripting.State/StateTransition.cs index d4292d44..4b944358 100644 --- a/Runtime/VisualScripting.State/StateTransition.cs +++ b/Runtime/VisualScripting.State/StateTransition.cs @@ -56,7 +56,7 @@ public override void Uninstantiate(GraphReference instance) { if (this is IGraphEventListener listener) { - listener.StopListening(instance); + listener.StopListening(instance, true); } base.Uninstantiate(instance); diff --git a/Runtime/VisualScripting.State/SuperState.cs b/Runtime/VisualScripting.State/SuperState.cs index 33bc20e0..deabbd06 100644 --- a/Runtime/VisualScripting.State/SuperState.cs +++ b/Runtime/VisualScripting.State/SuperState.cs @@ -44,11 +44,16 @@ public void StartListening(GraphStack stack) } } - public void StopListening(GraphStack stack) + void IGraphEventListener.StopListening(GraphStack stack, bool destroyed) + => StopListening(stack, destroyed); + + public void StopListening(GraphStack stack) => StopListening(stack, true); + + private void StopListening(GraphStack stack, bool destroyed) { if (stack.TryEnterParentElement(this)) { - nest.graph.StopListening(stack); + (nest.graph as IGraphEventListener).StopListening(stack, destroyed); stack.ExitParentElement(); } } diff --git a/ValidationExceptions.json b/ValidationExceptions.json index 359fbe1a..a073f93c 100644 --- a/ValidationExceptions.json +++ b/ValidationExceptions.json @@ -3,7 +3,7 @@ [ { "ValidationTest": "API Validation", - "PackageVersion": "1.8.0" + "PackageVersion": "1.9.0" } ] } diff --git a/package.json b/package.json index b7155adb..184ee21d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.unity.visualscripting", "displayName": "Visual Scripting", - "version": "1.8.0", + "version": "1.9.0", "unity": "2021.3", "description": "Visual scripting is a workflow that uses visual, node-based graphs to design behaviors rather than write lines of C# script.\n\nEnabling artists, designers and programmers alike, visual scripting can be used to design final logic, quickly create prototypes, iterate on gameplay and create custom nodes to help streamline collaboration.\n\nVisual scripting is compatible with third-party APIs, including most packages, assets and custom libraries.", "type": "tool", @@ -10,14 +10,17 @@ "com.unity.modules.jsonserialize": "1.0.0" }, "relatedPackages": { - "com.unity.visualscripting.tests": "1.8.0" + "com.unity.visualscripting.tests": "1.9.0" + }, + "_upm": { + "changelog": "### Fixed\n- Fixed code for custom nodes being stripped in AOT builds when Managed Stripping Level is set to High [UVSB-2439](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2437)\n- Fixed OnInputSystemEvent doesn't trigger until Input Vector variates from 0.5 [UVSB-2435](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2435)\n- Fixed assembly disappearing from Node Library after domain reload. [UVSB-2459](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2459)\n- Fixed custom inspectors not being generated [UVSB-2466](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2466)\n- Fixed error when trying to load exceptions for TryCatch node dropdown [2463] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2463)\n- Fixed infinite amount of GameObjects created in Prefab mode when performing a null check of a scene variable in editor with an \"OnDrawGizmos\" event [UVSB-2453](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2453)\n- Removed corrupt mdb which caused the ScriptUpdater to fail [UVSB-2360](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2360)\n- Fixed Gradient graph variables resetting when entering PlayMode [UVSB-2334](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2334)\n- Fixed Memory leak after destroying object [UVSB-2427] (https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2427)\n- Fixed migration deserialization bug introduced in 1.8.0 [UVSB-2492](https://issuetracker.unity3d.com/issues/deserialization-error-when-upgrading-to-1-dot-8-0)\n\n### Added\n- Added a warning icon next to assemblies in Project Settings that reference Editor assemblies [UVSB-2382](https://issuetracker.unity3d.com/issues/nodes-from-runtime-assemblies-that-reference-unity-editor-are-not-visible-in-the-fuzzy-finder)\n\n### Changed\n- Script Graph Asset string data is unloaded after deserialization [UVSB-2367](https://issuetracker.unity3d.com/product/unity/issues/guid/UVSB-2366)\n- AOT Prebuild should take less memory and be faster (Added an optimization to AssetUtility.GetAllAssetsOfType)" }, "upmCi": { - "footprint": "216653b9b8371e118cd255206201ec635c66d806" + "footprint": "88cb0aea7e2efb665a6d11dc00f735e80c2a89b3" }, "repository": { "url": "https://github.cds.internal.unity3d.com/unity/com.unity.visualscripting.git", "type": "git", - "revision": "0de66378b19e990494d98f39ecc2b6aa5ac65351" + "revision": "21b38599b7fcf9bdccd964bdb90710e6a1094810" } }