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