VR4Medical/ICI/Library/PackageCache/com.unity.learn.iet-framework@4bd5247958fc/Editor/Utils/WindowCache.cs
2025-07-29 13:45:50 +03:00

137 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace Unity.Tutorials.Core.Editor
{
internal interface IWindowCache
{
void Clear();
string CurrentView { get; set; }
string PreviousView { get; set; }
bool DomainReloadOccured { get; set; }
bool IsOpen { get; set; }
bool AreTestsRunning { get; set; }
bool PlayModeChanging { get; set; }
Tutorial CurrentTutorial { get; set; }
List<SceneInfo> ActiveScenesBeforeTutorialStarted { get; set; }
SceneViewState SceneViewStateBeforeTutorialStarted { get; set; }
}
[Location("Cache/Window.yml", LocationAttribute.Location.LibraryFolder)]
internal class WindowCache : ScriptableObjectSingleton<WindowCache>, IWindowCache
{
public event Action<IWindowCache> BeforeSerialize;
public void Serialize()
{
BeforeSerialize?.Invoke(this);
Save();
}
public void Clear()
{
CurrentView = default;
PreviousView = default;
DomainReloadOccured = default;
IsOpen = default;
AreTestsRunning = default;
PlayModeChanging = default;
CurrentTutorial = default;
ActiveScenesBeforeTutorialStarted = default;
SceneViewStateBeforeTutorialStarted = default;
}
string IWindowCache.CurrentView
{
get => CurrentView;
set => CurrentView = value;
}
string IWindowCache.PreviousView
{
get => PreviousView;
set => PreviousView = value;
}
bool IWindowCache.DomainReloadOccured
{
get => DomainReloadOccured;
set => DomainReloadOccured = value;
}
bool IWindowCache.IsOpen
{
get => IsOpen;
set => IsOpen = value;
}
bool IWindowCache.AreTestsRunning
{
get => AreTestsRunning;
set => AreTestsRunning = value;
}
Tutorial IWindowCache.CurrentTutorial
{
get => CurrentTutorial;
set => CurrentTutorial = value;
}
bool IWindowCache.PlayModeChanging
{
get => PlayModeChanging;
set => PlayModeChanging = value;
}
List<SceneInfo> IWindowCache.ActiveScenesBeforeTutorialStarted
{
get => ActiveScenesBeforeTutorialStarted;
set => ActiveScenesBeforeTutorialStarted = value;
}
SceneViewState IWindowCache.SceneViewStateBeforeTutorialStarted
{
get => SceneViewStateBeforeTutorialStarted;
set => SceneViewStateBeforeTutorialStarted = value;
}
[SerializeField]
internal string CurrentView;
[SerializeField]
internal string PreviousView;
[SerializeField]
internal bool DomainReloadOccured;
[SerializeField]
internal bool IsOpen;
[SerializeField]
internal bool AreTestsRunning;
[SerializeField]
internal Tutorial CurrentTutorial;
[SerializeField]
internal bool PlayModeChanging;
[SerializeField]
internal List<SceneInfo> ActiveScenesBeforeTutorialStarted;
[SerializeField]
internal SceneViewState SceneViewStateBeforeTutorialStarted;
}
[Serializable]
internal class SelectedItemsDictionary : SerializableDictionary<string, bool>
{
public SelectedItemsDictionary() { }
public SelectedItemsDictionary(IDictionary<string, bool> dictionary) : base(dictionary) { }
}
}