@@ -146,7 +146,7 @@ impl Plugin for AssetPlugin {
146
146
watch_for_changes,
147
147
} => {
148
148
let source_reader = app
149
- . world
149
+ . world_mut ( )
150
150
. resource_mut :: < AssetProviders > ( )
151
151
. get_source_reader ( source) ;
152
152
app. insert_resource ( AssetServer :: new ( source_reader, * watch_for_changes) ) ;
@@ -156,7 +156,7 @@ impl Plugin for AssetPlugin {
156
156
watch_for_changes,
157
157
} => {
158
158
let destination_reader = app
159
- . world
159
+ . world_mut ( )
160
160
. resource_mut :: < AssetProviders > ( )
161
161
. get_destination_reader ( destination) ;
162
162
app. insert_resource ( AssetServer :: new ( destination_reader, * watch_for_changes) ) ;
@@ -166,7 +166,7 @@ impl Plugin for AssetPlugin {
166
166
destination,
167
167
watch_for_changes,
168
168
} => {
169
- let mut asset_providers = app. world . resource_mut :: < AssetProviders > ( ) ;
169
+ let mut asset_providers = app. world_mut ( ) . resource_mut :: < AssetProviders > ( ) ;
170
170
let processor = AssetProcessor :: new ( & mut asset_providers, source, destination) ;
171
171
let destination_reader = asset_providers. get_destination_reader ( source) ;
172
172
// the main asset server gates loads based on asset state
@@ -191,7 +191,7 @@ impl Plugin for AssetPlugin {
191
191
)
192
192
. add_systems ( UpdateAssets , server:: handle_internal_asset_events) ;
193
193
194
- let mut order = app. world . resource_mut :: < MainScheduleOrder > ( ) ;
194
+ let mut order = app. world_mut ( ) . resource_mut :: < MainScheduleOrder > ( ) ;
195
195
order. insert_after ( First , UpdateAssets ) ;
196
196
order. insert_after ( PostUpdate , AssetEvents ) ;
197
197
}
@@ -276,20 +276,24 @@ pub trait AssetApp {
276
276
277
277
impl AssetApp for App {
278
278
fn register_asset_loader < L : AssetLoader > ( & mut self , loader : L ) -> & mut Self {
279
- self . world . resource :: < AssetServer > ( ) . register_loader ( loader) ;
279
+ self . world ( )
280
+ . resource :: < AssetServer > ( )
281
+ . register_loader ( loader) ;
280
282
self
281
283
}
282
284
283
285
fn init_asset_loader < L : AssetLoader + FromWorld > ( & mut self ) -> & mut Self {
284
- let loader = L :: from_world ( & mut self . world ) ;
286
+ let loader = L :: from_world ( self . world_mut ( ) ) ;
285
287
self . register_asset_loader ( loader)
286
288
}
287
289
288
290
fn init_asset < A : Asset > ( & mut self ) -> & mut Self {
289
291
let assets = Assets :: < A > :: default ( ) ;
290
- self . world . resource :: < AssetServer > ( ) . register_asset ( & assets) ;
291
- if self . world . contains_resource :: < AssetProcessor > ( ) {
292
- let processor = self . world . resource :: < AssetProcessor > ( ) ;
292
+ self . world ( )
293
+ . resource :: < AssetServer > ( )
294
+ . register_asset ( & assets) ;
295
+ if self . world ( ) . contains_resource :: < AssetProcessor > ( ) {
296
+ let processor = self . world ( ) . resource :: < AssetProcessor > ( ) ;
293
297
// The processor should have its own handle provider separate from the Asset storage
294
298
// to ensure the id spaces are entirely separate. Not _strictly_ necessary, but
295
299
// desirable.
@@ -312,7 +316,7 @@ impl AssetApp for App {
312
316
where
313
317
A : Asset + Reflect + FromReflect + GetTypeRegistration ,
314
318
{
315
- let type_registry = self . world . resource :: < AppTypeRegistry > ( ) ;
319
+ let type_registry = self . world ( ) . resource :: < AppTypeRegistry > ( ) ;
316
320
{
317
321
let mut type_registry = type_registry. write ( ) ;
318
322
@@ -326,21 +330,21 @@ impl AssetApp for App {
326
330
}
327
331
328
332
fn preregister_asset_loader < L : AssetLoader > ( & mut self , extensions : & [ & str ] ) -> & mut Self {
329
- self . world
333
+ self . world_mut ( )
330
334
. resource_mut :: < AssetServer > ( )
331
335
. preregister_loader :: < L > ( extensions) ;
332
336
self
333
337
}
334
338
335
339
fn register_asset_processor < P : Process > ( & mut self , processor : P ) -> & mut Self {
336
- if let Some ( asset_processor) = self . world . get_resource :: < AssetProcessor > ( ) {
340
+ if let Some ( asset_processor) = self . world ( ) . get_resource :: < AssetProcessor > ( ) {
337
341
asset_processor. register_processor ( processor) ;
338
342
}
339
343
self
340
344
}
341
345
342
346
fn set_default_asset_processor < P : Process > ( & mut self , extension : & str ) -> & mut Self {
343
- if let Some ( asset_processor) = self . world . get_resource :: < AssetProcessor > ( ) {
347
+ if let Some ( asset_processor) = self . world ( ) . get_resource :: < AssetProcessor > ( ) {
344
348
asset_processor. set_default_processor :: < P > ( extension) ;
345
349
}
346
350
self
@@ -365,7 +369,7 @@ pub struct AssetEvents;
365
369
#[ macro_export]
366
370
macro_rules! load_internal_asset {
367
371
( $app: ident, $handle: expr, $path_str: expr, $loader: expr) => { {
368
- let mut assets = $app. world . resource_mut:: <$crate:: Assets <_>>( ) ;
372
+ let mut assets = $app. world_mut ( ) . resource_mut:: <$crate:: Assets <_>>( ) ;
369
373
assets. insert( $handle, ( $loader) (
370
374
include_str!( $path_str) ,
371
375
std:: path:: Path :: new( file!( ) )
@@ -377,7 +381,7 @@ macro_rules! load_internal_asset {
377
381
} } ;
378
382
// we can't support params without variadic arguments, so internal assets with additional params can't be hot-reloaded
379
383
( $app: ident, $handle: ident, $path_str: expr, $loader: expr $( , $param: expr) +) => { {
380
- let mut assets = $app. world . resource_mut:: <$crate:: Assets <_>>( ) ;
384
+ let mut assets = $app. world_mut ( ) . resource_mut:: <$crate:: Assets <_>>( ) ;
381
385
assets. insert( $handle, ( $loader) (
382
386
include_str!( $path_str) ,
383
387
std:: path:: Path :: new( file!( ) )
@@ -394,7 +398,7 @@ macro_rules! load_internal_asset {
394
398
#[ macro_export]
395
399
macro_rules! load_internal_binary_asset {
396
400
( $app: ident, $handle: expr, $path_str: expr, $loader: expr) => { {
397
- let mut assets = $app. world . resource_mut:: <$crate:: Assets <_>>( ) ;
401
+ let mut assets = $app. world_mut ( ) . resource_mut:: <$crate:: Assets <_>>( ) ;
398
402
assets. insert(
399
403
$handle,
400
404
( $loader) (
@@ -526,7 +530,7 @@ mod tests {
526
530
fn run_app_until ( app : & mut App , mut predicate : impl FnMut ( & mut World ) -> Option < ( ) > ) {
527
531
for _ in 0 ..LARGE_ITERATION_COUNT {
528
532
app. update ( ) ;
529
- if ( predicate) ( & mut app. world ) . is_some ( ) {
533
+ if ( predicate) ( app. world_mut ( ) ) . is_some ( ) {
530
534
return ;
531
535
}
532
536
}
@@ -612,13 +616,13 @@ mod tests {
612
616
. init_resource :: < StoredEvents > ( )
613
617
. register_asset_loader ( CoolTextLoader )
614
618
. add_systems ( Update , store_asset_events) ;
615
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
619
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
616
620
let handle: Handle < CoolText > = asset_server. load ( a_path) ;
617
621
let a_id = handle. id ( ) ;
618
- let entity = app. world . spawn ( handle) . id ( ) ;
622
+ let entity = app. world_mut ( ) . spawn ( handle) . id ( ) ;
619
623
app. update ( ) ;
620
624
{
621
- let a_text = get :: < CoolText > ( & app. world , a_id) ;
625
+ let a_text = get :: < CoolText > ( app. world ( ) , a_id) ;
622
626
let ( a_load, a_deps, a_rec_deps) = asset_server. get_load_states ( a_id) . unwrap ( ) ;
623
627
assert ! ( a_text. is_none( ) , "a's asset should not exist yet" ) ;
624
628
assert_eq ! ( a_load, LoadState :: Loading , "a should still be loading" ) ;
@@ -800,27 +804,27 @@ mod tests {
800
804
} ) ;
801
805
802
806
{
803
- let mut texts = app. world . resource_mut :: < Assets < CoolText > > ( ) ;
807
+ let mut texts = app. world_mut ( ) . resource_mut :: < Assets < CoolText > > ( ) ;
804
808
let a = texts. get_mut ( a_id) . unwrap ( ) ;
805
809
a. text = "Changed" . to_string ( ) ;
806
810
}
807
811
808
- app. world . despawn ( entity) ;
812
+ app. world_mut ( ) . despawn ( entity) ;
809
813
app. update ( ) ;
810
814
assert_eq ! (
811
- app. world. resource:: <Assets <CoolText >>( ) . len( ) ,
815
+ app. world( ) . resource:: <Assets <CoolText >>( ) . len( ) ,
812
816
0 ,
813
817
"CoolText asset entities should be despawned when no more handles exist"
814
818
) ;
815
819
app. update ( ) ;
816
820
// this requires a second update because the parent asset was freed in the previous app.update()
817
821
assert_eq ! (
818
- app. world. resource:: <Assets <SubText >>( ) . len( ) ,
822
+ app. world( ) . resource:: <Assets <SubText >>( ) . len( ) ,
819
823
0 ,
820
824
"SubText asset entities should be despawned when no more handles exist"
821
825
) ;
822
- let events = app. world . remove_resource :: < StoredEvents > ( ) . unwrap ( ) ;
823
- let id_results = app. world . remove_resource :: < IdResults > ( ) . unwrap ( ) ;
826
+ let events = app. world_mut ( ) . remove_resource :: < StoredEvents > ( ) . unwrap ( ) ;
827
+ let id_results = app. world_mut ( ) . remove_resource :: < IdResults > ( ) . unwrap ( ) ;
824
828
let expected_events = vec ! [
825
829
AssetEvent :: Added { id: a_id } ,
826
830
AssetEvent :: LoadedWithDependencies {
@@ -910,7 +914,7 @@ mod tests {
910
914
let ( mut app, gate_opener) = test_app ( dir) ;
911
915
app. init_asset :: < CoolText > ( )
912
916
. register_asset_loader ( CoolTextLoader ) ;
913
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
917
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
914
918
let handle: Handle < CoolText > = asset_server. load ( a_path) ;
915
919
let a_id = handle. id ( ) ;
916
920
{
@@ -926,7 +930,7 @@ mod tests {
926
930
) ;
927
931
}
928
932
929
- app. world . spawn ( handle) ;
933
+ app. world_mut ( ) . spawn ( handle) ;
930
934
gate_opener. open ( a_path) ;
931
935
gate_opener. open ( b_path) ;
932
936
gate_opener. open ( c_path) ;
@@ -1003,7 +1007,7 @@ mod tests {
1003
1007
1004
1008
let id = {
1005
1009
let handle = {
1006
- let mut texts = app. world . resource_mut :: < Assets < CoolText > > ( ) ;
1010
+ let mut texts = app. world_mut ( ) . resource_mut :: < Assets < CoolText > > ( ) ;
1007
1011
texts. add ( CoolText {
1008
1012
text : hello. clone ( ) ,
1009
1013
embedded : empty. clone ( ) ,
@@ -1016,7 +1020,7 @@ mod tests {
1016
1020
1017
1021
{
1018
1022
let text = app
1019
- . world
1023
+ . world ( )
1020
1024
. resource :: < Assets < CoolText > > ( )
1021
1025
. get ( & handle)
1022
1026
. unwrap ( ) ;
@@ -1027,36 +1031,36 @@ mod tests {
1027
1031
// handle is dropped
1028
1032
app. update ( ) ;
1029
1033
assert ! (
1030
- app. world. resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1034
+ app. world( ) . resource:: <Assets <CoolText >>( ) . get( id) . is_none( ) ,
1031
1035
"asset has no handles, so it should have been dropped last update"
1032
1036
) ;
1033
1037
// remove event is emitted
1034
1038
app. update ( ) ;
1035
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1039
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1036
1040
let expected_events = vec ! [ AssetEvent :: Added { id } , AssetEvent :: Removed { id } ] ;
1037
1041
assert_eq ! ( events, expected_events) ;
1038
1042
1039
- let dep_handle = app. world . resource :: < AssetServer > ( ) . load ( dep_path) ;
1043
+ let dep_handle = app. world ( ) . resource :: < AssetServer > ( ) . load ( dep_path) ;
1040
1044
let a = CoolText {
1041
1045
text : "a" . to_string ( ) ,
1042
1046
embedded : empty,
1043
1047
// this dependency is behind a manual load gate, which should prevent 'a' from emitting a LoadedWithDependencies event
1044
1048
dependencies : vec ! [ dep_handle. clone( ) ] ,
1045
1049
sub_texts : Vec :: new ( ) ,
1046
1050
} ;
1047
- let a_handle = app. world . resource :: < AssetServer > ( ) . load_asset ( a) ;
1051
+ let a_handle = app. world ( ) . resource :: < AssetServer > ( ) . load_asset ( a) ;
1048
1052
app. update ( ) ;
1049
1053
// TODO: ideally it doesn't take two updates for the added event to emit
1050
1054
app. update ( ) ;
1051
1055
1052
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1056
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1053
1057
let expected_events = vec ! [ AssetEvent :: Added { id: a_handle. id( ) } ] ;
1054
1058
assert_eq ! ( events, expected_events) ;
1055
1059
1056
1060
gate_opener. open ( dep_path) ;
1057
1061
loop {
1058
1062
app. update ( ) ;
1059
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1063
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1060
1064
if events. is_empty ( ) {
1061
1065
continue ;
1062
1066
}
@@ -1070,7 +1074,7 @@ mod tests {
1070
1074
break ;
1071
1075
}
1072
1076
app. update ( ) ;
1073
- let events = std:: mem:: take ( & mut app. world . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1077
+ let events = std:: mem:: take ( & mut app. world_mut ( ) . resource_mut :: < StoredEvents > ( ) . 0 ) ;
1074
1078
let expected_events = vec ! [ AssetEvent :: Added {
1075
1079
id: dep_handle. id( ) ,
1076
1080
} ] ;
@@ -1117,7 +1121,7 @@ mod tests {
1117
1121
app. init_asset :: < CoolText > ( )
1118
1122
. init_asset :: < SubText > ( )
1119
1123
. register_asset_loader ( CoolTextLoader ) ;
1120
- let asset_server = app. world . resource :: < AssetServer > ( ) . clone ( ) ;
1124
+ let asset_server = app. world ( ) . resource :: < AssetServer > ( ) . clone ( ) ;
1121
1125
let handle: Handle < LoadedFolder > = asset_server. load_folder ( "text" ) ;
1122
1126
gate_opener. open ( a_path) ;
1123
1127
gate_opener. open ( b_path) ;
0 commit comments