Example #1
0
        void RemapAssetIds(StringBuilder log)
        {
            AssetIdRemapObject remapObject = new AssetIdRemapObject();

            JsonUtility.FromJsonOverwrite(m_RemapFile.text, remapObject);

            int remappedReferences = 0;
            int modifiedFiles      = 0;

            string[] assets    = k_AssetExtensionsToRemap.SelectMany(x => Directory.GetFiles("Assets", x, SearchOption.AllDirectories)).ToArray();
            var      failures  = new StringBuilder();
            var      successes = new StringBuilder();
            int      failCount = 0;

            for (int i = 0, c = assets.Length; i < c; i++)
            {
                EditorUtility.DisplayProgressBar("Asset Id Remap", assets[i], i / (float)c);

                int modified;

                if (!DoAssetIdentifierRemap(assets[i], remapObject.map, out modified))
                {
                    failures.AppendLine("  - " + assets[i]);
                    failCount++;
                }
                else
                {
                    if (modified > 0)
                    {
                        successes.AppendLine(string.Format("  - ({0}) references in {1}", modified.ToString(), assets[i]));
                        modifiedFiles++;
                    }
                }

                remappedReferences += modified;
            }

            EditorUtility.ClearProgressBar();

            log.AppendLine(string.Format("Remapped {0} references in {1} files.", remappedReferences.ToString(), modifiedFiles.ToString()));

            log.AppendLine(string.Format("\nFailed remapping {0} files:", failCount.ToString()));

            log.AppendLine(failCount > 0 ? failures.ToString() : "  - (none)");

            log.AppendLine("\nSuccessfully remapped files:");

            log.Append(successes);

            PackageImporter.Reimport(PackageImporter.EditorCorePackageManager);
            AssetDatabase.Refresh();
        }
Example #2
0
        ConversionReadyState GetReadyState()
        {
            var state = ConversionReadyState.Ready;

            if (ProjectContainsOldAssetIds())
            {
                state |= ConversionReadyState.DeprecatedAssetIdsFound;
            }

            if (PackageImporter.IsPreProBuilder4InProject())
            {
                state |= ConversionReadyState.AssetStoreInstallFound;
            }

            if (state == ConversionReadyState.Ready && PackageImporter.IsProBuilder4OrGreaterLoaded())
            {
                return(ConversionReadyState.NoActionRequired);
            }

            state |= ValidateProjectTextSerialized();
            state |= ValidateAssetStoreRemoval();

            return(state);
        }
Example #3
0
        public bool IsMonoScript()
        {
            if (m_InternalType == AssetType.Unknown)
            {
                if (m_Type.StartsWith(k_MonoScriptTypeString))
                {
                    m_InternalType = AssetType.MonoScript;

                    try
                    {
                        m_MonoScriptClass = m_Type.Split(k_MonoScriptTypeSplit, StringSplitOptions.RemoveEmptyEntries)[1];
                        if (m_LocalPath.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase))
                        {
                            m_IsEditorScript = m_LocalPath.StartsWith("Editor/") || m_LocalPath.Contains("/Editor/") || PackageImporter.IsEditorPluginEnabled(guid);
                        }
                        else
                        {
                            m_IsEditorScript = m_LocalPath.StartsWith("Editor/") || m_LocalPath.Contains("/Editor/");
                        }
                    }
                    catch
                    {
                        m_MonoScriptClass = "null";
//                      pb_Log.Debug("Failed parsing type from monoscript \"" + m_Name + "\" (" + m_Type + ")");
                    }
                }
                else
                {
                    m_InternalType = AssetType.Default;
                }
            }

            return(m_InternalType == AssetType.MonoScript);
        }
Example #4
0
 bool ProjectContainsOldAssetIds()
 {
     // todo this should only check with the loaded remap file, but for now it's hard-coded
     return(PackageImporter.IsPreProBuilder4InProject() || PackageImporter.DoesProjectContainDeprecatedGUIDs());
 }
Example #5
0
        void ResetAssetsToDelete()
        {
            m_DeprecatedProBuilderFound = PackageImporter.IsPreProBuilder4InProject();

            if (m_DeprecatedProBuilderFound && !ValidateAssetStoreProBuilderRoot(m_DeprecatedProBuilderDirectory))
            {
                m_DeprecatedProBuilderDirectory = FindAssetStoreProBuilderInstall();
            }

            // If still no old folder found (and PackageImporter tells us one exists), ask the user to point it out
            if (m_DeprecatedProBuilderFound && !ValidateAssetStoreProBuilderRoot(m_DeprecatedProBuilderDirectory))
            {
                int res = EditorUtility.DisplayDialogComplex(
                    "Could Not Find Existing ProBuilder Directory",
                    "Would you like to manually select the Asset Store installed ProBuilder folder and continue with the conversion process, or continue without removing old ProBuilder files (not recommended)?",
                    "Select Folder",
                    "Continue",
                    "Cancel");

                if (res == k_DialogOkay)
                {
                    // if they don't get it right after 3 attempts it's probably not going to happen and they'll be annoyed at
                    // an inescapable dialog loop
                    int userDirectoryPickAttempts = 0;

                    while (userDirectoryPickAttempts++ < 3)
                    {
                        m_DeprecatedProBuilderDirectory = EditorUtility.OpenFolderPanel("Select ProBuilder Directory", "Assets", "");

                        if (string.IsNullOrEmpty(m_DeprecatedProBuilderDirectory))
                        {
                            UnityEngine.Debug.LogWarning("Canceling ProBuilder Asset Store to Package Manager conversion. You may start this process again at any time by accessing the 'Tools>ProBuilder>Repair>Convert to ProBuilder 4' menu item.");
                            EditorApplication.delayCall += Close;
                            break;
                        }

                        if (ValidateAssetStoreProBuilderRoot(m_DeprecatedProBuilderDirectory))
                        {
                            // got a good directory, continue with process
                            break;
                        }
                        else
                        {
                            if (!EditorUtility.DisplayDialog("Selected Folder is not a ProBuilder Install",
                                                             "The folder selected not an old version of ProBuilder. Would you like to select a different directory?", "Yes",
                                                             "Cancel"))
                            {
                                EditorApplication.delayCall += Close;
                                break;
                            }
                        }
                    }
                }
                else if (res == k_DialogCancel)
                {
                    UnityEngine.Debug.LogWarning("Canceling ProBuilder Asset Store to Package Manager conversion. You may start this process again at any time by accessing the 'Tools>ProBuilder>Repair>Convert to ProBuilder 4' menu item.");
                    EditorApplication.delayCall += Close;
                }
            }

            m_AssetsToDeleteTreeView.directoryRoot = m_DeprecatedProBuilderDirectory;
            m_AssetsToDeleteTreeView.SetDirectoryIgnorePatterns(k_AssetStoreDirectorySuggestedDeleteIgnoreFilter);
            m_AssetsToDeleteTreeView.SetFileIgnorePatterns(k_AssetStoreSuggestedFileDeleteIgnoreFilter);
            m_AssetsToDeleteTreeView.Reload();
            m_AssetsToDeleteTreeView.ExpandAll();
            m_MultiColumnHeader.ResizeToFit();
            m_ConversionReadyState = GetReadyState();
        }