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(); }
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); }
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); }
bool ProjectContainsOldAssetIds() { // todo this should only check with the loaded remap file, but for now it's hard-coded return(PackageImporter.IsPreProBuilder4InProject() || PackageImporter.DoesProjectContainDeprecatedGUIDs()); }
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(); }