net.dreditor.roombuilding 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.attestation.p7m +0 -0
- package/DREditor.RoomBuilding.asmdef +28 -28
- package/DREditor.RoomBuilding.asmdef.meta +7 -7
- package/Editor/DREditor.RoomBuilding.Editor.asmdef +19 -19
- package/Editor/DREditor.RoomBuilding.Editor.asmdef.meta +7 -7
- package/Editor/FindCharactersInRoomsWizard.cs +55 -55
- package/Editor/FindCharactersInRoomsWizard.cs.meta +11 -11
- package/Editor/RoomBuilderContainsObjective.cs +38 -38
- package/Editor/RoomBuilderContainsObjective.cs.meta +11 -11
- package/Editor/RoomBuilderScanWizard.cs +90 -90
- package/Editor/RoomBuilderScanWizard.cs.meta +11 -11
- package/Editor/ScanRoomBuilders.cs +74 -74
- package/Editor/ScanRoomBuilders.cs.meta +11 -11
- package/Editor.meta +8 -8
- package/Implementation/Actors/ActorData.cs +115 -115
- package/Implementation/Actors/ActorData.cs.meta +11 -11
- package/Implementation/Actors/ActorStateData.cs +10 -10
- package/Implementation/Actors/ActorStateData.cs.meta +11 -11
- package/Implementation/Actors/ActorStateLoader.cs +344 -344
- package/Implementation/Actors/ActorStateLoader.cs.meta +11 -11
- package/Implementation/Actors/TActorData.cs +35 -35
- package/Implementation/Actors/TActorData.cs.meta +11 -11
- package/Implementation/Actors/TrialActorManager.cs +157 -157
- package/Implementation/Actors/TrialActorManager.cs.meta +11 -11
- package/Implementation/Actors.meta +8 -8
- package/Implementation/DoorLoader.cs +117 -117
- package/Implementation/DoorLoader.cs.meta +11 -11
- package/Implementation/DoorLoaderUtility.cs +51 -51
- package/Implementation/DoorLoaderUtility.cs.meta +11 -11
- package/Implementation/DoorStateData.cs +11 -11
- package/Implementation/DoorStateData.cs.meta +11 -11
- package/Implementation/ItemActorLoader.cs +157 -157
- package/Implementation/ItemActorLoader.cs.meta +11 -11
- package/Implementation/ItemData.cs +67 -67
- package/Implementation/ItemData.cs.meta +11 -11
- package/Implementation/ItemStateData.cs +10 -10
- package/Implementation/ItemStateData.cs.meta +11 -11
- package/Implementation/MoveLoader.cs +67 -67
- package/Implementation/MoveLoader.cs.meta +11 -11
- package/Implementation/MoveStateData.cs +11 -11
- package/Implementation/MoveStateData.cs.meta +11 -11
- package/Implementation/RoomStateHandlerBase.cs +241 -241
- package/Implementation/RoomStateHandlerBase.cs.meta +11 -11
- package/Implementation/SaveableData.cs +56 -56
- package/Implementation/SaveableData.cs.meta +11 -11
- package/Implementation/SaveableDataSet.cs +66 -66
- package/Implementation/SaveableDataSet.cs.meta +11 -11
- package/Implementation/SaveableManager.cs +70 -70
- package/Implementation/SaveableManager.cs.meta +11 -11
- package/Implementation/SaveableStateData.cs +10 -10
- package/Implementation/SaveableStateData.cs.meta +11 -11
- package/Implementation/SpawnableLoader.cs +125 -125
- package/Implementation/SpawnableLoader.cs.meta +11 -11
- package/Implementation/SpawnableStateData.cs +11 -11
- package/Implementation/SpawnableStateData.cs.meta +11 -11
- package/Implementation/StateDataAsset.cs +28 -28
- package/Implementation/StateDataAsset.cs.meta +11 -11
- package/Implementation/SubAreaLoader.cs +108 -108
- package/Implementation/SubAreaLoader.cs.meta +11 -11
- package/Implementation/SubAreaStateData.cs +11 -11
- package/Implementation/SubAreaStateData.cs.meta +11 -11
- package/Implementation/TriggerConverter.cs +137 -137
- package/Implementation/TriggerConverter.cs.meta +11 -11
- package/Implementation/TriggerLoader.cs +295 -295
- package/Implementation/TriggerLoader.cs.meta +11 -11
- package/Implementation/TriggerStateData.cs +18 -18
- package/Implementation/TriggerStateData.cs.meta +11 -11
- package/Implementation.meta +8 -8
- package/InstanceListWrapper.cs +23 -23
- package/InstanceListWrapper.cs.meta +11 -11
- package/Instances/ConvertInstanceData.cs +89 -89
- package/Instances/ConvertInstanceData.cs.meta +11 -11
- package/Instances/InstanceData.cs +43 -43
- package/Instances/InstanceData.cs.meta +11 -11
- package/Instances/InstanceStateData.cs +51 -51
- package/Instances/InstanceStateData.cs.meta +11 -11
- package/Instances/RoomInstanceData.cs +68 -68
- package/Instances/RoomInstanceData.cs.meta +11 -11
- package/Instances/RoomInstanceManager.cs +452 -452
- package/Instances/RoomInstanceManager.cs.meta +11 -11
- package/Instances.meta +8 -8
- package/LoadInvestigationRoomState.cs +53 -53
- package/LoadInvestigationRoomState.cs.meta +11 -11
- package/Old/ActorLoader.cs +382 -382
- package/Old/ActorLoader.cs.meta +11 -11
- package/Old/Room.cs +24 -24
- package/Old/Room.cs.meta +11 -11
- package/Old/RoomBuilder.cs +59 -59
- package/Old/RoomBuilder.cs.meta +11 -11
- package/Old/RoomData.cs +90 -90
- package/Old/RoomData.cs.meta +11 -11
- package/Old/RoomManager.cs +256 -256
- package/Old/RoomManager.cs.meta +11 -11
- package/Old/RoomManagerDisplayEditor.cs +72 -72
- package/Old/RoomManagerDisplayEditor.cs.meta +11 -11
- package/Old/RoomManagerEditor.cs +211 -211
- package/Old/RoomManagerEditor.cs.meta +11 -11
- package/Old/RoomManagerShellDisplayEditor.cs +48 -48
- package/Old/RoomManagerShellDisplayEditor.cs.meta +11 -11
- package/Old/RoomSection.cs +35 -35
- package/Old/RoomSection.cs.meta +11 -11
- package/Old.meta +8 -8
- package/RoomManagerBase.cs +84 -84
- package/RoomManagerBase.cs.meta +11 -11
- package/RoomManagerEditorBase.cs +86 -86
- package/RoomManagerEditorBase.cs.meta +11 -11
- package/RoomManagerEditorCoreBase.cs +159 -159
- package/RoomManagerEditorCoreBase.cs.meta +11 -11
- package/RoomSaveDisplayEditorBase.cs +111 -111
- package/RoomSaveDisplayEditorBase.cs.meta +11 -11
- package/RoomShellDisplayEditorBase.cs +68 -68
- package/RoomShellDisplayEditorBase.cs.meta +11 -11
- package/RoomStateBuilder.cs +53 -53
- package/RoomStateBuilder.cs.meta +11 -11
- package/RoomStateData.cs +58 -58
- package/RoomStateData.cs.meta +11 -11
- package/RoomStateManager.cs +202 -202
- package/RoomStateManager.cs.meta +11 -11
- package/RoomStateManagerEditor.cs +392 -392
- package/RoomStateManagerEditor.cs.meta +11 -11
- package/RoomStateSaveDisplayEditor.cs +175 -175
- package/RoomStateSaveDisplayEditor.cs.meta +11 -11
- package/RoomStateSection.cs +69 -69
- package/RoomStateSection.cs.meta +11 -11
- package/RoomStateShellDisplayEditor.cs +108 -108
- package/RoomStateShellDisplayEditor.cs.meta +11 -11
- package/{Samples → Samples~}/Room_State_Manager.prefab +473 -473
- package/{Samples → Samples~}/Room_State_Manager.prefab.meta +7 -7
- package/{Samples → Samples~}/Trial_Actor_Manager.prefab +51 -51
- package/{Samples → Samples~}/Trial_Actor_Manager.prefab.meta +7 -7
- package/package.json +51 -46
- package/package.json.meta +7 -7
- package/Samples.meta +0 -8
|
@@ -1,242 +1,242 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.RoomStateBuilding;
|
|
3
|
-
using System.Collections.Generic;
|
|
4
|
-
using System.IO;
|
|
5
|
-
#if UNITY_EDITOR
|
|
6
|
-
using UnityEditor;
|
|
7
|
-
#endif
|
|
8
|
-
using UnityEngine;
|
|
9
|
-
|
|
10
|
-
namespace DREditor.RoomBuilding.Implementation
|
|
11
|
-
{
|
|
12
|
-
/// <summary>
|
|
13
|
-
///
|
|
14
|
-
/// </summary>
|
|
15
|
-
/// <typeparam name="T"></typeparam>
|
|
16
|
-
/// <typeparam name="T2"></typeparam>
|
|
17
|
-
public abstract class RoomStateHandlerBase<T, T2> : MonoBehaviour, IRoomStateSaver, IRoomStateLoader where T : StateDataAsset<T2>
|
|
18
|
-
{
|
|
19
|
-
/// <summary>
|
|
20
|
-
///
|
|
21
|
-
/// </summary>
|
|
22
|
-
[Header("")]
|
|
23
|
-
[Divider]
|
|
24
|
-
[Header("")]
|
|
25
|
-
[Divider]
|
|
26
|
-
[Tooltip("")]
|
|
27
|
-
[SerializeField] string handlerTypeName = "";
|
|
28
|
-
|
|
29
|
-
/// <summary>
|
|
30
|
-
///
|
|
31
|
-
/// </summary>
|
|
32
|
-
[Tooltip("")]
|
|
33
|
-
[SerializeField] string dataAssetName = "";
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/// <summary>
|
|
37
|
-
///
|
|
38
|
-
/// </summary>
|
|
39
|
-
[Header("")]
|
|
40
|
-
[Divider]
|
|
41
|
-
[Tooltip("")]
|
|
42
|
-
[SerializeField] protected List<T2> loadedBaseDatas;
|
|
43
|
-
|
|
44
|
-
/// <summary>
|
|
45
|
-
///
|
|
46
|
-
/// </summary>
|
|
47
|
-
[Tooltip("")]
|
|
48
|
-
[SerializeField] protected List<T2> loadedInstances = null;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
public virtual string GetTypeName() => handlerTypeName;
|
|
52
|
-
|
|
53
|
-
public virtual void LoadData(List<ScriptableObject> roomSO)
|
|
54
|
-
{
|
|
55
|
-
T data = GetDataAsset<T>(roomSO);
|
|
56
|
-
|
|
57
|
-
if (data != null)
|
|
58
|
-
LoadAssetData(data.datas);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public virtual void LoadInstance(List<ScriptableObject> roomSO, object instanceData)
|
|
62
|
-
{
|
|
63
|
-
string instanceJson = (string)instanceData;
|
|
64
|
-
|
|
65
|
-
List<T2> instanceAssetData = new();
|
|
66
|
-
|
|
67
|
-
try
|
|
68
|
-
{
|
|
69
|
-
var assetData = JsonUtility.FromJson<InstanceListWrapper<InstanceListWrapper<string>>>(instanceJson);
|
|
70
|
-
|
|
71
|
-
foreach (var stateSection in assetData.wrappedInstances)
|
|
72
|
-
{
|
|
73
|
-
foreach (var dataInstance in stateSection.wrappedInstances)
|
|
74
|
-
{
|
|
75
|
-
try
|
|
76
|
-
{
|
|
77
|
-
if (LoadedInstanceValid(dataInstance, out T2 result))
|
|
78
|
-
instanceAssetData.Add(result);
|
|
79
|
-
}
|
|
80
|
-
catch { }
|
|
81
|
-
|
|
82
|
-
//break; // Commented out because actor instance data wasn't being loaded properly.
|
|
83
|
-
// But it is unknown if this break was actually needed.
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch
|
|
88
|
-
{
|
|
89
|
-
instanceAssetData = JsonUtility.FromJson<List<T2>>(instanceJson);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
T data = GetDataAsset<T>(roomSO);
|
|
93
|
-
|
|
94
|
-
if (data != null)
|
|
95
|
-
LoadAssetData(data.datas, instanceAssetData);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/// <summary>
|
|
99
|
-
///
|
|
100
|
-
/// </summary>
|
|
101
|
-
/// <param name="dataInstance"></param>
|
|
102
|
-
/// <param name="result"></param>
|
|
103
|
-
/// <returns></returns>
|
|
104
|
-
protected virtual bool LoadedInstanceValid(string dataInstance, out T2 result)
|
|
105
|
-
{
|
|
106
|
-
string emptyBaseline = JsonUtility.ToJson(JsonUtility.FromJson<T2>("{}"));
|
|
107
|
-
|
|
108
|
-
result = JsonUtility.FromJson<T2>(dataInstance);
|
|
109
|
-
|
|
110
|
-
return JsonUtility.ToJson(result) != emptyBaseline;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
public virtual ScriptableObject SaveDataAsset(string path)
|
|
114
|
-
{
|
|
115
|
-
#if UNITY_EDITOR
|
|
116
|
-
string[] guids = AssetDatabase.FindAssets($"t:{typeof(T).Name}",
|
|
117
|
-
new[] { Path.GetDirectoryName(path.TrimEnd(Path.DirectorySeparatorChar)) });
|
|
118
|
-
|
|
119
|
-
bool overridingExistingData = guids.Length > 0;
|
|
120
|
-
|
|
121
|
-
T dataAsset;
|
|
122
|
-
|
|
123
|
-
if (overridingExistingData)
|
|
124
|
-
dataAsset = GetAssetFromGUID<T>(guids[0]);
|
|
125
|
-
else
|
|
126
|
-
dataAsset = ScriptableObject.CreateInstance<T>();
|
|
127
|
-
|
|
128
|
-
dataAsset.SetDatas(Save());
|
|
129
|
-
|
|
130
|
-
if (!overridingExistingData && dataAsset.datas != null && dataAsset.datas.Count != 0)
|
|
131
|
-
AssetDatabase.CreateAsset(dataAsset, path + "_" + GetDataAssetName() + ".asset");
|
|
132
|
-
|
|
133
|
-
EditorUtility.SetDirty(dataAsset);
|
|
134
|
-
|
|
135
|
-
AssetDatabase.SaveAssets();
|
|
136
|
-
|
|
137
|
-
return overridingExistingData ? null : dataAsset;
|
|
138
|
-
#else
|
|
139
|
-
return null;
|
|
140
|
-
#endif
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/// <summary>
|
|
144
|
-
///
|
|
145
|
-
/// </summary>
|
|
146
|
-
/// <returns></returns>
|
|
147
|
-
protected virtual string GetDataAssetName() => dataAssetName;
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
public virtual object SaveInstance()
|
|
151
|
-
{
|
|
152
|
-
List<T2> dataInstances = Save();
|
|
153
|
-
|
|
154
|
-
List<string> strings = new();
|
|
155
|
-
|
|
156
|
-
if (dataInstances == null)
|
|
157
|
-
return strings;
|
|
158
|
-
|
|
159
|
-
foreach (T2 dataInstance in dataInstances)
|
|
160
|
-
{
|
|
161
|
-
if (dataInstance != null)
|
|
162
|
-
{
|
|
163
|
-
string serializedJson = JsonUtility.ToJson(dataInstance);
|
|
164
|
-
|
|
165
|
-
strings.Add(serializedJson);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
return strings;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
public abstract void Unload(bool inEditor);
|
|
173
|
-
|
|
174
|
-
#if UNITY_EDITOR
|
|
175
|
-
/// <summary>
|
|
176
|
-
///
|
|
177
|
-
/// </summary>
|
|
178
|
-
/// <typeparam name="T3"></typeparam>
|
|
179
|
-
/// <param name="guid"></param>
|
|
180
|
-
/// <returns></returns>
|
|
181
|
-
protected T3 GetAssetFromGUID<T3>(string guid) where T3 : UnityEngine.Object
|
|
182
|
-
{
|
|
183
|
-
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
184
|
-
|
|
185
|
-
return AssetDatabase.LoadAssetAtPath<T3>(path);
|
|
186
|
-
}
|
|
187
|
-
#endif
|
|
188
|
-
/// <summary>
|
|
189
|
-
///
|
|
190
|
-
/// </summary>
|
|
191
|
-
/// <typeparam name="T4"></typeparam>
|
|
192
|
-
/// <param name="scriptableObjects"></param>
|
|
193
|
-
/// <returns></returns>
|
|
194
|
-
protected T4 GetDataAsset<T4>(List<ScriptableObject> scriptableObjects)
|
|
195
|
-
{
|
|
196
|
-
foreach (var scriptableObject in scriptableObjects)
|
|
197
|
-
if (scriptableObject is T4 data)
|
|
198
|
-
return data;
|
|
199
|
-
|
|
200
|
-
return default;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/// <summary>
|
|
204
|
-
///
|
|
205
|
-
/// </summary>
|
|
206
|
-
/// <returns></returns>
|
|
207
|
-
public abstract List<T2> Save();
|
|
208
|
-
|
|
209
|
-
/// <summary>
|
|
210
|
-
///
|
|
211
|
-
/// </summary>
|
|
212
|
-
/// <param name="baseDatas"></param>
|
|
213
|
-
/// <param name="instanceDatas"></param>
|
|
214
|
-
protected virtual void LoadAssetData(List<T2> baseDatas, List<T2> instanceDatas = null)
|
|
215
|
-
{
|
|
216
|
-
InitializeVisibleBaseDatas(baseDatas);
|
|
217
|
-
|
|
218
|
-
InitializeVisibleInstanceDatas(instanceDatas);
|
|
219
|
-
|
|
220
|
-
LoadAssetProcess(baseDatas, instanceDatas);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/// <summary>
|
|
224
|
-
///
|
|
225
|
-
/// </summary>
|
|
226
|
-
/// <param name="baseDatas"></param>
|
|
227
|
-
protected virtual void InitializeVisibleBaseDatas(List<T2> baseDatas) => loadedBaseDatas = baseDatas;
|
|
228
|
-
|
|
229
|
-
/// <summary>
|
|
230
|
-
///
|
|
231
|
-
/// </summary>
|
|
232
|
-
/// <param name="instanceDatas"></param>
|
|
233
|
-
protected virtual void InitializeVisibleInstanceDatas(List<T2> instanceDatas = null) => loadedInstances = instanceDatas;
|
|
234
|
-
|
|
235
|
-
/// <summary>
|
|
236
|
-
///
|
|
237
|
-
/// </summary>
|
|
238
|
-
/// <param name="baseDatas"></param>
|
|
239
|
-
/// <param name="instanceDatas"></param>
|
|
240
|
-
protected abstract void LoadAssetProcess(List<T2> baseDatas, List<T2> instanceDatas = null);
|
|
241
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.RoomStateBuilding;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.IO;
|
|
5
|
+
#if UNITY_EDITOR
|
|
6
|
+
using UnityEditor;
|
|
7
|
+
#endif
|
|
8
|
+
using UnityEngine;
|
|
9
|
+
|
|
10
|
+
namespace DREditor.RoomBuilding.Implementation
|
|
11
|
+
{
|
|
12
|
+
/// <summary>
|
|
13
|
+
///
|
|
14
|
+
/// </summary>
|
|
15
|
+
/// <typeparam name="T"></typeparam>
|
|
16
|
+
/// <typeparam name="T2"></typeparam>
|
|
17
|
+
public abstract class RoomStateHandlerBase<T, T2> : MonoBehaviour, IRoomStateSaver, IRoomStateLoader where T : StateDataAsset<T2>
|
|
18
|
+
{
|
|
19
|
+
/// <summary>
|
|
20
|
+
///
|
|
21
|
+
/// </summary>
|
|
22
|
+
[Header("")]
|
|
23
|
+
[Divider]
|
|
24
|
+
[Header("")]
|
|
25
|
+
[Divider]
|
|
26
|
+
[Tooltip("")]
|
|
27
|
+
[SerializeField] string handlerTypeName = "";
|
|
28
|
+
|
|
29
|
+
/// <summary>
|
|
30
|
+
///
|
|
31
|
+
/// </summary>
|
|
32
|
+
[Tooltip("")]
|
|
33
|
+
[SerializeField] string dataAssetName = "";
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/// <summary>
|
|
37
|
+
///
|
|
38
|
+
/// </summary>
|
|
39
|
+
[Header("")]
|
|
40
|
+
[Divider]
|
|
41
|
+
[Tooltip("")]
|
|
42
|
+
[SerializeField] protected List<T2> loadedBaseDatas;
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
///
|
|
46
|
+
/// </summary>
|
|
47
|
+
[Tooltip("")]
|
|
48
|
+
[SerializeField] protected List<T2> loadedInstances = null;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
public virtual string GetTypeName() => handlerTypeName;
|
|
52
|
+
|
|
53
|
+
public virtual void LoadData(List<ScriptableObject> roomSO)
|
|
54
|
+
{
|
|
55
|
+
T data = GetDataAsset<T>(roomSO);
|
|
56
|
+
|
|
57
|
+
if (data != null)
|
|
58
|
+
LoadAssetData(data.datas);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public virtual void LoadInstance(List<ScriptableObject> roomSO, object instanceData)
|
|
62
|
+
{
|
|
63
|
+
string instanceJson = (string)instanceData;
|
|
64
|
+
|
|
65
|
+
List<T2> instanceAssetData = new();
|
|
66
|
+
|
|
67
|
+
try
|
|
68
|
+
{
|
|
69
|
+
var assetData = JsonUtility.FromJson<InstanceListWrapper<InstanceListWrapper<string>>>(instanceJson);
|
|
70
|
+
|
|
71
|
+
foreach (var stateSection in assetData.wrappedInstances)
|
|
72
|
+
{
|
|
73
|
+
foreach (var dataInstance in stateSection.wrappedInstances)
|
|
74
|
+
{
|
|
75
|
+
try
|
|
76
|
+
{
|
|
77
|
+
if (LoadedInstanceValid(dataInstance, out T2 result))
|
|
78
|
+
instanceAssetData.Add(result);
|
|
79
|
+
}
|
|
80
|
+
catch { }
|
|
81
|
+
|
|
82
|
+
//break; // Commented out because actor instance data wasn't being loaded properly.
|
|
83
|
+
// But it is unknown if this break was actually needed.
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch
|
|
88
|
+
{
|
|
89
|
+
instanceAssetData = JsonUtility.FromJson<List<T2>>(instanceJson);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
T data = GetDataAsset<T>(roomSO);
|
|
93
|
+
|
|
94
|
+
if (data != null)
|
|
95
|
+
LoadAssetData(data.datas, instanceAssetData);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/// <summary>
|
|
99
|
+
///
|
|
100
|
+
/// </summary>
|
|
101
|
+
/// <param name="dataInstance"></param>
|
|
102
|
+
/// <param name="result"></param>
|
|
103
|
+
/// <returns></returns>
|
|
104
|
+
protected virtual bool LoadedInstanceValid(string dataInstance, out T2 result)
|
|
105
|
+
{
|
|
106
|
+
string emptyBaseline = JsonUtility.ToJson(JsonUtility.FromJson<T2>("{}"));
|
|
107
|
+
|
|
108
|
+
result = JsonUtility.FromJson<T2>(dataInstance);
|
|
109
|
+
|
|
110
|
+
return JsonUtility.ToJson(result) != emptyBaseline;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public virtual ScriptableObject SaveDataAsset(string path)
|
|
114
|
+
{
|
|
115
|
+
#if UNITY_EDITOR
|
|
116
|
+
string[] guids = AssetDatabase.FindAssets($"t:{typeof(T).Name}",
|
|
117
|
+
new[] { Path.GetDirectoryName(path.TrimEnd(Path.DirectorySeparatorChar)) });
|
|
118
|
+
|
|
119
|
+
bool overridingExistingData = guids.Length > 0;
|
|
120
|
+
|
|
121
|
+
T dataAsset;
|
|
122
|
+
|
|
123
|
+
if (overridingExistingData)
|
|
124
|
+
dataAsset = GetAssetFromGUID<T>(guids[0]);
|
|
125
|
+
else
|
|
126
|
+
dataAsset = ScriptableObject.CreateInstance<T>();
|
|
127
|
+
|
|
128
|
+
dataAsset.SetDatas(Save());
|
|
129
|
+
|
|
130
|
+
if (!overridingExistingData && dataAsset.datas != null && dataAsset.datas.Count != 0)
|
|
131
|
+
AssetDatabase.CreateAsset(dataAsset, path + "_" + GetDataAssetName() + ".asset");
|
|
132
|
+
|
|
133
|
+
EditorUtility.SetDirty(dataAsset);
|
|
134
|
+
|
|
135
|
+
AssetDatabase.SaveAssets();
|
|
136
|
+
|
|
137
|
+
return overridingExistingData ? null : dataAsset;
|
|
138
|
+
#else
|
|
139
|
+
return null;
|
|
140
|
+
#endif
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/// <summary>
|
|
144
|
+
///
|
|
145
|
+
/// </summary>
|
|
146
|
+
/// <returns></returns>
|
|
147
|
+
protected virtual string GetDataAssetName() => dataAssetName;
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
public virtual object SaveInstance()
|
|
151
|
+
{
|
|
152
|
+
List<T2> dataInstances = Save();
|
|
153
|
+
|
|
154
|
+
List<string> strings = new();
|
|
155
|
+
|
|
156
|
+
if (dataInstances == null)
|
|
157
|
+
return strings;
|
|
158
|
+
|
|
159
|
+
foreach (T2 dataInstance in dataInstances)
|
|
160
|
+
{
|
|
161
|
+
if (dataInstance != null)
|
|
162
|
+
{
|
|
163
|
+
string serializedJson = JsonUtility.ToJson(dataInstance);
|
|
164
|
+
|
|
165
|
+
strings.Add(serializedJson);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return strings;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
public abstract void Unload(bool inEditor);
|
|
173
|
+
|
|
174
|
+
#if UNITY_EDITOR
|
|
175
|
+
/// <summary>
|
|
176
|
+
///
|
|
177
|
+
/// </summary>
|
|
178
|
+
/// <typeparam name="T3"></typeparam>
|
|
179
|
+
/// <param name="guid"></param>
|
|
180
|
+
/// <returns></returns>
|
|
181
|
+
protected T3 GetAssetFromGUID<T3>(string guid) where T3 : UnityEngine.Object
|
|
182
|
+
{
|
|
183
|
+
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
184
|
+
|
|
185
|
+
return AssetDatabase.LoadAssetAtPath<T3>(path);
|
|
186
|
+
}
|
|
187
|
+
#endif
|
|
188
|
+
/// <summary>
|
|
189
|
+
///
|
|
190
|
+
/// </summary>
|
|
191
|
+
/// <typeparam name="T4"></typeparam>
|
|
192
|
+
/// <param name="scriptableObjects"></param>
|
|
193
|
+
/// <returns></returns>
|
|
194
|
+
protected T4 GetDataAsset<T4>(List<ScriptableObject> scriptableObjects)
|
|
195
|
+
{
|
|
196
|
+
foreach (var scriptableObject in scriptableObjects)
|
|
197
|
+
if (scriptableObject is T4 data)
|
|
198
|
+
return data;
|
|
199
|
+
|
|
200
|
+
return default;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/// <summary>
|
|
204
|
+
///
|
|
205
|
+
/// </summary>
|
|
206
|
+
/// <returns></returns>
|
|
207
|
+
public abstract List<T2> Save();
|
|
208
|
+
|
|
209
|
+
/// <summary>
|
|
210
|
+
///
|
|
211
|
+
/// </summary>
|
|
212
|
+
/// <param name="baseDatas"></param>
|
|
213
|
+
/// <param name="instanceDatas"></param>
|
|
214
|
+
protected virtual void LoadAssetData(List<T2> baseDatas, List<T2> instanceDatas = null)
|
|
215
|
+
{
|
|
216
|
+
InitializeVisibleBaseDatas(baseDatas);
|
|
217
|
+
|
|
218
|
+
InitializeVisibleInstanceDatas(instanceDatas);
|
|
219
|
+
|
|
220
|
+
LoadAssetProcess(baseDatas, instanceDatas);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/// <summary>
|
|
224
|
+
///
|
|
225
|
+
/// </summary>
|
|
226
|
+
/// <param name="baseDatas"></param>
|
|
227
|
+
protected virtual void InitializeVisibleBaseDatas(List<T2> baseDatas) => loadedBaseDatas = baseDatas;
|
|
228
|
+
|
|
229
|
+
/// <summary>
|
|
230
|
+
///
|
|
231
|
+
/// </summary>
|
|
232
|
+
/// <param name="instanceDatas"></param>
|
|
233
|
+
protected virtual void InitializeVisibleInstanceDatas(List<T2> instanceDatas = null) => loadedInstances = instanceDatas;
|
|
234
|
+
|
|
235
|
+
/// <summary>
|
|
236
|
+
///
|
|
237
|
+
/// </summary>
|
|
238
|
+
/// <param name="baseDatas"></param>
|
|
239
|
+
/// <param name="instanceDatas"></param>
|
|
240
|
+
protected abstract void LoadAssetProcess(List<T2> baseDatas, List<T2> instanceDatas = null);
|
|
241
|
+
}
|
|
242
242
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 0f6b8bbe599307644a067b10d34bbcb6
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 0f6b8bbe599307644a067b10d34bbcb6
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using System;
|
|
3
|
-
using System.Collections.Generic;
|
|
4
|
-
using UnityEngine.Serialization;
|
|
5
|
-
|
|
6
|
-
namespace DREditor.RoomBuilding.Implementation
|
|
7
|
-
{
|
|
8
|
-
/// <summary>
|
|
9
|
-
///
|
|
10
|
-
/// </summary>
|
|
11
|
-
[Serializable]
|
|
12
|
-
public class SaveableData
|
|
13
|
-
{
|
|
14
|
-
/// <summary>
|
|
15
|
-
///
|
|
16
|
-
/// </summary>
|
|
17
|
-
[FormerlySerializedAs("DataList")]
|
|
18
|
-
public List<SaveableDataSet> dataSets = new();
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
public SaveableData() { }
|
|
22
|
-
|
|
23
|
-
public SaveableData(List<SaveableDataSet> dataSets) => this.dataSets = dataSets;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/// <summary>
|
|
27
|
-
///
|
|
28
|
-
/// </summary>
|
|
29
|
-
/// <returns></returns>
|
|
30
|
-
public virtual bool IsMatch()
|
|
31
|
-
{
|
|
32
|
-
for (int i = 0; i < dataSets.Count; i++)
|
|
33
|
-
{
|
|
34
|
-
SaveableDataSet item = dataSets[i];
|
|
35
|
-
|
|
36
|
-
for (int x = 0; x < dataSets.Count; x++)
|
|
37
|
-
{
|
|
38
|
-
if (i == x)
|
|
39
|
-
continue;
|
|
40
|
-
|
|
41
|
-
SaveableDataSet info = dataSets[x];
|
|
42
|
-
|
|
43
|
-
if (info.subID == item.subID &&
|
|
44
|
-
item.typeName == info.typeName)
|
|
45
|
-
{
|
|
46
|
-
UnityEngine.Debug.LogWarning("2 Managers of type : " + item.GetType().Name +
|
|
47
|
-
" contain the same SubIDs! This is not allowed because otherwise the " +
|
|
48
|
-
"ISaveable will not load Save Data correctly!");
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using UnityEngine.Serialization;
|
|
5
|
+
|
|
6
|
+
namespace DREditor.RoomBuilding.Implementation
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
///
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Serializable]
|
|
12
|
+
public class SaveableData
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
///
|
|
16
|
+
/// </summary>
|
|
17
|
+
[FormerlySerializedAs("DataList")]
|
|
18
|
+
public List<SaveableDataSet> dataSets = new();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
public SaveableData() { }
|
|
22
|
+
|
|
23
|
+
public SaveableData(List<SaveableDataSet> dataSets) => this.dataSets = dataSets;
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/// <summary>
|
|
27
|
+
///
|
|
28
|
+
/// </summary>
|
|
29
|
+
/// <returns></returns>
|
|
30
|
+
public virtual bool IsMatch()
|
|
31
|
+
{
|
|
32
|
+
for (int i = 0; i < dataSets.Count; i++)
|
|
33
|
+
{
|
|
34
|
+
SaveableDataSet item = dataSets[i];
|
|
35
|
+
|
|
36
|
+
for (int x = 0; x < dataSets.Count; x++)
|
|
37
|
+
{
|
|
38
|
+
if (i == x)
|
|
39
|
+
continue;
|
|
40
|
+
|
|
41
|
+
SaveableDataSet info = dataSets[x];
|
|
42
|
+
|
|
43
|
+
if (info.subID == item.subID &&
|
|
44
|
+
item.typeName == info.typeName)
|
|
45
|
+
{
|
|
46
|
+
UnityEngine.Debug.LogWarning("2 Managers of type : " + item.GetType().Name +
|
|
47
|
+
" contain the same SubIDs! This is not allowed because otherwise the " +
|
|
48
|
+
"ISaveable will not load Save Data correctly!");
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
57
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: a178540f7dd59a34c9466fa9482c6235
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: a178540f7dd59a34c9466fa9482c6235
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|