private static Tuple <string, SceneTemplateAsset> CreateTemplateFromScene(SceneAsset sourceScene)
    {
        var templatePath  = Path.Combine(TestUtils.k_TestGeneratedFolder, "CreateTemplateFromSceneTest_template.asset").Replace("\\", "/");
        var sceneTemplate = SceneTemplate.CreateTemplateFromScene(sourceScene, templatePath);

        return(Tuple.Create(templatePath, sceneTemplate));
    }
    public void Init()
    {
        TestUtils.CreateFolder(TestUtils.k_TestGeneratedFolder);

        // Create a new scene and a scene template for it
        var newScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects, NewSceneMode.Single);

        EditorSceneManager.SaveScene(newScene, TestUtils.k_AssetsTempScene);
        var newSceneAsset      = AssetDatabase.LoadAssetAtPath <SceneAsset>(TestUtils.k_AssetsTempScene);
        var sceneTemplateAsset = SceneTemplate.CreateTemplateFromScene(newSceneAsset, TestUtils.k_AssetsTempSceneTemplate);

        sceneTemplateAsset.templateName = "Test title";
        sceneTemplateAsset.description  = "Test description";
        sceneTemplateAsset.preview      = Texture2D.whiteTexture;
    }
    private static bool GenerateNoCloneSceneSetup()
    {
        var sceneTemplateAsset = AssetDatabase.LoadAssetAtPath <SceneTemplateAsset>(TestUtils.k_NoCloneGeneratedTemplate);

        if (sceneTemplateAsset != null)
        {
            return(true);
        }

        var inProjectTestScenePath = Path.Combine(TestUtils.k_TestGeneratedTemplateFolder, TestUtils.k_NoCloneSceneName);
        var result = AssetDatabase.CopyAsset(TestUtils.k_NoCloneScene, inProjectTestScenePath);

        if (!result)
        {
            return(false);
        }
        var sceneAsset = AssetDatabase.LoadAssetAtPath <SceneAsset>(inProjectTestScenePath);

        if (sceneAsset == null)
        {
            return(false);
        }

        SceneTemplate.CreateTemplateFromScene(sceneAsset, TestUtils.k_NoCloneGeneratedTemplate);
        sceneTemplateAsset = AssetDatabase.LoadAssetAtPath <SceneTemplateAsset>(TestUtils.k_NoCloneGeneratedTemplate);
        if (sceneTemplateAsset == null)
        {
            return(false);
        }

        foreach (var dep in sceneTemplateAsset.dependencies)
        {
            dep.instantiationMode = TemplateInstantiationMode.Reference;
        }

        EditorUtility.SetDirty(sceneTemplateAsset);
        AssetDatabase.SaveAssets();

        return(true);
    }