1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System.IO;
- using UnityEngine;
- using UnityEditorInternal;
-
- namespace UnityEditor.Rendering.Universal
- {
- internal class UniversalProjectSettings : ScriptableObject
- {
- public static string filePath => "ProjectSettings/URPProjectSettings.asset";
-
- //preparing to eventual migration later
- enum Version
- {
- None,
- First
- }
-
- [SerializeField]
- int m_LastMaterialVersion = k_NeverProcessedMaterialVersion;
-
- internal const int k_NeverProcessedMaterialVersion = -1;
-
- public static int materialVersionForUpgrade
- {
- get => instance.m_LastMaterialVersion;
- set
- {
- instance.m_LastMaterialVersion = value;
- }
- }
-
- //singleton pattern
- static UniversalProjectSettings s_Instance;
- static UniversalProjectSettings instance => s_Instance ?? CreateOrLoad();
- UniversalProjectSettings()
- {
- s_Instance = this;
- }
-
- static UniversalProjectSettings CreateOrLoad()
- {
- //try load
- InternalEditorUtility.LoadSerializedFileAndForget(filePath);
-
- //else create
- if (s_Instance == null)
- {
- UniversalProjectSettings created = CreateInstance<UniversalProjectSettings>();
- created.hideFlags = HideFlags.HideAndDontSave;
- }
-
- System.Diagnostics.Debug.Assert(s_Instance != null);
- return s_Instance;
- }
-
- internal static void Save()
- {
- if (s_Instance == null)
- {
- Debug.Log("Cannot save ScriptableSingleton: no instance!");
- return;
- }
-
- string folderPath = Path.GetDirectoryName(filePath);
- if (!Directory.Exists(folderPath))
- Directory.CreateDirectory(folderPath);
-
- InternalEditorUtility.SaveToSerializedFileAndForget(new[] { s_Instance }, filePath, allowTextSerialization: true);
- }
- }
- }
|