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();
 }
Ejemplo n.º 2
0
        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);
        }