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,296 +1,296 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.Triggers;
|
|
3
|
-
using System;
|
|
4
|
-
using System.Collections.Generic;
|
|
5
|
-
using System.Linq;
|
|
6
|
-
using UnityEngine;
|
|
7
|
-
|
|
8
|
-
namespace DREditor.RoomBuilding.Implementation
|
|
9
|
-
{
|
|
10
|
-
/// <summary>
|
|
11
|
-
///
|
|
12
|
-
/// </summary>
|
|
13
|
-
[ClassHeader(nameof(RoomStateHandlerBase<TriggerStateData, EventTrigger>) +
|
|
14
|
-
" for types <" + nameof(TriggerStateData) + ", " + nameof(EventTrigger) + ">" +
|
|
15
|
-
"\n\n")]
|
|
16
|
-
public class TriggerLoader : RoomStateHandlerBase<TriggerStateData, EventTrigger>
|
|
17
|
-
{
|
|
18
|
-
/// <inheritdoc/>
|
|
19
|
-
public override List<EventTrigger> Save() => SaveData();
|
|
20
|
-
|
|
21
|
-
/// <inheritdoc/>
|
|
22
|
-
protected override void LoadAssetProcess(List<EventTrigger> baseDatas, List<EventTrigger> instanceDatas = null)
|
|
23
|
-
=> Load(baseDatas, instanceDatas);
|
|
24
|
-
|
|
25
|
-
/// <summary>
|
|
26
|
-
///
|
|
27
|
-
/// </summary>
|
|
28
|
-
/// <param name="instanceDatas"></param>
|
|
29
|
-
/// <returns></returns>
|
|
30
|
-
protected virtual List<EventTrigger> GetValidInstanceTriggers(List<EventTrigger> instanceDatas = null)
|
|
31
|
-
=> instanceDatas?.Where(trigger => trigger.GenericActuator != null).ToList();
|
|
32
|
-
|
|
33
|
-
/// <inheritdoc/>
|
|
34
|
-
public override void Unload(bool inEditor) => UnloadEvents();
|
|
35
|
-
|
|
36
|
-
/// <summary>
|
|
37
|
-
///
|
|
38
|
-
/// </summary>
|
|
39
|
-
/// <returns></returns>
|
|
40
|
-
/// <remarks></remarks>
|
|
41
|
-
public static List<EventTrigger> SaveData()
|
|
42
|
-
{
|
|
43
|
-
List<EventTrigger> triggers = new();
|
|
44
|
-
|
|
45
|
-
var actList = FindObjectsByType<MonoBehaviour>().OfType<IActuatorBehaviour>().ToList();
|
|
46
|
-
|
|
47
|
-
for (int i = 0; i < actList.Count(); i++)
|
|
48
|
-
{
|
|
49
|
-
EventTrigger trigger = new();
|
|
50
|
-
|
|
51
|
-
trigger.SetActuator((GenericActuator)actList[i].Save());
|
|
52
|
-
|
|
53
|
-
ISubsequentBehaviour[] subsequentBehaviours = actList[i].GetSubsequents();
|
|
54
|
-
|
|
55
|
-
for (int j = 0; j < subsequentBehaviours.Count(); j++)
|
|
56
|
-
trigger.GenericSubsequents.Add((GenericSubsequent)subsequentBehaviours[j].Save());
|
|
57
|
-
|
|
58
|
-
triggers.Add(trigger);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return triggers;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/// <summary>
|
|
65
|
-
///
|
|
66
|
-
/// </summary>
|
|
67
|
-
/// <param name="Triggers"></param>
|
|
68
|
-
/// <param name="InstanceTriggers"></param>
|
|
69
|
-
public static void Load(List<EventTrigger> Triggers, List<EventTrigger> InstanceTriggers = null)
|
|
70
|
-
{
|
|
71
|
-
InitializeTriggers(Triggers, InstanceTriggers);
|
|
72
|
-
|
|
73
|
-
for (int i = 0; i < Triggers.Count; i++)
|
|
74
|
-
{
|
|
75
|
-
EventTrigger currentTrigger = Triggers[i];
|
|
76
|
-
|
|
77
|
-
CheckInstanceTriggers(i, InstanceTriggers);
|
|
78
|
-
|
|
79
|
-
GameObject go = new(currentTrigger.GenericActuator.Type);
|
|
80
|
-
|
|
81
|
-
PrepareLoadActuators(go, currentTrigger, i, InstanceTriggers);
|
|
82
|
-
|
|
83
|
-
PrepareLoadSubsequents(go, currentTrigger, i, InstanceTriggers);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/// <summary>
|
|
88
|
-
///
|
|
89
|
-
/// </summary>
|
|
90
|
-
/// <param name="Triggers"></param>
|
|
91
|
-
/// <param name="InstanceTriggers"></param>
|
|
92
|
-
/// <remarks></remarks>
|
|
93
|
-
static void InitializeTriggers(List<EventTrigger> Triggers, List<EventTrigger> InstanceTriggers = null)
|
|
94
|
-
{
|
|
95
|
-
if (InstanceTriggers != null && InstanceTriggers.Count > 0)
|
|
96
|
-
{
|
|
97
|
-
for (int i = 0; i < Triggers.Count; i++)
|
|
98
|
-
{
|
|
99
|
-
try
|
|
100
|
-
{
|
|
101
|
-
EventTrigger baseTrigger = Triggers[i];
|
|
102
|
-
|
|
103
|
-
EventTrigger instanceTrigger = InstanceTriggers[i];
|
|
104
|
-
|
|
105
|
-
if (baseTrigger.GenericSubsequents.Count != instanceTrigger.GenericSubsequents.Count)
|
|
106
|
-
{
|
|
107
|
-
UnityEngine.Debug.Log("CALLED REVERSE");
|
|
108
|
-
|
|
109
|
-
InstanceTriggers.Reverse();
|
|
110
|
-
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
catch (Exception exception)
|
|
115
|
-
{
|
|
116
|
-
UnityEngine.Debug
|
|
117
|
-
.LogWarning("MINOR ERROR: A BASE OR INSTANCE PIECE OF DATA COULDN'T BE FOUND on " + i + "\n" +
|
|
118
|
-
exception.ToString());
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
UnityEngine.Debug.Log("INSTANCE Trigger is: " + InstanceTriggers.Count);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/// <summary>
|
|
127
|
-
///
|
|
128
|
-
/// </summary>
|
|
129
|
-
/// <param name="instanceIndex"></param>
|
|
130
|
-
/// <param name="InstanceTriggers"></param>
|
|
131
|
-
static void CheckInstanceTriggers(int instanceIndex, List<EventTrigger> InstanceTriggers = null)
|
|
132
|
-
{
|
|
133
|
-
if (InstanceTriggers != null)
|
|
134
|
-
{
|
|
135
|
-
try
|
|
136
|
-
{
|
|
137
|
-
UnityEngine.Debug.Log(InstanceTriggers.Count);
|
|
138
|
-
|
|
139
|
-
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].ToString());
|
|
140
|
-
|
|
141
|
-
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].GenericActuator.Triggered);
|
|
142
|
-
|
|
143
|
-
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].GenericSubsequents.Count);
|
|
144
|
-
}
|
|
145
|
-
catch (Exception ex)
|
|
146
|
-
{
|
|
147
|
-
UnityEngine.Debug.Log("MINOR NOTICE: Logging Triggers had an error on: " + instanceIndex +
|
|
148
|
-
"\nLikely that this instance data is from previous game export's save data." +
|
|
149
|
-
"\n\n" + ex.ToString());
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/// <summary>
|
|
155
|
-
///
|
|
156
|
-
/// </summary>
|
|
157
|
-
/// <param name="go"></param>
|
|
158
|
-
/// <param name="currentTrigger"></param>
|
|
159
|
-
/// <param name="baseIndex"></param>
|
|
160
|
-
/// <param name="InstanceTriggers"></param>
|
|
161
|
-
static void PrepareLoadActuators(GameObject go, EventTrigger currentTrigger,
|
|
162
|
-
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
163
|
-
{
|
|
164
|
-
//Type type = Type.GetType(currentTrigger.GenericActuator.Type);
|
|
165
|
-
|
|
166
|
-
// This code must eventually remove below code with above code in the rework after the 2025 rework
|
|
167
|
-
// To remove the System.Reflection usage. Since regular actuators will be removed and all that will be left are generic.
|
|
168
|
-
// Potentially something to at least check and correct the sent type?
|
|
169
|
-
|
|
170
|
-
bool hasValidInstanceData = InstanceTriggers != null && InstanceTriggers.Count > 0 && baseIndex < InstanceTriggers.Count;
|
|
171
|
-
|
|
172
|
-
bool hasValidInstanceActuator = hasValidInstanceData && InstanceTriggers[baseIndex].GenericActuator != null;
|
|
173
|
-
|
|
174
|
-
string summonType = hasValidInstanceActuator ?
|
|
175
|
-
InstanceTriggers[baseIndex].GenericActuator.Type.Split('.')[^1]
|
|
176
|
-
: currentTrigger.GenericActuator.Type;
|
|
177
|
-
|
|
178
|
-
var actuatorType = AppDomain.CurrentDomain.GetAssemblies()
|
|
179
|
-
.SelectMany(assembly => assembly.GetTypes())
|
|
180
|
-
.FirstOrDefault(type => type.Name == summonType);
|
|
181
|
-
|
|
182
|
-
UnityEngine.Debug.Log("REPORT: Actuator Type to load: " + summonType);
|
|
183
|
-
|
|
184
|
-
go.AddComponent(actuatorType);
|
|
185
|
-
|
|
186
|
-
var actuatorBehaviours = go.GetComponents<MonoBehaviour>().OfType<IActuatorBehaviour>();
|
|
187
|
-
|
|
188
|
-
foreach (IActuatorBehaviour actuatorBehaviour in actuatorBehaviours)
|
|
189
|
-
if (hasValidInstanceData)
|
|
190
|
-
{
|
|
191
|
-
if (InstanceTriggers[baseIndex].GenericActuator == null)
|
|
192
|
-
{
|
|
193
|
-
if (string.IsNullOrEmpty(InstanceTriggers[baseIndex].Actuator.Type))
|
|
194
|
-
continue;
|
|
195
|
-
//#if UNITY_EDITOR
|
|
196
|
-
TriggerConverter.ConvertActuator(InstanceTriggers[baseIndex], InstanceTriggers[baseIndex].Actuator);
|
|
197
|
-
//#endif
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
LoadActuatorInstance(actuatorBehaviour, baseIndex, InstanceTriggers);
|
|
201
|
-
}
|
|
202
|
-
else
|
|
203
|
-
actuatorBehaviour.Load(currentTrigger.GenericActuator.Clone());
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
/// <summary>
|
|
207
|
-
///
|
|
208
|
-
/// </summary>
|
|
209
|
-
/// <param name="actuatorBehaviour"></param>
|
|
210
|
-
/// <param name="baseIndex"></param>
|
|
211
|
-
/// <param name="InstanceTriggers"></param>
|
|
212
|
-
static void LoadActuatorInstance(IActuatorBehaviour actuatorBehaviour, int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
213
|
-
{
|
|
214
|
-
if (InstanceTriggers[baseIndex].GenericActuator != null)
|
|
215
|
-
actuatorBehaviour.Load(InstanceTriggers[baseIndex].GenericActuator);
|
|
216
|
-
else
|
|
217
|
-
actuatorBehaviour.Load(InstanceTriggers[baseIndex].Actuator);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/// <summary>
|
|
221
|
-
///
|
|
222
|
-
/// </summary>
|
|
223
|
-
/// <param name="go"></param>
|
|
224
|
-
/// <param name="currentTrigger"></param>
|
|
225
|
-
/// <param name="baseIndex"></param>
|
|
226
|
-
/// <param name="InstanceTriggers"></param>
|
|
227
|
-
static void PrepareLoadSubsequents(GameObject go, EventTrigger currentTrigger,
|
|
228
|
-
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
229
|
-
{
|
|
230
|
-
try
|
|
231
|
-
{
|
|
232
|
-
LoadSubsequents(go, currentTrigger, baseIndex, InstanceTriggers);
|
|
233
|
-
}
|
|
234
|
-
catch (Exception exception)
|
|
235
|
-
{
|
|
236
|
-
UnityEngine.Debug.LogWarning(nameof(TriggerLoader) + ": Failed to load Subsequents");
|
|
237
|
-
|
|
238
|
-
UnityEngine.Debug.LogException(exception);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/// <summary>
|
|
243
|
-
///
|
|
244
|
-
/// </summary>
|
|
245
|
-
/// <param name="go"></param>
|
|
246
|
-
/// <param name="currentTrigger"></param>
|
|
247
|
-
/// <param name="baseIndex"></param>
|
|
248
|
-
/// <param name="InstanceTriggers"></param>
|
|
249
|
-
static void LoadSubsequents(GameObject go, EventTrigger currentTrigger,
|
|
250
|
-
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
251
|
-
{
|
|
252
|
-
for (int x = 0; x < currentTrigger.GenericSubsequents.Count; x++)
|
|
253
|
-
{
|
|
254
|
-
GenericSubsequent genericSubsequent = currentTrigger.GenericSubsequents[x];
|
|
255
|
-
|
|
256
|
-
//Type type = Type.GetType(genericSubsequent.Type);
|
|
257
|
-
|
|
258
|
-
// This code must eventually remove below code with above code in the rework after the 2025 rework
|
|
259
|
-
// To remove the System.Reflection usage.
|
|
260
|
-
var subsequentType = AppDomain.CurrentDomain.GetAssemblies()
|
|
261
|
-
.SelectMany(assembly => assembly.GetTypes())
|
|
262
|
-
.FirstOrDefault(type => type.Name == genericSubsequent.Type);
|
|
263
|
-
|
|
264
|
-
go.AddComponent(subsequentType);
|
|
265
|
-
|
|
266
|
-
var subsequentBehaviours = go.GetComponents<ISubsequentBehaviour>().ToList();
|
|
267
|
-
|
|
268
|
-
if (InstanceTriggers != null &&
|
|
269
|
-
InstanceTriggers.Count > 0 &&
|
|
270
|
-
baseIndex < InstanceTriggers.Count &&
|
|
271
|
-
InstanceTriggers[baseIndex].GenericSubsequents.Count != 0)
|
|
272
|
-
subsequentBehaviours[x].Load(((GenericSubsequent)genericSubsequent.Clone())
|
|
273
|
-
.MergeInstance(InstanceTriggers[baseIndex].GenericSubsequents[x]));
|
|
274
|
-
else
|
|
275
|
-
subsequentBehaviours[x].Load(genericSubsequent.Clone());
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/// <summary>
|
|
280
|
-
///
|
|
281
|
-
/// </summary>
|
|
282
|
-
public static void UnloadEvents()
|
|
283
|
-
{
|
|
284
|
-
MonoBehaviour[] actuators = FindObjectsByType<MonoBehaviour>()
|
|
285
|
-
.Where(behaviour => behaviour is IActuatorBehaviour).ToArray();
|
|
286
|
-
|
|
287
|
-
foreach (MonoBehaviour behaviour in actuators)
|
|
288
|
-
#if UNITY_EDITOR
|
|
289
|
-
if (behaviour.gameObject != null)
|
|
290
|
-
DestroyImmediate(behaviour.gameObject);
|
|
291
|
-
#else
|
|
292
|
-
Destroy(behaviour.gameObject);
|
|
293
|
-
#endif
|
|
294
|
-
}
|
|
295
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Triggers;
|
|
3
|
+
using System;
|
|
4
|
+
using System.Collections.Generic;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
namespace DREditor.RoomBuilding.Implementation
|
|
9
|
+
{
|
|
10
|
+
/// <summary>
|
|
11
|
+
///
|
|
12
|
+
/// </summary>
|
|
13
|
+
[ClassHeader(nameof(RoomStateHandlerBase<TriggerStateData, EventTrigger>) +
|
|
14
|
+
" for types <" + nameof(TriggerStateData) + ", " + nameof(EventTrigger) + ">" +
|
|
15
|
+
"\n\n")]
|
|
16
|
+
public class TriggerLoader : RoomStateHandlerBase<TriggerStateData, EventTrigger>
|
|
17
|
+
{
|
|
18
|
+
/// <inheritdoc/>
|
|
19
|
+
public override List<EventTrigger> Save() => SaveData();
|
|
20
|
+
|
|
21
|
+
/// <inheritdoc/>
|
|
22
|
+
protected override void LoadAssetProcess(List<EventTrigger> baseDatas, List<EventTrigger> instanceDatas = null)
|
|
23
|
+
=> Load(baseDatas, instanceDatas);
|
|
24
|
+
|
|
25
|
+
/// <summary>
|
|
26
|
+
///
|
|
27
|
+
/// </summary>
|
|
28
|
+
/// <param name="instanceDatas"></param>
|
|
29
|
+
/// <returns></returns>
|
|
30
|
+
protected virtual List<EventTrigger> GetValidInstanceTriggers(List<EventTrigger> instanceDatas = null)
|
|
31
|
+
=> instanceDatas?.Where(trigger => trigger.GenericActuator != null).ToList();
|
|
32
|
+
|
|
33
|
+
/// <inheritdoc/>
|
|
34
|
+
public override void Unload(bool inEditor) => UnloadEvents();
|
|
35
|
+
|
|
36
|
+
/// <summary>
|
|
37
|
+
///
|
|
38
|
+
/// </summary>
|
|
39
|
+
/// <returns></returns>
|
|
40
|
+
/// <remarks></remarks>
|
|
41
|
+
public static List<EventTrigger> SaveData()
|
|
42
|
+
{
|
|
43
|
+
List<EventTrigger> triggers = new();
|
|
44
|
+
|
|
45
|
+
var actList = FindObjectsByType<MonoBehaviour>().OfType<IActuatorBehaviour>().ToList();
|
|
46
|
+
|
|
47
|
+
for (int i = 0; i < actList.Count(); i++)
|
|
48
|
+
{
|
|
49
|
+
EventTrigger trigger = new();
|
|
50
|
+
|
|
51
|
+
trigger.SetActuator((GenericActuator)actList[i].Save());
|
|
52
|
+
|
|
53
|
+
ISubsequentBehaviour[] subsequentBehaviours = actList[i].GetSubsequents();
|
|
54
|
+
|
|
55
|
+
for (int j = 0; j < subsequentBehaviours.Count(); j++)
|
|
56
|
+
trigger.GenericSubsequents.Add((GenericSubsequent)subsequentBehaviours[j].Save());
|
|
57
|
+
|
|
58
|
+
triggers.Add(trigger);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return triggers;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// <summary>
|
|
65
|
+
///
|
|
66
|
+
/// </summary>
|
|
67
|
+
/// <param name="Triggers"></param>
|
|
68
|
+
/// <param name="InstanceTriggers"></param>
|
|
69
|
+
public static void Load(List<EventTrigger> Triggers, List<EventTrigger> InstanceTriggers = null)
|
|
70
|
+
{
|
|
71
|
+
InitializeTriggers(Triggers, InstanceTriggers);
|
|
72
|
+
|
|
73
|
+
for (int i = 0; i < Triggers.Count; i++)
|
|
74
|
+
{
|
|
75
|
+
EventTrigger currentTrigger = Triggers[i];
|
|
76
|
+
|
|
77
|
+
CheckInstanceTriggers(i, InstanceTriggers);
|
|
78
|
+
|
|
79
|
+
GameObject go = new(currentTrigger.GenericActuator.Type);
|
|
80
|
+
|
|
81
|
+
PrepareLoadActuators(go, currentTrigger, i, InstanceTriggers);
|
|
82
|
+
|
|
83
|
+
PrepareLoadSubsequents(go, currentTrigger, i, InstanceTriggers);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/// <summary>
|
|
88
|
+
///
|
|
89
|
+
/// </summary>
|
|
90
|
+
/// <param name="Triggers"></param>
|
|
91
|
+
/// <param name="InstanceTriggers"></param>
|
|
92
|
+
/// <remarks></remarks>
|
|
93
|
+
static void InitializeTriggers(List<EventTrigger> Triggers, List<EventTrigger> InstanceTriggers = null)
|
|
94
|
+
{
|
|
95
|
+
if (InstanceTriggers != null && InstanceTriggers.Count > 0)
|
|
96
|
+
{
|
|
97
|
+
for (int i = 0; i < Triggers.Count; i++)
|
|
98
|
+
{
|
|
99
|
+
try
|
|
100
|
+
{
|
|
101
|
+
EventTrigger baseTrigger = Triggers[i];
|
|
102
|
+
|
|
103
|
+
EventTrigger instanceTrigger = InstanceTriggers[i];
|
|
104
|
+
|
|
105
|
+
if (baseTrigger.GenericSubsequents.Count != instanceTrigger.GenericSubsequents.Count)
|
|
106
|
+
{
|
|
107
|
+
UnityEngine.Debug.Log("CALLED REVERSE");
|
|
108
|
+
|
|
109
|
+
InstanceTriggers.Reverse();
|
|
110
|
+
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (Exception exception)
|
|
115
|
+
{
|
|
116
|
+
UnityEngine.Debug
|
|
117
|
+
.LogWarning("MINOR ERROR: A BASE OR INSTANCE PIECE OF DATA COULDN'T BE FOUND on " + i + "\n" +
|
|
118
|
+
exception.ToString());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
UnityEngine.Debug.Log("INSTANCE Trigger is: " + InstanceTriggers.Count);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/// <summary>
|
|
127
|
+
///
|
|
128
|
+
/// </summary>
|
|
129
|
+
/// <param name="instanceIndex"></param>
|
|
130
|
+
/// <param name="InstanceTriggers"></param>
|
|
131
|
+
static void CheckInstanceTriggers(int instanceIndex, List<EventTrigger> InstanceTriggers = null)
|
|
132
|
+
{
|
|
133
|
+
if (InstanceTriggers != null)
|
|
134
|
+
{
|
|
135
|
+
try
|
|
136
|
+
{
|
|
137
|
+
UnityEngine.Debug.Log(InstanceTriggers.Count);
|
|
138
|
+
|
|
139
|
+
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].ToString());
|
|
140
|
+
|
|
141
|
+
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].GenericActuator.Triggered);
|
|
142
|
+
|
|
143
|
+
UnityEngine.Debug.Log(InstanceTriggers[instanceIndex].GenericSubsequents.Count);
|
|
144
|
+
}
|
|
145
|
+
catch (Exception ex)
|
|
146
|
+
{
|
|
147
|
+
UnityEngine.Debug.Log("MINOR NOTICE: Logging Triggers had an error on: " + instanceIndex +
|
|
148
|
+
"\nLikely that this instance data is from previous game export's save data." +
|
|
149
|
+
"\n\n" + ex.ToString());
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/// <summary>
|
|
155
|
+
///
|
|
156
|
+
/// </summary>
|
|
157
|
+
/// <param name="go"></param>
|
|
158
|
+
/// <param name="currentTrigger"></param>
|
|
159
|
+
/// <param name="baseIndex"></param>
|
|
160
|
+
/// <param name="InstanceTriggers"></param>
|
|
161
|
+
static void PrepareLoadActuators(GameObject go, EventTrigger currentTrigger,
|
|
162
|
+
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
163
|
+
{
|
|
164
|
+
//Type type = Type.GetType(currentTrigger.GenericActuator.Type);
|
|
165
|
+
|
|
166
|
+
// This code must eventually remove below code with above code in the rework after the 2025 rework
|
|
167
|
+
// To remove the System.Reflection usage. Since regular actuators will be removed and all that will be left are generic.
|
|
168
|
+
// Potentially something to at least check and correct the sent type?
|
|
169
|
+
|
|
170
|
+
bool hasValidInstanceData = InstanceTriggers != null && InstanceTriggers.Count > 0 && baseIndex < InstanceTriggers.Count;
|
|
171
|
+
|
|
172
|
+
bool hasValidInstanceActuator = hasValidInstanceData && InstanceTriggers[baseIndex].GenericActuator != null;
|
|
173
|
+
|
|
174
|
+
string summonType = hasValidInstanceActuator ?
|
|
175
|
+
InstanceTriggers[baseIndex].GenericActuator.Type.Split('.')[^1]
|
|
176
|
+
: currentTrigger.GenericActuator.Type;
|
|
177
|
+
|
|
178
|
+
var actuatorType = AppDomain.CurrentDomain.GetAssemblies()
|
|
179
|
+
.SelectMany(assembly => assembly.GetTypes())
|
|
180
|
+
.FirstOrDefault(type => type.Name == summonType);
|
|
181
|
+
|
|
182
|
+
UnityEngine.Debug.Log("REPORT: Actuator Type to load: " + summonType);
|
|
183
|
+
|
|
184
|
+
go.AddComponent(actuatorType);
|
|
185
|
+
|
|
186
|
+
var actuatorBehaviours = go.GetComponents<MonoBehaviour>().OfType<IActuatorBehaviour>();
|
|
187
|
+
|
|
188
|
+
foreach (IActuatorBehaviour actuatorBehaviour in actuatorBehaviours)
|
|
189
|
+
if (hasValidInstanceData)
|
|
190
|
+
{
|
|
191
|
+
if (InstanceTriggers[baseIndex].GenericActuator == null)
|
|
192
|
+
{
|
|
193
|
+
if (string.IsNullOrEmpty(InstanceTriggers[baseIndex].Actuator.Type))
|
|
194
|
+
continue;
|
|
195
|
+
//#if UNITY_EDITOR
|
|
196
|
+
TriggerConverter.ConvertActuator(InstanceTriggers[baseIndex], InstanceTriggers[baseIndex].Actuator);
|
|
197
|
+
//#endif
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
LoadActuatorInstance(actuatorBehaviour, baseIndex, InstanceTriggers);
|
|
201
|
+
}
|
|
202
|
+
else
|
|
203
|
+
actuatorBehaviour.Load(currentTrigger.GenericActuator.Clone());
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/// <summary>
|
|
207
|
+
///
|
|
208
|
+
/// </summary>
|
|
209
|
+
/// <param name="actuatorBehaviour"></param>
|
|
210
|
+
/// <param name="baseIndex"></param>
|
|
211
|
+
/// <param name="InstanceTriggers"></param>
|
|
212
|
+
static void LoadActuatorInstance(IActuatorBehaviour actuatorBehaviour, int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
213
|
+
{
|
|
214
|
+
if (InstanceTriggers[baseIndex].GenericActuator != null)
|
|
215
|
+
actuatorBehaviour.Load(InstanceTriggers[baseIndex].GenericActuator);
|
|
216
|
+
else
|
|
217
|
+
actuatorBehaviour.Load(InstanceTriggers[baseIndex].Actuator);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/// <summary>
|
|
221
|
+
///
|
|
222
|
+
/// </summary>
|
|
223
|
+
/// <param name="go"></param>
|
|
224
|
+
/// <param name="currentTrigger"></param>
|
|
225
|
+
/// <param name="baseIndex"></param>
|
|
226
|
+
/// <param name="InstanceTriggers"></param>
|
|
227
|
+
static void PrepareLoadSubsequents(GameObject go, EventTrigger currentTrigger,
|
|
228
|
+
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
229
|
+
{
|
|
230
|
+
try
|
|
231
|
+
{
|
|
232
|
+
LoadSubsequents(go, currentTrigger, baseIndex, InstanceTriggers);
|
|
233
|
+
}
|
|
234
|
+
catch (Exception exception)
|
|
235
|
+
{
|
|
236
|
+
UnityEngine.Debug.LogWarning(nameof(TriggerLoader) + ": Failed to load Subsequents");
|
|
237
|
+
|
|
238
|
+
UnityEngine.Debug.LogException(exception);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/// <summary>
|
|
243
|
+
///
|
|
244
|
+
/// </summary>
|
|
245
|
+
/// <param name="go"></param>
|
|
246
|
+
/// <param name="currentTrigger"></param>
|
|
247
|
+
/// <param name="baseIndex"></param>
|
|
248
|
+
/// <param name="InstanceTriggers"></param>
|
|
249
|
+
static void LoadSubsequents(GameObject go, EventTrigger currentTrigger,
|
|
250
|
+
int baseIndex, List<EventTrigger> InstanceTriggers = null)
|
|
251
|
+
{
|
|
252
|
+
for (int x = 0; x < currentTrigger.GenericSubsequents.Count; x++)
|
|
253
|
+
{
|
|
254
|
+
GenericSubsequent genericSubsequent = currentTrigger.GenericSubsequents[x];
|
|
255
|
+
|
|
256
|
+
//Type type = Type.GetType(genericSubsequent.Type);
|
|
257
|
+
|
|
258
|
+
// This code must eventually remove below code with above code in the rework after the 2025 rework
|
|
259
|
+
// To remove the System.Reflection usage.
|
|
260
|
+
var subsequentType = AppDomain.CurrentDomain.GetAssemblies()
|
|
261
|
+
.SelectMany(assembly => assembly.GetTypes())
|
|
262
|
+
.FirstOrDefault(type => type.Name == genericSubsequent.Type);
|
|
263
|
+
|
|
264
|
+
go.AddComponent(subsequentType);
|
|
265
|
+
|
|
266
|
+
var subsequentBehaviours = go.GetComponents<ISubsequentBehaviour>().ToList();
|
|
267
|
+
|
|
268
|
+
if (InstanceTriggers != null &&
|
|
269
|
+
InstanceTriggers.Count > 0 &&
|
|
270
|
+
baseIndex < InstanceTriggers.Count &&
|
|
271
|
+
InstanceTriggers[baseIndex].GenericSubsequents.Count != 0)
|
|
272
|
+
subsequentBehaviours[x].Load(((GenericSubsequent)genericSubsequent.Clone())
|
|
273
|
+
.MergeInstance(InstanceTriggers[baseIndex].GenericSubsequents[x]));
|
|
274
|
+
else
|
|
275
|
+
subsequentBehaviours[x].Load(genericSubsequent.Clone());
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/// <summary>
|
|
280
|
+
///
|
|
281
|
+
/// </summary>
|
|
282
|
+
public static void UnloadEvents()
|
|
283
|
+
{
|
|
284
|
+
MonoBehaviour[] actuators = FindObjectsByType<MonoBehaviour>()
|
|
285
|
+
.Where(behaviour => behaviour is IActuatorBehaviour).ToArray();
|
|
286
|
+
|
|
287
|
+
foreach (MonoBehaviour behaviour in actuators)
|
|
288
|
+
#if UNITY_EDITOR
|
|
289
|
+
if (behaviour.gameObject != null)
|
|
290
|
+
DestroyImmediate(behaviour.gameObject);
|
|
291
|
+
#else
|
|
292
|
+
Destroy(behaviour.gameObject);
|
|
293
|
+
#endif
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
296
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: d4a96593f9e88e9428a387c782e40e4b
|
|
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: d4a96593f9e88e9428a387c782e40e4b
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
-
using DREditor.Triggers;
|
|
3
|
-
using System;
|
|
4
|
-
using UnityEngine;
|
|
5
|
-
|
|
6
|
-
namespace DREditor.RoomBuilding.Implementation
|
|
7
|
-
{
|
|
8
|
-
/// <summary>
|
|
9
|
-
///
|
|
10
|
-
/// </summary>
|
|
11
|
-
[Serializable]
|
|
12
|
-
public class TriggerStateData : StateDataAsset<EventTrigger>
|
|
13
|
-
{
|
|
14
|
-
#if UNITY_EDITOR
|
|
15
|
-
[ContextMenu("Convert")]
|
|
16
|
-
public void Convert() => TriggerConverter.ConvertTriggerAsset(this);
|
|
17
|
-
#endif
|
|
18
|
-
}
|
|
1
|
+
//Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
|
|
2
|
+
using DREditor.Triggers;
|
|
3
|
+
using System;
|
|
4
|
+
using UnityEngine;
|
|
5
|
+
|
|
6
|
+
namespace DREditor.RoomBuilding.Implementation
|
|
7
|
+
{
|
|
8
|
+
/// <summary>
|
|
9
|
+
///
|
|
10
|
+
/// </summary>
|
|
11
|
+
[Serializable]
|
|
12
|
+
public class TriggerStateData : StateDataAsset<EventTrigger>
|
|
13
|
+
{
|
|
14
|
+
#if UNITY_EDITOR
|
|
15
|
+
[ContextMenu("Convert")]
|
|
16
|
+
public void Convert() => TriggerConverter.ConvertTriggerAsset(this);
|
|
17
|
+
#endif
|
|
18
|
+
}
|
|
19
19
|
}
|