|
5 | 5 | using UnityEditor; |
6 | 6 | using UnityEditor.SettingsManagement; |
7 | 7 | using Newtonsoft.Json; |
| 8 | +using UnityEngine; |
8 | 9 |
|
9 | 10 | namespace Eflatun.SceneReference.Editor |
10 | 11 | { |
@@ -60,7 +61,7 @@ public static class SceneDataMaps |
60 | 61 | /// <inheritdoc cref="SettingsManager"/> |
61 | 62 | /// </remarks> |
62 | 63 | /// <seealso cref="IsGenerationTriggerEnabled"/> |
63 | | - [field: UserSetting(CategoryName, "Generation Triggers", "Controls when the scene data maps get regenerated.\n\n• AAfter Scene Asset Change: Regenerate the maps every time a scene asset changes (delete, create, move, rename).\n\n• Before Enter Play Mode: Regenerate the maps before entering play mode in the editor.\n\n• Before Build: Regenerate the maps before a build.\n\n• After Packages Resolve: Regenerate the maps after UPM packages are resolved.\n\n• After Addressables Change: Regenerate the maps after addressable group entries change. Only relevant if you have addressables support enabled.\n\nIt is recommended that you leave this option at 'All' unless you are debugging something. Failure to generate the maps when needed can result in broken scene references in runtime.\n\nNote: 'All' and 'Everything' are the same thing. They both represent all triggers.")] |
| 64 | + [field: UserSetting] |
64 | 65 | public static ProjectSetting<SceneDataMapsGeneratorTriggers> GenerationTriggers { get; } |
65 | 66 | = new ProjectSetting<SceneDataMapsGeneratorTriggers>("SceneDataMaps.GenerationTriggers", SceneDataMapsGeneratorTriggers.All); |
66 | 67 |
|
@@ -90,6 +91,24 @@ public static class SceneDataMaps |
90 | 91 | /// <seealso cref="GenerationTriggers"/> |
91 | 92 | public static bool IsGenerationTriggerEnabled(SceneDataMapsGeneratorTriggers trigger) => |
92 | 93 | GenerationTriggers.value.IncludesFlag(trigger); |
| 94 | + |
| 95 | + [UserSettingBlock(CategoryName)] |
| 96 | + private static void Draw(string searchContext) |
| 97 | + { |
| 98 | + // Draw GenerationTriggers field. |
| 99 | + { |
| 100 | + var oldPublic = GenerationTriggers.value; |
| 101 | + var oldInternal = (InternalSceneDataMapsGeneratorTriggers)oldPublic; |
| 102 | + var label = new GUIContent("Generation Triggers", "Controls when the scene data maps get regenerated.\n\n• After Scene Asset Change: Regenerate the maps every time a scene asset changes (delete, create, move, rename).\n\n• Before Enter Play Mode: Regenerate the maps before entering play mode in the editor.\n\n• Before Build: Regenerate the maps before a build.\n\n• After Packages Resolve: Regenerate the maps after UPM packages are resolved.\n\n• After Addressables Change: Regenerate the maps after addressable group entries change. Only relevant if you have addressables support enabled.\n\nIt is recommended that you leave this option at 'All' unless you are debugging something. Failure to generate the maps when needed can result in broken scene references in runtime.\n\nNote: 'All' and 'Everything' are the same thing. They both represent all triggers."); |
| 103 | + var newInternal = EditorGUILayout.EnumFlagsField(label, oldInternal); |
| 104 | + SettingsGUILayout.DoResetContextMenuForLastRect(GenerationTriggers); |
| 105 | + var newPublic = (SceneDataMapsGeneratorTriggers)newInternal; |
| 106 | + if (newPublic != oldPublic) |
| 107 | + { |
| 108 | + GenerationTriggers.value = newPublic; |
| 109 | + } |
| 110 | + } |
| 111 | + } |
93 | 112 | } |
94 | 113 |
|
95 | 114 | /// <summary> |
|
0 commit comments