public SceneTemplateCreationEvent(SceneTemplateAsset template, TemplateCreationType templateCreationType) { this.templateCreationType = Enum.GetName(typeof(TemplateCreationType), templateCreationType); sceneName = AssetDatabase.GetAssetPath(template.templateScene); hasCloneableDependencies = FillAnalyticDepInfos(template, dependencyInfos); numberOfTemplatesInProject = SceneTemplateUtils.GetSceneTemplatePaths().Count(); }
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); }