private static List <SceneTemplateInfo> GetSceneTemplateInfos() { var sceneTemplateList = new List <SceneTemplateInfo>(); // Add the special Empty and Basic template s_EmptySceneTemplateInfo.isPinned = SceneTemplateProjectSettings.Get().GetPinState(s_EmptySceneTemplateInfo.name); s_BasicSceneTemplateInfo.isPinned = SceneTemplateProjectSettings.Get().GetPinState(s_BasicSceneTemplateInfo.name); // Check for real templateAssets: var sceneTemplateAssetInfos = SceneTemplateUtils.GetSceneTemplatePaths().Select(templateAssetPath => { var sceneTemplateAsset = AssetDatabase.LoadAssetAtPath <SceneTemplateAsset>(templateAssetPath); return(Tuple.Create(templateAssetPath, sceneTemplateAsset)); }) .Where(templateData => { if (templateData.Item2 == null) { return(false); } if (!templateData.Item2.IsValid) { return(false); } var pipeline = templateData.Item2.CreatePipeline(); if (pipeline == null) { return(true); } return(pipeline.IsValidTemplateForInstantiation(templateData.Item2)); }). Select(templateData => { var assetName = Path.GetFileNameWithoutExtension(templateData.Item1); var isReadOnly = false; if (templateData.Item1.StartsWith("Packages/") && AssetDatabase.GetAssetFolderInfo(templateData.Item1, out var isRootFolder, out var isImmutable)) { isReadOnly = isImmutable; } return(new SceneTemplateInfo { name = string.IsNullOrEmpty(templateData.Item2.templateName) ? assetName : templateData.Item2.templateName, isPinned = templateData.Item2.addToDefaults, isReadonly = isReadOnly, assetPath = templateData.Item1, description = templateData.Item2.description, thumbnail = templateData.Item2.preview, sceneTemplate = templateData.Item2, onCreateCallback = loadAdditively => CreateSceneFromTemplate(templateData.Item1, loadAdditively) }); }).ToList(); sceneTemplateAssetInfos.Sort(); sceneTemplateList.AddRange(sceneTemplateAssetInfos); sceneTemplateList.Add(s_EmptySceneTemplateInfo); sceneTemplateList.Add(s_BasicSceneTemplateInfo); return(sceneTemplateList); }
public override void OnInspectorGUI() { if (packageSelectionObject == null) { EditorGUILayout.HelpBox(L10n.Tr("This package is not accessible anymore."), MessageType.Error); return; } if (m_Package == null || m_Version == null) { m_PackageDatabase.GetPackageAndVersion(packageSelectionObject.packageUniqueId, packageSelectionObject.versionUniqueId, out m_Package, out m_Version); if (m_Package == null || m_Version == null) { EditorGUILayout.HelpBox(L10n.Tr("This package is not accessible anymore."), MessageType.Error); return; } var immutable = true; m_ShouldBeEnabled = true; if (!m_Version.isInstalled || AssetDatabase.GetAssetFolderInfo("Packages/" + m_Package.name, out var rootFolder, out immutable)) { m_ShouldBeEnabled = !immutable; } } var dependencies = new List <DependencyInfo>(); if (m_Version.dependencies != null) { dependencies.AddRange(m_Version.dependencies); } m_List = new ReorderableList(dependencies, typeof(DependencyInfo), false, true, false, false) { drawElementCallback = DrawDependencyListElement, drawHeaderCallback = DrawDependencyHeaderElement, elementHeight = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing }; var previousEnabled = GUI.enabled; GUI.enabled = m_ShouldBeEnabled; // Package information GUILayout.Label(Styles.information, EditorStyles.boldLabel); DoPackageInformationLayout(); // Package description GUILayout.Label(Styles.description, EditorStyles.boldLabel); DoPackageDescriptionLayout(); // Package dependencies GUILayout.Label(Styles.dependencies, EditorStyles.boldLabel); m_List.DoLayoutList(); GUI.enabled = previousEnabled; }
bool IsNonInternalizedPackagePath(string file) { if (UnityEditor.PackageManager.Folders.IsPackagedAssetPath(file)) { bool rootFolder, readOnly; bool validPath = AssetDatabase.GetAssetFolderInfo(file, out rootFolder, out readOnly); return(!validPath || readOnly); } return(false); }
public virtual bool GetAssetFolderInfo(string path, out bool rootFolder, out bool immutable) { return(AssetDatabase.GetAssetFolderInfo(path, out rootFolder, out immutable)); }
internal static List <SceneTemplateInfo> GetSceneTemplateInfos() { var sceneTemplateList = new List <SceneTemplateInfo>(); // Add the special Empty and Basic template foreach (var builtinTemplateInfo in builtinTemplateInfos) { builtinTemplateInfo.isPinned = SceneTemplateProjectSettings.Get().GetPinState(builtinTemplateInfo.name); } // Check for real templateAssets: var sceneTemplateAssetInfos = GetSceneTemplates().Select(sceneTemplateAsset => { var templateAssetPath = AssetDatabase.GetAssetPath(sceneTemplateAsset.GetInstanceID()); return(Tuple.Create(templateAssetPath, sceneTemplateAsset)); }) .Where(templateData => { if (templateData.Item2 == null) { return(false); } if (!templateData.Item2.isValid) { return(false); } var pipeline = templateData.Item2.CreatePipeline(); if (pipeline == null) { return(true); } return(pipeline.IsValidTemplateForInstantiation(templateData.Item2)); }). Select(templateData => { var assetName = Path.GetFileNameWithoutExtension(templateData.Item1); var isReadOnly = false; if (templateData.Item1.StartsWith("Packages/") && AssetDatabase.GetAssetFolderInfo(templateData.Item1, out var isRootFolder, out var isImmutable)) { isReadOnly = isImmutable; } return(new SceneTemplateInfo { name = string.IsNullOrEmpty(templateData.Item2.templateName) ? assetName : templateData.Item2.templateName, isPinned = templateData.Item2.addToDefaults, isReadonly = isReadOnly, assetPath = templateData.Item1, description = templateData.Item2.description, thumbnail = templateData.Item2.preview, badge = templateData.Item2.badge, sceneTemplate = templateData.Item2, onCreateCallback = loadAdditively => CreateSceneFromTemplate(templateData.Item1, loadAdditively) }); }).ToList(); sceneTemplateAssetInfos.Sort(); sceneTemplateList.AddRange(sceneTemplateAssetInfos); if (EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D) { sceneTemplateList.AddRange(builtin2DTemplateInfos); } else { sceneTemplateList.AddRange(builtin3DTemplateInfos); } return(sceneTemplateList); }