Skip to content

Commit fa51fca

Browse files
committed
PrefabManager added OnID/Category Changed callbacks
1 parent 206f789 commit fa51fca

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

Assets/MapEditor/Managers/PrefabManager.cs

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,40 @@
88

99
public static class PrefabManager
1010
{
11+
#region Init
12+
[InitializeOnLoadMethod]
13+
private static void Init()
14+
{
15+
EditorApplication.update += OnProjectLoad;
16+
}
17+
18+
private static void OnProjectLoad()
19+
{
20+
DefaultPrefab = Resources.Load<GameObject>("Prefabs/DefaultPrefab");
21+
PrefabParent = GameObject.FindGameObjectWithTag("Prefabs").transform;
22+
if (DefaultPrefab != null && PrefabParent != null)
23+
{
24+
EditorApplication.update -= OnProjectLoad;
25+
if (!AssetManager.IsInitialised && SettingsManager.LoadBundleOnLaunch)
26+
AssetManager.Initialise(SettingsManager.RustDirectory + SettingsManager.BundlePathExt);
27+
}
28+
}
29+
#endregion
30+
1131
public static class Callbacks
1232
{
1333
public delegate void PrefabManagerCallback(GameObject prefab);
1434

1535
/// <summary>Called after prefab is loaded and setup from bundle. </summary>
1636
public static event PrefabManagerCallback PrefabLoaded;
37+
/// <summary>Called after prefab category is renamed.</summary>
38+
public static event PrefabManagerCallback PrefabCategoryChanged;
39+
/// <summary>Called after prefab ID is changed.</summary>
40+
public static event PrefabManagerCallback PrefabIDChanged;
1741

1842
public static void OnPrefabLoaded(GameObject prefab) => PrefabLoaded?.Invoke(prefab);
43+
public static void OnPrefabCategoryChanged(GameObject prefab) => PrefabCategoryChanged?.Invoke(prefab);
44+
public static void OnPrefabIDChanged(GameObject prefab) => PrefabIDChanged?.Invoke(prefab);
1945
}
2046

2147
public static GameObject DefaultPrefab { get; private set; }
@@ -32,24 +58,6 @@ public static class Callbacks
3258

3359
public static bool IsChangingPrefabs { get; private set; }
3460

35-
[InitializeOnLoadMethod]
36-
private static void Init()
37-
{
38-
EditorApplication.update += OnProjectLoad;
39-
}
40-
41-
private static void OnProjectLoad()
42-
{
43-
DefaultPrefab = Resources.Load<GameObject>("Prefabs/DefaultPrefab");
44-
PrefabParent = GameObject.FindGameObjectWithTag("Prefabs").transform;
45-
if (DefaultPrefab != null && PrefabParent != null)
46-
{
47-
EditorApplication.update -= OnProjectLoad;
48-
if (!AssetManager.IsInitialised && SettingsManager.LoadBundleOnLaunch)
49-
AssetManager.Initialise(SettingsManager.RustDirectory + SettingsManager.BundlePathExt);
50-
}
51-
}
52-
5361
/// <summary>Loads, sets up and returns the prefab at the asset path.</summary>
5462
/// <param name="path">The prefab path in the bundle file.</param>
5563
public static GameObject Load(string path)
@@ -61,10 +69,7 @@ public static GameObject Load(string path)
6169

6270
/// <summary>Loads, sets up and returns the prefab at the prefab id.</summary>
6371
/// <param name="id">The prefab manifest id.</param>
64-
public static GameObject Load(uint id)
65-
{
66-
return Load(AssetManager.ToPath(id));
67-
}
72+
public static GameObject Load(uint id) => Load(AssetManager.ToPath(id));
6873

6974
/// <summary>Searches through all prefabs found in bundle files, returning matches.</summary>
7075
/// <returns>List of strings containing the path matching the <paramref name="key"/>.</returns>
@@ -322,6 +327,7 @@ public static IEnumerator RenamePrefabCategories(PrefabDataHolder[] prefabs, str
322327
for (int i = 0; i < prefabs.Length; i++)
323328
{
324329
prefabs[i].prefabData.category = name;
330+
Callbacks.OnPrefabCategoryChanged(prefabs[i].gameObject);
325331
if (sw.Elapsed.TotalSeconds > 0.2f)
326332
{
327333
yield return null;
@@ -345,6 +351,7 @@ public static IEnumerator RenamePrefabIDs(PrefabDataHolder[] prefabs, uint id, b
345351
for (int i = 0; i < prefabs.Length; i++)
346352
{
347353
prefabs[i].prefabData.id = id;
354+
Callbacks.OnPrefabIDChanged(prefabs[i].gameObject);
348355
if (replace)
349356
{
350357
prefabs[i].UpdatePrefabData();

0 commit comments

Comments
 (0)