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.
Files changed (133) hide show
  1. package/.attestation.p7m +0 -0
  2. package/DREditor.RoomBuilding.asmdef +28 -28
  3. package/DREditor.RoomBuilding.asmdef.meta +7 -7
  4. package/Editor/DREditor.RoomBuilding.Editor.asmdef +19 -19
  5. package/Editor/DREditor.RoomBuilding.Editor.asmdef.meta +7 -7
  6. package/Editor/FindCharactersInRoomsWizard.cs +55 -55
  7. package/Editor/FindCharactersInRoomsWizard.cs.meta +11 -11
  8. package/Editor/RoomBuilderContainsObjective.cs +38 -38
  9. package/Editor/RoomBuilderContainsObjective.cs.meta +11 -11
  10. package/Editor/RoomBuilderScanWizard.cs +90 -90
  11. package/Editor/RoomBuilderScanWizard.cs.meta +11 -11
  12. package/Editor/ScanRoomBuilders.cs +74 -74
  13. package/Editor/ScanRoomBuilders.cs.meta +11 -11
  14. package/Editor.meta +8 -8
  15. package/Implementation/Actors/ActorData.cs +115 -115
  16. package/Implementation/Actors/ActorData.cs.meta +11 -11
  17. package/Implementation/Actors/ActorStateData.cs +10 -10
  18. package/Implementation/Actors/ActorStateData.cs.meta +11 -11
  19. package/Implementation/Actors/ActorStateLoader.cs +344 -344
  20. package/Implementation/Actors/ActorStateLoader.cs.meta +11 -11
  21. package/Implementation/Actors/TActorData.cs +35 -35
  22. package/Implementation/Actors/TActorData.cs.meta +11 -11
  23. package/Implementation/Actors/TrialActorManager.cs +157 -157
  24. package/Implementation/Actors/TrialActorManager.cs.meta +11 -11
  25. package/Implementation/Actors.meta +8 -8
  26. package/Implementation/DoorLoader.cs +117 -117
  27. package/Implementation/DoorLoader.cs.meta +11 -11
  28. package/Implementation/DoorLoaderUtility.cs +51 -51
  29. package/Implementation/DoorLoaderUtility.cs.meta +11 -11
  30. package/Implementation/DoorStateData.cs +11 -11
  31. package/Implementation/DoorStateData.cs.meta +11 -11
  32. package/Implementation/ItemActorLoader.cs +157 -157
  33. package/Implementation/ItemActorLoader.cs.meta +11 -11
  34. package/Implementation/ItemData.cs +67 -67
  35. package/Implementation/ItemData.cs.meta +11 -11
  36. package/Implementation/ItemStateData.cs +10 -10
  37. package/Implementation/ItemStateData.cs.meta +11 -11
  38. package/Implementation/MoveLoader.cs +67 -67
  39. package/Implementation/MoveLoader.cs.meta +11 -11
  40. package/Implementation/MoveStateData.cs +11 -11
  41. package/Implementation/MoveStateData.cs.meta +11 -11
  42. package/Implementation/RoomStateHandlerBase.cs +241 -241
  43. package/Implementation/RoomStateHandlerBase.cs.meta +11 -11
  44. package/Implementation/SaveableData.cs +56 -56
  45. package/Implementation/SaveableData.cs.meta +11 -11
  46. package/Implementation/SaveableDataSet.cs +66 -66
  47. package/Implementation/SaveableDataSet.cs.meta +11 -11
  48. package/Implementation/SaveableManager.cs +70 -70
  49. package/Implementation/SaveableManager.cs.meta +11 -11
  50. package/Implementation/SaveableStateData.cs +10 -10
  51. package/Implementation/SaveableStateData.cs.meta +11 -11
  52. package/Implementation/SpawnableLoader.cs +125 -125
  53. package/Implementation/SpawnableLoader.cs.meta +11 -11
  54. package/Implementation/SpawnableStateData.cs +11 -11
  55. package/Implementation/SpawnableStateData.cs.meta +11 -11
  56. package/Implementation/StateDataAsset.cs +28 -28
  57. package/Implementation/StateDataAsset.cs.meta +11 -11
  58. package/Implementation/SubAreaLoader.cs +108 -108
  59. package/Implementation/SubAreaLoader.cs.meta +11 -11
  60. package/Implementation/SubAreaStateData.cs +11 -11
  61. package/Implementation/SubAreaStateData.cs.meta +11 -11
  62. package/Implementation/TriggerConverter.cs +137 -137
  63. package/Implementation/TriggerConverter.cs.meta +11 -11
  64. package/Implementation/TriggerLoader.cs +295 -295
  65. package/Implementation/TriggerLoader.cs.meta +11 -11
  66. package/Implementation/TriggerStateData.cs +18 -18
  67. package/Implementation/TriggerStateData.cs.meta +11 -11
  68. package/Implementation.meta +8 -8
  69. package/InstanceListWrapper.cs +23 -23
  70. package/InstanceListWrapper.cs.meta +11 -11
  71. package/Instances/ConvertInstanceData.cs +89 -89
  72. package/Instances/ConvertInstanceData.cs.meta +11 -11
  73. package/Instances/InstanceData.cs +43 -43
  74. package/Instances/InstanceData.cs.meta +11 -11
  75. package/Instances/InstanceStateData.cs +51 -51
  76. package/Instances/InstanceStateData.cs.meta +11 -11
  77. package/Instances/RoomInstanceData.cs +68 -68
  78. package/Instances/RoomInstanceData.cs.meta +11 -11
  79. package/Instances/RoomInstanceManager.cs +452 -452
  80. package/Instances/RoomInstanceManager.cs.meta +11 -11
  81. package/Instances.meta +8 -8
  82. package/LoadInvestigationRoomState.cs +53 -53
  83. package/LoadInvestigationRoomState.cs.meta +11 -11
  84. package/Old/ActorLoader.cs +382 -382
  85. package/Old/ActorLoader.cs.meta +11 -11
  86. package/Old/Room.cs +24 -24
  87. package/Old/Room.cs.meta +11 -11
  88. package/Old/RoomBuilder.cs +59 -59
  89. package/Old/RoomBuilder.cs.meta +11 -11
  90. package/Old/RoomData.cs +90 -90
  91. package/Old/RoomData.cs.meta +11 -11
  92. package/Old/RoomManager.cs +256 -256
  93. package/Old/RoomManager.cs.meta +11 -11
  94. package/Old/RoomManagerDisplayEditor.cs +72 -72
  95. package/Old/RoomManagerDisplayEditor.cs.meta +11 -11
  96. package/Old/RoomManagerEditor.cs +211 -211
  97. package/Old/RoomManagerEditor.cs.meta +11 -11
  98. package/Old/RoomManagerShellDisplayEditor.cs +48 -48
  99. package/Old/RoomManagerShellDisplayEditor.cs.meta +11 -11
  100. package/Old/RoomSection.cs +35 -35
  101. package/Old/RoomSection.cs.meta +11 -11
  102. package/Old.meta +8 -8
  103. package/RoomManagerBase.cs +84 -84
  104. package/RoomManagerBase.cs.meta +11 -11
  105. package/RoomManagerEditorBase.cs +86 -86
  106. package/RoomManagerEditorBase.cs.meta +11 -11
  107. package/RoomManagerEditorCoreBase.cs +159 -159
  108. package/RoomManagerEditorCoreBase.cs.meta +11 -11
  109. package/RoomSaveDisplayEditorBase.cs +111 -111
  110. package/RoomSaveDisplayEditorBase.cs.meta +11 -11
  111. package/RoomShellDisplayEditorBase.cs +68 -68
  112. package/RoomShellDisplayEditorBase.cs.meta +11 -11
  113. package/RoomStateBuilder.cs +53 -53
  114. package/RoomStateBuilder.cs.meta +11 -11
  115. package/RoomStateData.cs +58 -58
  116. package/RoomStateData.cs.meta +11 -11
  117. package/RoomStateManager.cs +202 -202
  118. package/RoomStateManager.cs.meta +11 -11
  119. package/RoomStateManagerEditor.cs +392 -392
  120. package/RoomStateManagerEditor.cs.meta +11 -11
  121. package/RoomStateSaveDisplayEditor.cs +175 -175
  122. package/RoomStateSaveDisplayEditor.cs.meta +11 -11
  123. package/RoomStateSection.cs +69 -69
  124. package/RoomStateSection.cs.meta +11 -11
  125. package/RoomStateShellDisplayEditor.cs +108 -108
  126. package/RoomStateShellDisplayEditor.cs.meta +11 -11
  127. package/{Samples → Samples~}/Room_State_Manager.prefab +473 -473
  128. package/{Samples → Samples~}/Room_State_Manager.prefab.meta +7 -7
  129. package/{Samples → Samples~}/Trial_Actor_Manager.prefab +51 -51
  130. package/{Samples → Samples~}/Trial_Actor_Manager.prefab.meta +7 -7
  131. package/package.json +51 -46
  132. package/package.json.meta +7 -7
  133. package/Samples.meta +0 -8
@@ -1,67 +1,67 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.Spawnables;
3
- using System;
4
- using UnityEngine;
5
-
6
- namespace DREditor.RoomBuilding.Implementation
7
- {
8
- /// <summary>
9
- ///
10
- /// </summary>
11
- [Serializable]
12
- public class SaveableDataSet
13
- {
14
- /// <summary>
15
- ///
16
- /// </summary>
17
- public int subID;
18
-
19
- /// <summary>
20
- ///
21
- /// </summary>
22
- [TextArea(3, 1000)]
23
- public string data;
24
-
25
- /// <summary>
26
- ///
27
- /// </summary>
28
- public string typeName;
29
-
30
-
31
- public SaveableDataSet(ISaveable manager)
32
- {
33
- if (manager == null)
34
- {
35
- UnityEngine.Debug.Log("Logging notice of savable data set with null manager.");
36
-
37
- return;
38
- }
39
-
40
- subID = manager.SubID;
41
-
42
- data = manager.Save();
43
-
44
- typeName = manager.GetType().Name;
45
- }
46
- }
47
-
48
- /* The ISaveable is designed to make managers to dynamically save data by transfering it to data strings and
49
- * being able to load it whenever one needs it etc.
50
- public class SaveableClass : Monobehavior, ISaveable
51
- {
52
- #region Saving
53
- public int SubID { get => subID; }
54
- [SerializeField] int subID;
55
- public string Save()
56
- {
57
- return JsonUtility.ToJson(InstanceData);
58
- }
59
-
60
- public void Load(string data)
61
- {
62
- InstanceData = JsonUtility.FromJson<InstanceDataClass>(data);
63
- }
64
- #endregion
65
- }
66
- */
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Spawnables;
3
+ using System;
4
+ using UnityEngine;
5
+
6
+ namespace DREditor.RoomBuilding.Implementation
7
+ {
8
+ /// <summary>
9
+ ///
10
+ /// </summary>
11
+ [Serializable]
12
+ public class SaveableDataSet
13
+ {
14
+ /// <summary>
15
+ ///
16
+ /// </summary>
17
+ public int subID;
18
+
19
+ /// <summary>
20
+ ///
21
+ /// </summary>
22
+ [TextArea(3, 1000)]
23
+ public string data;
24
+
25
+ /// <summary>
26
+ ///
27
+ /// </summary>
28
+ public string typeName;
29
+
30
+
31
+ public SaveableDataSet(ISaveable manager)
32
+ {
33
+ if (manager == null)
34
+ {
35
+ UnityEngine.Debug.Log("Logging notice of savable data set with null manager.");
36
+
37
+ return;
38
+ }
39
+
40
+ subID = manager.SubID;
41
+
42
+ data = manager.Save();
43
+
44
+ typeName = manager.GetType().Name;
45
+ }
46
+ }
47
+
48
+ /* The ISaveable is designed to make managers to dynamically save data by transfering it to data strings and
49
+ * being able to load it whenever one needs it etc.
50
+ public class SaveableClass : Monobehavior, ISaveable
51
+ {
52
+ #region Saving
53
+ public int SubID { get => subID; }
54
+ [SerializeField] int subID;
55
+ public string Save()
56
+ {
57
+ return JsonUtility.ToJson(InstanceData);
58
+ }
59
+
60
+ public void Load(string data)
61
+ {
62
+ InstanceData = JsonUtility.FromJson<InstanceDataClass>(data);
63
+ }
64
+ #endregion
65
+ }
66
+ */
67
67
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: db3757bc1cf45cf4cb327c9cd7f5b2f3
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: db3757bc1cf45cf4cb327c9cd7f5b2f3
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,71 +1,71 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.Spawnables;
3
- using System.Collections.Generic;
4
- using System.Linq;
5
- using UnityEngine;
6
-
7
- namespace DREditor.RoomBuilding.Implementation
8
- {
9
- /// <summary>
10
- ///
11
- /// </summary>
12
- [ClassHeader(nameof(RoomStateHandlerBase<SaveableStateData, SaveableDataSet>) +
13
- " for types <" + nameof(SaveableStateData) + ", " + nameof(SaveableDataSet) + ">" +
14
- "\n\n")]
15
- public class SaveableManager : RoomStateHandlerBase<SaveableStateData, SaveableDataSet>
16
- {
17
- /// <inheritdoc/>
18
- public override List<SaveableDataSet> Save() => SaveData().dataSets;
19
-
20
- /// <inheritdoc/>
21
- public override void Unload(bool inEditor) { }
22
-
23
- /// <inheritdoc/>
24
- protected override void LoadAssetProcess(List<SaveableDataSet> baseDatas, List<SaveableDataSet> instanceDatas = null)
25
- {
26
- Load(new SaveableData(baseDatas));
27
-
28
- Load(new SaveableData(instanceDatas));
29
- }
30
-
31
- /// <summary>
32
- ///
33
- /// </summary>
34
- /// <returns></returns>
35
- public static SaveableData SaveData()
36
- {
37
- SaveableData data = new();
38
-
39
- var list = UnityEngine.Object.FindObjectsByType<MonoBehaviour>().OfType<ISaveable>();
40
-
41
- if (!list.Any())
42
- return data;
43
-
44
- foreach (var item in list)
45
- {
46
- data.dataSets.Add(new SaveableDataSet(item));
47
- }
48
-
49
- data.IsMatch();
50
-
51
- return data;
52
- }
53
-
54
- /// <summary>
55
- ///
56
- /// </summary>
57
- /// <param name="data"></param>
58
- public static void Load(SaveableData data)
59
- {
60
- if (data == null || data.dataSets == null || data.dataSets.Count == 0)
61
- return;
62
-
63
- var list = UnityEngine.Object.FindObjectsByType<MonoBehaviour>().OfType<ISaveable>();
64
-
65
- foreach (var item in list)
66
- foreach (var info in data.dataSets)
67
- if (info.subID == item.SubID && item.GetType().Name == info.typeName)
68
- item.Load(info.data);
69
- }
70
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Spawnables;
3
+ using System.Collections.Generic;
4
+ using System.Linq;
5
+ using UnityEngine;
6
+
7
+ namespace DREditor.RoomBuilding.Implementation
8
+ {
9
+ /// <summary>
10
+ ///
11
+ /// </summary>
12
+ [ClassHeader(nameof(RoomStateHandlerBase<SaveableStateData, SaveableDataSet>) +
13
+ " for types <" + nameof(SaveableStateData) + ", " + nameof(SaveableDataSet) + ">" +
14
+ "\n\n")]
15
+ public class SaveableManager : RoomStateHandlerBase<SaveableStateData, SaveableDataSet>
16
+ {
17
+ /// <inheritdoc/>
18
+ public override List<SaveableDataSet> Save() => SaveData().dataSets;
19
+
20
+ /// <inheritdoc/>
21
+ public override void Unload(bool inEditor) { }
22
+
23
+ /// <inheritdoc/>
24
+ protected override void LoadAssetProcess(List<SaveableDataSet> baseDatas, List<SaveableDataSet> instanceDatas = null)
25
+ {
26
+ Load(new SaveableData(baseDatas));
27
+
28
+ Load(new SaveableData(instanceDatas));
29
+ }
30
+
31
+ /// <summary>
32
+ ///
33
+ /// </summary>
34
+ /// <returns></returns>
35
+ public static SaveableData SaveData()
36
+ {
37
+ SaveableData data = new();
38
+
39
+ var list = UnityEngine.Object.FindObjectsByType<MonoBehaviour>().OfType<ISaveable>();
40
+
41
+ if (!list.Any())
42
+ return data;
43
+
44
+ foreach (var item in list)
45
+ {
46
+ data.dataSets.Add(new SaveableDataSet(item));
47
+ }
48
+
49
+ data.IsMatch();
50
+
51
+ return data;
52
+ }
53
+
54
+ /// <summary>
55
+ ///
56
+ /// </summary>
57
+ /// <param name="data"></param>
58
+ public static void Load(SaveableData data)
59
+ {
60
+ if (data == null || data.dataSets == null || data.dataSets.Count == 0)
61
+ return;
62
+
63
+ var list = UnityEngine.Object.FindObjectsByType<MonoBehaviour>().OfType<ISaveable>();
64
+
65
+ foreach (var item in list)
66
+ foreach (var info in data.dataSets)
67
+ if (info.subID == item.SubID && item.GetType().Name == info.typeName)
68
+ item.Load(info.data);
69
+ }
70
+ }
71
71
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 92dee3b5b45812b4f9da16dcb8f383af
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: 92dee3b5b45812b4f9da16dcb8f383af
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,11 +1,11 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using System;
3
-
4
- namespace DREditor.RoomBuilding.Implementation
5
- {
6
- /// <summary>
7
- ///
8
- /// </summary>
9
- [Serializable]
10
- public class SaveableStateData : StateDataAsset<SaveableDataSet> { }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System;
3
+
4
+ namespace DREditor.RoomBuilding.Implementation
5
+ {
6
+ /// <summary>
7
+ ///
8
+ /// </summary>
9
+ [Serializable]
10
+ public class SaveableStateData : StateDataAsset<SaveableDataSet> { }
11
11
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: 177b9539d3c61f14d90778a87b6a2481
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: 177b9539d3c61f14d90778a87b6a2481
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,126 +1,126 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using DREditor.Spawnables;
3
- using System.Collections.Generic;
4
- #if UNITY_EDITOR
5
- using UnityEditor;
6
- #endif
7
- using UnityEngine;
8
-
9
- namespace DREditor.RoomBuilding.Implementation
10
- {
11
- /// <summary>
12
- ///
13
- /// </summary>
14
- [ClassHeader(nameof(RoomStateHandlerBase<SpawnableStateData, GameObject>) +
15
- " for types <" + nameof(SpawnableStateData) + ", " + nameof(GameObject) + ">" +
16
- "\n\n")]
17
- public class SpawnableLoader : RoomStateHandlerBase<SpawnableStateData, GameObject>
18
- {
19
- /// <inheritdoc/>
20
- public override List<GameObject> Save() => SaveSpawnables();
21
-
22
- /// <inheritdoc/>
23
- protected override void LoadAssetProcess(List<GameObject> baseDatas, List<GameObject> instanceDatas = null)
24
- {
25
- LoadSpawnables(baseDatas);
26
-
27
- if (instanceDatas != null && instanceDatas.Count != 0)
28
- LoadSpawnables(instanceDatas);
29
- }
30
-
31
- /// <inheritdoc/>
32
- public override void Unload(bool inEditor) => UnloadSpawnables(true);
33
-
34
- /// <summary>
35
- ///
36
- /// </summary>
37
- /// <returns></returns>
38
- public static List<GameObject> SaveSpawnables()
39
- {
40
- List<GameObject> objects = new();
41
- var spawnables = FindObjectsByType<Spawnable>();
42
-
43
- #if UNITY_EDITOR
44
- foreach (Spawnable spawnable in spawnables)
45
- if (PrefabUtility.GetCorrespondingObjectFromSource(spawnable.gameObject) is GameObject prefab &&
46
- !objects.Contains(prefab))
47
- objects.Add(prefab);
48
- #endif
49
-
50
- return objects;
51
- }
52
-
53
- /// <summary>
54
- ///
55
- /// </summary>
56
- /// <param name="spawnables"></param>
57
- public static void LoadSpawnables(List<GameObject> spawnables)
58
- {
59
- #if UNITY_EDITOR
60
- if (Application.isPlaying)
61
- SpawnObjects(spawnables);
62
- else
63
- LoadSpawnablesInEditor(spawnables);
64
- #else
65
- SpawnObjects(spawnables);
66
- #endif
67
- }
68
-
69
- /// <summary>
70
- ///
71
- /// </summary>
72
- /// <param name="spawnables"></param>
73
- static void SpawnObjects(List<GameObject> spawnables)
74
- {
75
- foreach (GameObject gameObject in spawnables)
76
- SpawnObject(gameObject);
77
- }
78
-
79
- /// <summary>
80
- ///
81
- /// </summary>
82
- /// <param name="spawnable"></param>
83
- static void SpawnObject(GameObject spawnable)
84
- {
85
- if (spawnable != null)
86
- ClearCloneName(Instantiate(spawnable));
87
- else
88
- UnityEngine.Debug.LogWarning("There's a Missing Prefab Reference in this room save!");
89
- }
90
-
91
- /// <summary>
92
- ///
93
- /// </summary>
94
- /// <param name="gameObject"></param>
95
- static void ClearCloneName(GameObject gameObject) =>
96
- gameObject.name = gameObject.name.Replace("(Clone)", "");
97
- #if UNITY_EDITOR
98
- /// <summary>
99
- ///
100
- /// </summary>
101
- /// <param name="spawnables"></param>
102
- static void LoadSpawnablesInEditor(List<GameObject> spawnables)
103
- {
104
- foreach (GameObject spawnable in spawnables)
105
- if (spawnable != null)
106
- PrefabUtility.InstantiatePrefab(spawnable);
107
- else
108
- UnityEngine.Debug.LogWarning("There's a Missing Prefab Reference in this room save!");
109
- }
110
- #endif
111
- /// <summary>
112
- ///
113
- /// </summary>
114
- /// <param name="inEditor"></param>
115
- public static void UnloadSpawnables(bool inEditor)
116
- {
117
- var spawnables = FindObjectsByType<Spawnable>();
118
-
119
- foreach (Spawnable spawnable in spawnables)
120
- if (inEditor)
121
- DestroyImmediate(spawnable.gameObject);
122
- else
123
- Destroy(spawnable.gameObject);
124
- }
125
- }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using DREditor.Spawnables;
3
+ using System.Collections.Generic;
4
+ #if UNITY_EDITOR
5
+ using UnityEditor;
6
+ #endif
7
+ using UnityEngine;
8
+
9
+ namespace DREditor.RoomBuilding.Implementation
10
+ {
11
+ /// <summary>
12
+ ///
13
+ /// </summary>
14
+ [ClassHeader(nameof(RoomStateHandlerBase<SpawnableStateData, GameObject>) +
15
+ " for types <" + nameof(SpawnableStateData) + ", " + nameof(GameObject) + ">" +
16
+ "\n\n")]
17
+ public class SpawnableLoader : RoomStateHandlerBase<SpawnableStateData, GameObject>
18
+ {
19
+ /// <inheritdoc/>
20
+ public override List<GameObject> Save() => SaveSpawnables();
21
+
22
+ /// <inheritdoc/>
23
+ protected override void LoadAssetProcess(List<GameObject> baseDatas, List<GameObject> instanceDatas = null)
24
+ {
25
+ LoadSpawnables(baseDatas);
26
+
27
+ if (instanceDatas != null && instanceDatas.Count != 0)
28
+ LoadSpawnables(instanceDatas);
29
+ }
30
+
31
+ /// <inheritdoc/>
32
+ public override void Unload(bool inEditor) => UnloadSpawnables(true);
33
+
34
+ /// <summary>
35
+ ///
36
+ /// </summary>
37
+ /// <returns></returns>
38
+ public static List<GameObject> SaveSpawnables()
39
+ {
40
+ List<GameObject> objects = new();
41
+ var spawnables = FindObjectsByType<Spawnable>();
42
+
43
+ #if UNITY_EDITOR
44
+ foreach (Spawnable spawnable in spawnables)
45
+ if (PrefabUtility.GetCorrespondingObjectFromSource(spawnable.gameObject) is GameObject prefab &&
46
+ !objects.Contains(prefab))
47
+ objects.Add(prefab);
48
+ #endif
49
+
50
+ return objects;
51
+ }
52
+
53
+ /// <summary>
54
+ ///
55
+ /// </summary>
56
+ /// <param name="spawnables"></param>
57
+ public static void LoadSpawnables(List<GameObject> spawnables)
58
+ {
59
+ #if UNITY_EDITOR
60
+ if (Application.isPlaying)
61
+ SpawnObjects(spawnables);
62
+ else
63
+ LoadSpawnablesInEditor(spawnables);
64
+ #else
65
+ SpawnObjects(spawnables);
66
+ #endif
67
+ }
68
+
69
+ /// <summary>
70
+ ///
71
+ /// </summary>
72
+ /// <param name="spawnables"></param>
73
+ static void SpawnObjects(List<GameObject> spawnables)
74
+ {
75
+ foreach (GameObject gameObject in spawnables)
76
+ SpawnObject(gameObject);
77
+ }
78
+
79
+ /// <summary>
80
+ ///
81
+ /// </summary>
82
+ /// <param name="spawnable"></param>
83
+ static void SpawnObject(GameObject spawnable)
84
+ {
85
+ if (spawnable != null)
86
+ ClearCloneName(Instantiate(spawnable));
87
+ else
88
+ UnityEngine.Debug.LogWarning("There's a Missing Prefab Reference in this room save!");
89
+ }
90
+
91
+ /// <summary>
92
+ ///
93
+ /// </summary>
94
+ /// <param name="gameObject"></param>
95
+ static void ClearCloneName(GameObject gameObject) =>
96
+ gameObject.name = gameObject.name.Replace("(Clone)", "");
97
+ #if UNITY_EDITOR
98
+ /// <summary>
99
+ ///
100
+ /// </summary>
101
+ /// <param name="spawnables"></param>
102
+ static void LoadSpawnablesInEditor(List<GameObject> spawnables)
103
+ {
104
+ foreach (GameObject spawnable in spawnables)
105
+ if (spawnable != null)
106
+ PrefabUtility.InstantiatePrefab(spawnable);
107
+ else
108
+ UnityEngine.Debug.LogWarning("There's a Missing Prefab Reference in this room save!");
109
+ }
110
+ #endif
111
+ /// <summary>
112
+ ///
113
+ /// </summary>
114
+ /// <param name="inEditor"></param>
115
+ public static void UnloadSpawnables(bool inEditor)
116
+ {
117
+ var spawnables = FindObjectsByType<Spawnable>();
118
+
119
+ foreach (Spawnable spawnable in spawnables)
120
+ if (inEditor)
121
+ DestroyImmediate(spawnable.gameObject);
122
+ else
123
+ Destroy(spawnable.gameObject);
124
+ }
125
+ }
126
126
  }
@@ -1,11 +1,11 @@
1
- fileFormatVersion: 2
2
- guid: fd3c20c9b5ffe70408aec280a75678af
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: fd3c20c9b5ffe70408aec280a75678af
3
+ MonoImporter:
4
+ externalObjects: {}
5
+ serializedVersion: 2
6
+ defaultReferences: []
7
+ executionOrder: 0
8
+ icon: {instanceID: 0}
9
+ userData:
10
+ assetBundleName:
11
+ assetBundleVariant:
@@ -1,12 +1,12 @@
1
- //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
- using System;
3
- using UnityEngine;
4
-
5
- namespace DREditor.RoomBuilding.Implementation
6
- {
7
- /// <summary>
8
- ///
9
- /// </summary>
10
- [Serializable]
11
- public class SpawnableStateData : StateDataAsset<GameObject> { }
1
+ //Author: Benjamin "Sweden" Jillson : Discord: sweden_gaming For Project Eden's Garden
2
+ using System;
3
+ using UnityEngine;
4
+
5
+ namespace DREditor.RoomBuilding.Implementation
6
+ {
7
+ /// <summary>
8
+ ///
9
+ /// </summary>
10
+ [Serializable]
11
+ public class SpawnableStateData : StateDataAsset<GameObject> { }
12
12
  }