Skip to content

Commit 392c1d0

Browse files
committed
Break Monument Init
1 parent 1873dda commit 392c1d0

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

Assets/MapEditor/Editor/PrefabDataHolderEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public override void OnInspectorGUI()
1414
Functions.PrefabID(script);
1515
Functions.SnapToGround(script);
1616
Functions.ToggleLights(script);
17-
//Functions.BreakPrefab(script);
17+
Functions.BreakPrefab(script);
1818
}
1919
}

Assets/MapEditor/Managers/PrefabManager.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,42 @@ public static void RenamePrefabs(PrefabDataHolder[] prefabs, string name)
165165

166166
public static void BreakPrefab(GameObject prefab)
167167
{
168+
EditorCoroutineUtility.StartCoroutineOwnerless(Coroutines.BreakPrefab(prefab));
168169
}
169170

170171
private static class Coroutines
171172
{
173+
public static IEnumerator BreakPrefab(GameObject prefab)
172174
{
175+
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
176+
sw.Start();
173177

178+
var transforms = prefab.GetComponentsInChildren<Transform>();
179+
int progressId = Progress.Start("Break Prefab", null, Progress.Options.Sticky);
174180

181+
for (int i = 0; i < transforms.Length; i++)
182+
{
183+
if (sw.Elapsed.TotalSeconds > 0.5f)
184+
{
185+
yield return null;
186+
Progress.Report(progressId, (float)i / transforms.Length, "Scanning Prefab: " + i + " / " + transforms.Length);
187+
sw.Restart();
188+
}
189+
var nameSplit = transforms[i].gameObject.name.Split(' ');
190+
var prefabName = nameSplit[0].Trim() + ".prefab";
191+
var prefabPaths = AssetManager.ManifestStrings.Where(x => x.Contains(prefabName));
192+
if (prefabPaths.Count() == 1)
193+
{
194+
GameObject go = GameObject.Instantiate(Load(prefabPaths.First()), PrefabParent);
195+
go.transform.position = transforms[i].gameObject.transform.position;
196+
go.transform.rotation = transforms[i].gameObject.transform.rotation;
197+
go.transform.localScale = transforms[i].gameObject.transform.localScale;
198+
go.name = Load(prefabPaths.First()).name;
199+
go.SetActive(true);
200+
}
201+
}
202+
GameObject.DestroyImmediate(prefab);
203+
Progress.Finish(progressId);
175204
}
176205

177206
public static IEnumerator SpawnPrefabs(PrefabData[] prefabs, int progressID)

0 commit comments

Comments
 (0)