void OnCreateSceneTemplatePipeline()
        {
            var assetPath   = AssetDatabase.GetAssetPath(serializedObject.targetObject.GetInstanceID());
            var fileInfo    = new FileInfo(assetPath);
            var folder      = fileInfo.DirectoryName;
            var scriptAsset = SceneTemplateService.CreateNewSceneTemplatePipeline(folder) as MonoScript;

            if (scriptAsset == null)
            {
                return;
            }
            var pipelineProperty = serializedObject.FindProperty(SceneTemplateUtils.TemplatePipelineName);

            pipelineProperty.objectReferenceValue = scriptAsset;
            serializedObject.ApplyModifiedProperties();
        }
        private static bool CreateSceneFromTemplate(string templateAssetPath, bool loadAdditively)
        {
            var sceneAsset = AssetDatabase.LoadAssetAtPath <SceneTemplateAsset>(templateAssetPath);

            if (sceneAsset == null)
            {
                return(false);
            }
            if (!sceneAsset.isValid)
            {
                UnityEngine.Debug.LogError("Cannot instantiate scene template: scene is null or deleted.");
                return(false);
            }

            return(SceneTemplateService.Instantiate(sceneAsset, loadAdditively, null, SceneTemplateAnalytics.SceneInstantiationType.NewSceneMenu) != null);
        }