using UnityEngine;
namespace Unity.VisualScripting
{
/// <summary>
/// Listens to the OnApplicationQuit on OnApplicationPause
/// hooks to trigger the serialization of saved variables into PlayerPrefs.
/// </summary>
[Singleton(Name = "VisualScripting SavedVariablesSerializer", Automatic = true, Persistent = true)]
[AddComponentMenu("")]
[DisableAnnotation]
[IncludeInSettings(false)]
[VisualScriptingHelpURL(typeof(VariablesSaver))]
public class VariablesSaver : MonoBehaviour, ISingleton
{
private void Awake()
{
Singleton<VariablesSaver>.Awake(this);
}
private void OnDestroy()
{
Singleton<VariablesSaver>.OnDestroy(this);
}
private void OnApplicationQuit()
{
SavedVariables.OnExitPlayMode();
ApplicationVariables.OnExitPlayMode();
}
private void OnApplicationPause(bool isPaused)
{
if (!isPaused)
{
return;
}
SavedVariables.OnExitPlayMode();
ApplicationVariables.OnExitPlayMode();
}
public static VariablesSaver instance => Singleton<VariablesSaver>.instance;
public static void Instantiate() => Singleton<VariablesSaver>.Instantiate();
}
}