From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:08:29 +0800 Subject: + astar project --- .../PackageTools/Editor/LegacyEditorHelper.cs | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/PackageTools/Editor/LegacyEditorHelper.cs (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/PackageTools/Editor/LegacyEditorHelper.cs') diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/PackageTools/Editor/LegacyEditorHelper.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/PackageTools/Editor/LegacyEditorHelper.cs new file mode 100644 index 0000000..45d2dab --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/PackageTools/Editor/LegacyEditorHelper.cs @@ -0,0 +1,29 @@ +using UnityEngine; +using UnityEditor; +using System.Linq; + +namespace Pathfinding.Legacy { + public static class LegacyEditorHelper { + public static void UpgradeDialog (Object[] targets, System.Type upgradeType) { + EditorGUILayout.BeginVertical(EditorStyles.helpBox); + var gui = EditorGUIUtility.IconContent("console.warnicon"); + gui.text = "You are using the compatibility version of this component. It is recommended that you upgrade to the newer version. This may change the component's behavior."; + EditorGUILayout.LabelField(GUIContent.none, gui, EditorStyles.wordWrappedMiniLabel); + if (GUILayout.Button("Upgrade")) { + Undo.RecordObjects(targets.Select(s => (s as Component).gameObject).ToArray(), "Upgrade from Legacy Component"); + foreach (var tg in targets) { + var comp = tg as Component; + var components = comp.gameObject.GetComponents(); + int index = System.Array.IndexOf(components, comp); + var newRVO = Undo.AddComponent(comp.gameObject, upgradeType); + foreach (var field in newRVO.GetType().GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public)) { + field.SetValue(newRVO, field.GetValue(comp)); + } + Undo.DestroyObjectImmediate(comp); + for (int i = components.Length - 1; i > index; i--) UnityEditorInternal.ComponentUtility.MoveComponentUp(newRVO); + } + } + EditorGUILayout.EndVertical(); + } + } +} -- cgit v1.1-26-g67d0