@@ -153,7 +153,7 @@ impl Plugin for AssetPlugin {
153
153
let embedded = EmbeddedAssetRegistry :: default ( ) ;
154
154
{
155
155
let mut sources = app
156
- . world
156
+ . world_mut ( )
157
157
. get_resource_or_insert_with :: < AssetSourceBuilders > ( Default :: default) ;
158
158
sources. init_default_source (
159
159
& self . file_path ,
@@ -169,10 +169,10 @@ impl Plugin for AssetPlugin {
169
169
}
170
170
match self . mode {
171
171
AssetMode :: Unprocessed => {
172
- let mut builders = app. world . resource_mut :: < AssetSourceBuilders > ( ) ;
172
+ let mut builders = app. world_mut ( ) . resource_mut :: < AssetSourceBuilders > ( ) ;
173
173
let sources = builders. build_sources ( watch, false ) ;
174
174
let meta_check = app
175
- . world
175
+ . world ( )
176
176
. get_resource :: < AssetMetaCheck > ( )
177
177
. cloned ( )
178
178
. unwrap_or_else ( AssetMetaCheck :: default) ;
@@ -187,7 +187,7 @@ impl Plugin for AssetPlugin {
187
187
AssetMode :: Processed => {
188
188
#[ cfg( feature = "asset_processor" ) ]
189
189
{
190
- let mut builders = app. world . resource_mut :: < AssetSourceBuilders > ( ) ;
190
+ let mut builders = app. world_mut ( ) . resource_mut :: < AssetSourceBuilders > ( ) ;
191
191
let processor = AssetProcessor :: new ( & mut builders) ;
192
192
let mut sources = builders. build_sources ( false , watch) ;
193
193
sources. gate_on_processor ( processor. data . clone ( ) ) ;
@@ -204,7 +204,7 @@ impl Plugin for AssetPlugin {
204
204
}
205
205
#[ cfg( not( feature = "asset_processor" ) ) ]
206
206
{
207
- let mut builders = app. world . resource_mut :: < AssetSourceBuilders > ( ) ;
207
+ let mut builders = app. world_mut ( ) . resource_mut :: < AssetSourceBuilders > ( ) ;
208
208
let sources = builders. build_sources ( false , watch) ;
209
209
app. insert_resource ( AssetServer :: new_with_meta_check (
210
210
sources,
@@ -318,12 +318,14 @@ pub trait AssetApp {
318
318
319
319
impl AssetApp for App {
320
320
fn register_asset_loader < L : AssetLoader > ( & mut self , loader : L ) -> & mut Self {
321
- self . world . resource :: < AssetServer > ( ) . register_loader ( loader) ;
321
+ self . world ( )
322
+ . resource :: < AssetServer > ( )
323
+ . register_loader ( loader) ;
322
324
self
323
325
}
324
326
325
327
fn register_asset_processor < P : Process > ( & mut self , processor : P ) -> & mut Self {
326
- if let Some ( asset_processor) = self . world . get_resource :: < AssetProcessor > ( ) {
328
+ if let Some ( asset_processor) = self . world ( ) . get_resource :: < AssetProcessor > ( ) {
327
329
asset_processor. register_processor ( processor) ;
328
330
}
329
331
self
@@ -335,13 +337,13 @@ impl AssetApp for App {
335
337
source : AssetSourceBuilder ,
336
338
) -> & mut Self {
337
339
let id = id. into ( ) ;
338
- if self . world . get_resource :: < AssetServer > ( ) . is_some ( ) {
340
+ if self . world ( ) . get_resource :: < AssetServer > ( ) . is_some ( ) {
339
341
error ! ( "{} must be registered before `AssetPlugin` (typically added as part of `DefaultPlugins`)" , id) ;
340
342
}
341
343
342
344
{
343
345
let mut sources = self
344
- . world
346
+ . world_mut ( )
345
347
. get_resource_or_insert_with ( AssetSourceBuilders :: default) ;
346
348
sources. insert ( id, source) ;
347
349
}
@@ -350,22 +352,24 @@ impl AssetApp for App {
350
352
}
351
353
352
354
fn set_default_asset_processor < P : Process > ( & mut self , extension : & str ) -> & mut Self {
353
- if let Some ( asset_processor) = self . world . get_resource :: < AssetProcessor > ( ) {
355
+ if let Some ( asset_processor) = self . world ( ) . get_resource :: < AssetProcessor > ( ) {
354
356
asset_processor. set_default_processor :: < P > ( extension) ;
355
357
}
356
358
self
357
359
}
358
360
359
361
fn init_asset_loader < L : AssetLoader + FromWorld > ( & mut self ) -> & mut Self {
360
- let loader = L :: from_world ( & mut self . world ) ;
362
+ let loader = L :: from_world ( self . world_mut ( ) ) ;
361
363
self . register_asset_loader ( loader)
362
364
}
363
365
364
366
fn init_asset < A : Asset > ( & mut self ) -> & mut Self {
365
367
let assets = Assets :: < A > :: default ( ) ;
366
- self . world . resource :: < AssetServer > ( ) . register_asset ( & assets) ;
367
- if self . world . contains_resource :: < AssetProcessor > ( ) {
368
- let processor = self . world . resource :: < AssetProcessor > ( ) ;
368
+ self . world ( )
369
+ . resource :: < AssetServer > ( )
370
+ . register_asset ( & assets) ;
371
+ if self . world ( ) . contains_resource :: < AssetProcessor > ( ) {
372
+ let processor = self . world ( ) . resource :: < AssetProcessor > ( ) ;
369
373
// The processor should have its own handle provider separate from the Asset storage
370
374
// to ensure the id spaces are entirely separate. Not _strictly_ necessary, but
371
375
// desirable.
@@ -394,7 +398,7 @@ impl AssetApp for App {
394
398
where
395
399
A : Asset + Reflect + FromReflect + GetTypeRegistration ,
396
400
{
397
- let type_registry = self . world . resource :: < AppTypeRegistry > ( ) ;
401
+ let type_registry = self . world ( ) . resource :: < AppTypeRegistry > ( ) ;
398
402
{
399
403
let mut type_registry = type_registry. write ( ) ;
400
404
@@ -408,7 +412,7 @@ impl AssetApp for App {
408
412
}
409
413
410
414
fn preregister_asset_loader < L : AssetLoader > ( & mut self , extensions : & [ & str ] ) -> & mut Self {
411
- self . world
415
+ self . world_mut ( )
412
416
. resource_mut :: < AssetServer > ( )
413
417
. preregister_loader :: < L > ( extensions) ;
414
418
self
@@ -628,7 +632,7 @@ mod tests {
628
632
pub fn run_app_until ( app : & mut App , mut predicate : impl FnMut ( & mut World ) -> Option < ( ) > ) {
629
633
for _ in 0 ..LARGE_ITERATION_COUNT {
630
634
app. update ( ) ;
631
- if predicate ( & mut app. world ) . is_some ( ) {
635
+ if predicate ( app. world_mut ( ) ) . is_some ( ) {
632
636
return ;
633
637
}
634
638
}
@@ -718,13 +722,13 @@ mod tests {
718
722
. init_resource :: < StoredEvents > ( )
719
723
. register_asset_loader ( CoolTextLoader )
720
724
. add_systems ( Update , store_asset_events) ;
721
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
725
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
722
726
let handle: Handle < CoolText > = asset_server. load ( a_path) ;
723
727
let a_id = handle. id ( ) ;
724
- let entity = app. world . spawn ( handle) . id ( ) ;
728
+ let entity = app. world_mut ( ) . spawn ( handle) . id ( ) ;
725
729
app. update ( ) ;
726
730
{
727
- let a_text = get :: < CoolText > ( & app. world , a_id) ;
731
+ let a_text = get :: < CoolText > ( app. world ( ) , a_id) ;
728
732
let ( a_load, a_deps, a_rec_deps) = asset_server. get_load_states ( a_id) . unwrap ( ) ;
729
733
assert ! ( a_text. is_none( ) , "a's asset should not exist yet" ) ;
730
734
assert_eq ! ( a_load, LoadState :: Loading , "a should still be loading" ) ;
@@ -906,27 +910,27 @@ mod tests {
906
910
} ) ;
907
911
908
912
{
909
- let mut texts = app. world . resource_mut :: < Assets < CoolText > > ( ) ;
913
+ let mut texts = app. world_mut ( ) . resource_mut :: < Assets < CoolText > > ( ) ;
910
914
let a = texts. get_mut ( a_id) . unwrap ( ) ;
911
915
a. text = "Changed" . to_string ( ) ;
912
916
}
913
917
914
- app. world . despawn ( entity) ;
918
+ app. world_mut ( ) . despawn ( entity) ;
915
919
app. update ( ) ;
916
920
assert_eq ! (
917
- app. world. resource:: <Assets <CoolText >>( ) . len( ) ,
921
+ app. world( ) . resource:: <Assets <CoolText >>( ) . len( ) ,
918
922
0 ,
919
923
"CoolText asset entities should be despawned when no more handles exist"
920
924
) ;
921
925
app. update ( ) ;
922
926
// this requires a second update because the parent asset was freed in the previous app.update()
923
927
assert_eq ! (
924
- app. world. resource:: <Assets <SubText >>( ) . len( ) ,
928
+ app. world( ) . resource:: <Assets <SubText >>( ) . len( ) ,
925
929
0 ,
926
930
"SubText asset entities should be despawned when no more handles exist"
927
931
) ;
928
- let events = app. world . remove_resource :: < StoredEvents > ( ) . unwrap ( ) ;
929
- let id_results = app. world . remove_resource :: < IdResults > ( ) . unwrap ( ) ;
932
+ let events = app. world_mut ( ) . remove_resource :: < StoredEvents > ( ) . unwrap ( ) ;
933
+ let id_results = app. world_mut ( ) . remove_resource :: < IdResults > ( ) . unwrap ( ) ;
930
934
let expected_events = vec ! [
931
935
AssetEvent :: Added { id: a_id } ,
932
936
AssetEvent :: LoadedWithDependencies {
@@ -1030,7 +1034,7 @@ mod tests {
1030
1034
let ( mut app, gate_opener) = test_app ( dir) ;
1031
1035
app. init_asset :: < CoolText > ( )
1032
1036
. register_asset_loader ( CoolTextLoader ) ;
1033
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
1037
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
1034
1038
let handle: Handle < CoolText > = asset_server. load ( a_path) ;
1035
1039
let a_id = handle. id ( ) ;
1036
1040
{
@@ -1046,7 +1050,7 @@ mod tests {
1046
1050
) ;
1047
1051
}
1048
1052
1049
- app. world . spawn ( handle) ;
1053
+ app. world_mut ( ) . spawn ( handle) ;
1050
1054
gate_opener. open ( a_path) ;
1051
1055
gate_opener. open ( b_path) ;
1052
1056
gate_opener. open ( c_path) ;
@@ -1117,23 +1121,23 @@ mod tests {
1117
1121
1118
1122
let id = {
1119
1123
let handle = {
1120
- let mut texts = app. world . resource_mut :: < Assets < CoolText > > ( ) ;
1124
+ let mut texts = app. world_mut ( ) . resource_mut :: < Assets < CoolText > > ( ) ;
1121
1125
let handle = texts. add ( CoolText :: default ( ) ) ;
1122
1126
texts. get_strong_handle ( handle. id ( ) ) . unwrap ( )
1123
1127
} ;
1124
1128
1125
1129
app. update ( ) ;
1126
1130
1127
1131
{
1128
- let text = app. world . resource :: < Assets < CoolText > > ( ) . get ( & handle) ;
1132
+ let text = app. world ( ) . resource :: < Assets < CoolText > > ( ) . get ( & handle) ;
1129
1133
assert ! ( text. is_some( ) ) ;
1130
1134
}
1131
1135
handle. id ( )
1132
1136
} ;
1133
1137
// handle is dropped
1134
1138
app. update ( ) ;
1135
1139
assert ! (
1136
- app. world. resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1140
+ app. world( ) . resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1137
1141
"asset has no handles, so it should have been dropped last update"
1138
1142
) ;
1139
1143
}
@@ -1161,7 +1165,7 @@ mod tests {
1161
1165
1162
1166
let id = {
1163
1167
let handle = {
1164
- let mut texts = app. world . resource_mut :: < Assets < CoolText > > ( ) ;
1168
+ let mut texts = app. world_mut ( ) . resource_mut :: < Assets < CoolText > > ( ) ;
1165
1169
texts. add ( CoolText {
1166
1170
text : hello. clone ( ) ,
1167
1171
embedded : empty. clone ( ) ,
@@ -1174,7 +1178,7 @@ mod tests {
1174
1178
1175
1179
{
1176
1180
let text = app
1177
- . world
1181
+ . world ( )
1178
1182
. resource :: < Assets < CoolText > > ( )
1179
1183
. get ( & handle)
1180
1184
. unwrap ( ) ;
@@ -1185,40 +1189,40 @@ mod tests {
1185
1189
// handle is dropped
1186
1190
app. update ( ) ;
1187
1191
assert ! (
1188
- app. world. resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1192
+ app. world( ) . resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1189
1193
"asset has no handles, so it should have been dropped last update"
1190
1194
) ;
1191
1195
// remove event is emitted
1192
1196
app. update ( ) ;
1193
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1197
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1194
1198
let expected_events = vec ! [
1195
1199
AssetEvent :: Added { id } ,
1196
1200
AssetEvent :: Unused { id } ,
1197
1201
AssetEvent :: Removed { id } ,
1198
1202
] ;
1199
1203
assert_eq ! ( events, expected_events) ;
1200
1204
1201
- let dep_handle = app. world . resource :: < AssetServer > ( ) . load ( dep_path) ;
1205
+ let dep_handle = app. world ( ) . resource :: < AssetServer > ( ) . load ( dep_path) ;
1202
1206
let a = CoolText {
1203
1207
text : "a" . to_string ( ) ,
1204
1208
embedded : empty,
1205
1209
// this dependency is behind a manual load gate, which should prevent 'a' from emitting a LoadedWithDependencies event
1206
1210
dependencies : vec ! [ dep_handle. clone( ) ] ,
1207
1211
sub_texts : Vec :: new ( ) ,
1208
1212
} ;
1209
- let a_handle = app. world . resource :: < AssetServer > ( ) . load_asset ( a) ;
1213
+ let a_handle = app. world ( ) . resource :: < AssetServer > ( ) . load_asset ( a) ;
1210
1214
app. update ( ) ;
1211
1215
// TODO: ideally it doesn't take two updates for the added event to emit
1212
1216
app. update ( ) ;
1213
1217
1214
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1218
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1215
1219
let expected_events = vec ! [ AssetEvent :: Added { id: a_handle. id( ) } ] ;
1216
1220
assert_eq ! ( events, expected_events) ;
1217
1221
1218
1222
gate_opener. open ( dep_path) ;
1219
1223
loop {
1220
1224
app. update ( ) ;
1221
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1225
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1222
1226
if events. is_empty ( ) {
1223
1227
continue ;
1224
1228
}
@@ -1232,7 +1236,7 @@ mod tests {
1232
1236
break ;
1233
1237
}
1234
1238
app. update ( ) ;
1235
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1239
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1236
1240
let expected_events = vec ! [ AssetEvent :: Added {
1237
1241
id: dep_handle. id( ) ,
1238
1242
} ] ;
@@ -1283,7 +1287,7 @@ mod tests {
1283
1287
app. init_asset :: < CoolText > ( )
1284
1288
. init_asset :: < SubText > ( )
1285
1289
. register_asset_loader ( CoolTextLoader ) ;
1286
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
1290
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
1287
1291
let handle: Handle < LoadedFolder > = asset_server. load_folder ( "text" ) ;
1288
1292
gate_opener. open ( a_path) ;
1289
1293
gate_opener. open ( b_path) ;
@@ -1438,12 +1442,12 @@ mod tests {
1438
1442
( asset_event_handler, asset_load_error_event_handler) . chain ( ) ,
1439
1443
) ;
1440
1444
1441
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
1445
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
1442
1446
let a_path = format ! ( "unstable://{a_path}" ) ;
1443
1447
let a_handle: Handle < CoolText > = asset_server. load ( a_path) ;
1444
1448
let a_id = a_handle. id ( ) ;
1445
1449
1446
- app. world . spawn ( a_handle) ;
1450
+ app. world_mut ( ) . spawn ( a_handle) ;
1447
1451
1448
1452
run_app_until ( & mut app, |world| {
1449
1453
let tracker = world. resource :: < ErrorTracker > ( ) ;
@@ -1476,7 +1480,7 @@ mod tests {
1476
1480
} ) ;
1477
1481
1478
1482
// running schedule does not error on ambiguity between the 2 uses_assets systems
1479
- app. world . run_schedule ( Update ) ;
1483
+ app. world_mut ( ) . run_schedule ( Update ) ;
1480
1484
}
1481
1485
1482
1486
// validate the Asset derive macro for various asset types
0 commit comments