示例#1
0
        protected void Complete()
        {
            // Make sure all plugins are set to their latest version, even if they
            // don't have a migration to it.
            SetPluginVersionsToCurrent();

            AssetDatabase.SaveAssets();

            MigrationAnalytics.Send(analyticsData);

            var ok = EditorUtility.DisplayDialog("Unity Visual Scripting Upgrade",
                                                 "Migration complete!", "OK");

            UnityEditor.Compilation.CompilationPipeline.RequestScriptCompilation();
        }
示例#2
0
        public void OnUpdate()
        {
            // If there are no migration steps required, don't bother the user
            if (steps.Count <= 0)
            {
                SetPluginVersionsToCurrent();
                MigrationAnalytics.Send(analyticsData);
                return;
            }

            var firstVSPackageVersion = new SemanticVersion(1, 5, 0, "", 0);
            var olderVersionText      = BoltCore.Manifest.savedVersion < firstVSPackageVersion ? "Unity Visual Scripting (Bolt)" : "Unity Visual Scripting";

            if (EditorSettings.serializationMode != SerializationMode.ForceText)
            {
                EditorUtility.DisplayDialog("Unity Visual Scripting Upgrade",
                                            $"We've detected an older version of {olderVersionText}.\n\n" +
                                            "We can't migrate your project unless you use ForceText as your serialization mode. Go to Edit -> Project Settings -> Editor -> Asset Serialization -> Mode to set it.\n\n" +
                                            "Re-initiate the migration by installing the package.",
                                            "OK / Uninstall");

                Client.Remove("com.unity.visualscripting");
                return;
            }

            var ok = EditorUtility.DisplayDialog("Unity Visual Scripting Upgrade",
                                                 $"We've detected an older version of {olderVersionText}.\n\n" +
                                                 "Your project and bolt assets will be backed up and migrated to work with the newest version. This can take a few minutes.",
                                                 "Migrate My Project", "Cancel / Uninstall");

            if (!ok)
            {
                Client.Remove("com.unity.visualscripting");
                return;
            }

            VSBackupUtility.Backup();

            // ClearLog();

            for (var i = 0; i < steps.Count; ++i)
            {
                var step = steps[i];
                step.Reset();
                step.Run();

                if (step.state == MigrationStep.State.Failure)
                {
                    Debug.LogWarning(
                        $"VisualScripting - A migration step for {step.plugin.id} failed! Your project might be in an invalid state, restore your backup and try again...");
                    analyticsData.steps[i].success   = false;
                    analyticsData.steps[i].exception = AnalyticsUtilities.AnonymizeException(step.exception);
                    analyticsData.total.success      = false;
                    break;
#if VISUAL_SCRIPT_DEBUG_MIGRATION
                    throw step.exception;
#endif
                }
                else
                {
                    analyticsData.steps[i].success = true;
                }
            }

            Complete();
        }