1
1
use crate :: { DynamicScene , Scene } ;
2
- use bevy_asset:: { AssetEvent , AssetId , Assets } ;
2
+ use bevy_asset:: { AssetEvent , AssetId , Assets , Handle } ;
3
3
use bevy_ecs:: {
4
4
entity:: Entity ,
5
5
event:: { Event , Events , ManualEventReader } ,
@@ -63,8 +63,8 @@ pub struct SceneSpawner {
63
63
spawned_dynamic_scenes : HashMap < AssetId < DynamicScene > , Vec < InstanceId > > ,
64
64
spawned_instances : HashMap < InstanceId , InstanceInfo > ,
65
65
scene_asset_event_reader : ManualEventReader < AssetEvent < DynamicScene > > ,
66
- dynamic_scenes_to_spawn : Vec < ( AssetId < DynamicScene > , InstanceId ) > ,
67
- scenes_to_spawn : Vec < ( AssetId < Scene > , InstanceId ) > ,
66
+ dynamic_scenes_to_spawn : Vec < ( Handle < DynamicScene > , InstanceId ) > ,
67
+ scenes_to_spawn : Vec < ( Handle < Scene > , InstanceId ) > ,
68
68
scenes_to_despawn : Vec < AssetId < DynamicScene > > ,
69
69
instances_to_despawn : Vec < InstanceId > ,
70
70
scenes_with_parent : Vec < ( InstanceId , Entity ) > ,
@@ -127,7 +127,7 @@ pub enum SceneSpawnError {
127
127
128
128
impl SceneSpawner {
129
129
/// Schedule the spawn of a new instance of the provided dynamic scene.
130
- pub fn spawn_dynamic ( & mut self , id : impl Into < AssetId < DynamicScene > > ) -> InstanceId {
130
+ pub fn spawn_dynamic ( & mut self , id : impl Into < Handle < DynamicScene > > ) -> InstanceId {
131
131
let instance_id = InstanceId :: new ( ) ;
132
132
self . dynamic_scenes_to_spawn . push ( ( id. into ( ) , instance_id) ) ;
133
133
instance_id
@@ -136,7 +136,7 @@ impl SceneSpawner {
136
136
/// Schedule the spawn of a new instance of the provided dynamic scene as a child of `parent`.
137
137
pub fn spawn_dynamic_as_child (
138
138
& mut self ,
139
- id : impl Into < AssetId < DynamicScene > > ,
139
+ id : impl Into < Handle < DynamicScene > > ,
140
140
parent : Entity ,
141
141
) -> InstanceId {
142
142
let instance_id = InstanceId :: new ( ) ;
@@ -146,14 +146,14 @@ impl SceneSpawner {
146
146
}
147
147
148
148
/// Schedule the spawn of a new instance of the provided scene.
149
- pub fn spawn ( & mut self , id : impl Into < AssetId < Scene > > ) -> InstanceId {
149
+ pub fn spawn ( & mut self , id : impl Into < Handle < Scene > > ) -> InstanceId {
150
150
let instance_id = InstanceId :: new ( ) ;
151
151
self . scenes_to_spawn . push ( ( id. into ( ) , instance_id) ) ;
152
152
instance_id
153
153
}
154
154
155
155
/// Schedule the spawn of a new instance of the provided scene as a child of `parent`.
156
- pub fn spawn_as_child ( & mut self , id : impl Into < AssetId < Scene > > , parent : Entity ) -> InstanceId {
156
+ pub fn spawn_as_child ( & mut self , id : impl Into < Handle < Scene > > , parent : Entity ) -> InstanceId {
157
157
let instance_id = InstanceId :: new ( ) ;
158
158
self . scenes_to_spawn . push ( ( id. into ( ) , instance_id) ) ;
159
159
self . scenes_with_parent . push ( ( instance_id, parent) ) ;
@@ -296,21 +296,21 @@ impl SceneSpawner {
296
296
pub fn spawn_queued_scenes ( & mut self , world : & mut World ) -> Result < ( ) , SceneSpawnError > {
297
297
let scenes_to_spawn = std:: mem:: take ( & mut self . dynamic_scenes_to_spawn ) ;
298
298
299
- for ( id , instance_id) in scenes_to_spawn {
299
+ for ( handle , instance_id) in scenes_to_spawn {
300
300
let mut entity_map = EntityHashMap :: default ( ) ;
301
301
302
- match Self :: spawn_dynamic_internal ( world, id , & mut entity_map) {
302
+ match Self :: spawn_dynamic_internal ( world, handle . id ( ) , & mut entity_map) {
303
303
Ok ( _) => {
304
304
self . spawned_instances
305
305
. insert ( instance_id, InstanceInfo { entity_map } ) ;
306
306
let spawned = self
307
307
. spawned_dynamic_scenes
308
- . entry ( id )
308
+ . entry ( handle . id ( ) )
309
309
. or_insert_with ( Vec :: new) ;
310
310
spawned. push ( instance_id) ;
311
311
}
312
312
Err ( SceneSpawnError :: NonExistentScene { .. } ) => {
313
- self . dynamic_scenes_to_spawn . push ( ( id , instance_id) ) ;
313
+ self . dynamic_scenes_to_spawn . push ( ( handle , instance_id) ) ;
314
314
}
315
315
Err ( err) => return Err ( err) ,
316
316
}
@@ -319,10 +319,10 @@ impl SceneSpawner {
319
319
let scenes_to_spawn = std:: mem:: take ( & mut self . scenes_to_spawn ) ;
320
320
321
321
for ( scene_handle, instance_id) in scenes_to_spawn {
322
- match self . spawn_sync_internal ( world, scene_handle, instance_id) {
322
+ match self . spawn_sync_internal ( world, scene_handle. id ( ) , instance_id) {
323
323
Ok ( _) => { }
324
- Err ( SceneSpawnError :: NonExistentRealScene { id : handle } ) => {
325
- self . scenes_to_spawn . push ( ( handle , instance_id) ) ;
324
+ Err ( SceneSpawnError :: NonExistentRealScene { .. } ) => {
325
+ self . scenes_to_spawn . push ( ( scene_handle , instance_id) ) ;
326
326
}
327
327
Err ( err) => return Err ( err) ,
328
328
}
0 commit comments