@@ -29,14 +29,12 @@ internal set
29
29
/// <summary>
30
30
/// The GameObjects in the currently inspected scene.
31
31
/// </summary>
32
- public static ReadOnlyCollection < GameObject > CurrentRootObjects => new ReadOnlyCollection < GameObject > ( rootObjects ) ;
33
- private static GameObject [ ] rootObjects = new GameObject [ 0 ] ;
32
+ public static GameObject [ ] CurrentRootObjects { get ; private set ; } = new GameObject [ 0 ] ;
34
33
35
34
/// <summary>
36
35
/// All currently loaded Scenes.
37
36
/// </summary>
38
- public static ReadOnlyCollection < Scene > LoadedScenes => new ReadOnlyCollection < Scene > ( allLoadedScenes ) ;
39
- private static readonly List < Scene > allLoadedScenes = new List < Scene > ( ) ;
37
+ public static List < Scene > LoadedScenes { get ; private set ; } = new List < Scene > ( ) ;
40
38
private static HashSet < Scene > previousLoadedScenes ;
41
39
42
40
/// <summary>
@@ -59,7 +57,7 @@ internal set
59
57
/// <summary>
60
58
/// Invoked whenever the list of currently loaded Scenes changes. The argument contains all loaded scenes after the change.
61
59
/// </summary>
62
- public static event Action < ReadOnlyCollection < Scene > > OnLoadedScenesChanged ;
60
+ public static event Action < List < Scene > > OnLoadedScenesChanged ;
63
61
64
62
/// <summary>
65
63
/// Equivalent to <see cref="SceneManager.sceneCount"/> + 2, to include 'DontDestroyOnLoad' and the 'None' scene.
@@ -115,7 +113,7 @@ internal static void Update()
115
113
int confirmedCount = 2 ;
116
114
bool inspectedExists = SelectedScene == DontDestroyScene || ( SelectedScene . HasValue && SelectedScene . Value == default ) ;
117
115
118
- allLoadedScenes . Clear ( ) ;
116
+ LoadedScenes . Clear ( ) ;
119
117
120
118
for ( int i = 0 ; i < SceneManager . sceneCount ; i ++ )
121
119
{
@@ -131,30 +129,26 @@ internal static void Update()
131
129
if ( ! inspectedExists && scene == SelectedScene )
132
130
inspectedExists = true ;
133
131
134
- allLoadedScenes . Add ( scene ) ;
132
+ LoadedScenes . Add ( scene ) ;
135
133
}
136
134
137
- bool anyChange = confirmedCount != allLoadedScenes . Count ;
135
+ bool anyChange = confirmedCount != LoadedScenes . Count ;
138
136
139
- allLoadedScenes . Add ( DontDestroyScene ) ;
140
- allLoadedScenes . Add ( default ) ;
141
- previousLoadedScenes = new HashSet < Scene > ( allLoadedScenes ) ;
137
+ LoadedScenes . Add ( DontDestroyScene ) ;
138
+ LoadedScenes . Add ( default ) ;
139
+ previousLoadedScenes = new HashSet < Scene > ( LoadedScenes ) ;
142
140
143
141
// Default to first scene if none selected or previous selection no longer exists.
144
142
if ( ! inspectedExists )
145
- {
146
- SelectedScene = allLoadedScenes . First ( ) ;
147
- }
143
+ SelectedScene = LoadedScenes . First ( ) ;
148
144
149
145
// Notify on the list changing at all
150
146
if ( anyChange )
151
- {
152
147
OnLoadedScenesChanged ? . Invoke ( LoadedScenes ) ;
153
- }
154
148
155
149
// Finally, update the root objects list.
156
150
if ( SelectedScene != null && ( ( Scene ) SelectedScene ) . IsValid ( ) )
157
- rootObjects = RuntimeProvider . Instance . GetRootGameObjects ( ( Scene ) SelectedScene ) ;
151
+ CurrentRootObjects = RuntimeProvider . Instance . GetRootGameObjects ( ( Scene ) SelectedScene ) ;
158
152
else
159
153
{
160
154
var allObjects = RuntimeProvider . Instance . FindObjectsOfTypeAll ( typeof ( GameObject ) ) ;
@@ -165,7 +159,7 @@ internal static void Update()
165
159
if ( go . transform . parent == null && ! go . scene . IsValid ( ) )
166
160
objects . Add ( go ) ;
167
161
}
168
- rootObjects = objects . ToArray ( ) ;
162
+ CurrentRootObjects = objects . ToArray ( ) ;
169
163
}
170
164
}
171
165
}
0 commit comments