A game about forced loneliness, made by TACStudios
1using UnityEngine;
2
3namespace Unity.VisualScripting
4{
5 public static class ApplicationVariables
6 {
7 public const string assetPath = "ApplicationVariables";
8
9 private static VariablesAsset _asset;
10
11 public static VariablesAsset asset
12 {
13 get
14 {
15 if (_asset == null)
16 {
17 Load();
18 }
19
20 return _asset;
21 }
22 }
23
24 public static void Load()
25 {
26 _asset = Resources.Load<VariablesAsset>(assetPath) ?? ScriptableObject.CreateInstance<VariablesAsset>();
27 }
28
29 public static VariableDeclarations runtime { get; private set; }
30
31 public static VariableDeclarations initial => asset.declarations;
32
33 public static VariableDeclarations current => Application.isPlaying ? runtime : initial;
34
35 public static void OnEnterEditMode()
36 {
37 DestroyRuntimeDeclarations(); // Required because assemblies don't reload on play mode exit
38 }
39
40 public static void OnExitEditMode() { }
41
42 internal static void OnEnterPlayMode()
43 {
44 CreateRuntimeDeclarations();
45 }
46
47 internal static void OnExitPlayMode() { }
48
49 private static void CreateRuntimeDeclarations()
50 {
51 runtime = asset.declarations.CloneViaFakeSerialization();
52 }
53
54 private static void DestroyRuntimeDeclarations()
55 {
56 runtime = null;
57 }
58 }
59}