make CommandBufferBuilder non-consuming
This commit is contained in:
		
							parent
							
								
									2565a69230
								
							
						
					
					
						commit
						f2b2065fbe
					
				| @ -71,7 +71,7 @@ impl<'a> WorldBuilder<'a> { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_children(&mut self, build_children: impl Fn(&mut WorldBuilder)) -> &mut Self { |     pub fn add_children(&mut self, build_children: impl Fn(&mut Self)) -> &mut Self { | ||||||
|         self.parent_entity = self.current_entity; |         self.parent_entity = self.current_entity; | ||||||
|         self.current_entity = None; |         self.current_entity = None; | ||||||
| 
 | 
 | ||||||
| @ -116,16 +116,15 @@ pub struct CommandBufferBuilder<'a> { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl<'a> CommandBufferBuilder<'a> { | impl<'a> CommandBufferBuilder<'a> { | ||||||
|     pub fn build_entity(mut self) -> Self { |     pub fn build_entity(&mut self) -> &mut Self { | ||||||
|         let entity = *self.command_buffer.insert((), vec![()]).first().unwrap(); |         let entity = *self.command_buffer.insert((), vec![()]).first().unwrap(); | ||||||
|         self.current_entity = Some(entity); |         self.current_entity = Some(entity); | ||||||
|         self.add_parent_to_current_entity(); |         self.add_parent_to_current_entity(); | ||||||
|         self |         self | ||||||
|     } |     } | ||||||
|     pub fn build(self) {} |  | ||||||
| 
 | 
 | ||||||
|     // note: this is slow and does a full entity copy
 |     // note: this is slow and does a full entity copy
 | ||||||
|     pub fn add<T>(self, component: T) -> Self |     pub fn add<T>(&mut self, component: T) -> &mut Self | ||||||
|     where |     where | ||||||
|         T: legion::storage::Component, |         T: legion::storage::Component, | ||||||
|     { |     { | ||||||
| @ -135,7 +134,7 @@ impl<'a> CommandBufferBuilder<'a> { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn tag<T>(self, tag: T) -> Self |     pub fn tag<T>(&mut self, tag: T) -> &mut Self | ||||||
|     where |     where | ||||||
|         T: legion::storage::Tag, |         T: legion::storage::Tag, | ||||||
|     { |     { | ||||||
| @ -145,7 +144,7 @@ impl<'a> CommandBufferBuilder<'a> { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_entities<T, C>(self, tags: T, components: C) -> Self |     pub fn add_entities<T, C>(&mut self, tags: T, components: C) -> &mut Self | ||||||
|     where |     where | ||||||
|         T: TagSet + TagLayout + for<'b> Filter<ChunksetFilterData<'b>> + 'static, |         T: TagSet + TagLayout + for<'b> Filter<ChunksetFilterData<'b>> + 'static, | ||||||
|         C: IntoComponentSource + 'static, |         C: IntoComponentSource + 'static, | ||||||
| @ -154,7 +153,7 @@ impl<'a> CommandBufferBuilder<'a> { | |||||||
|         self |         self | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_entity(mut self, entity_archetype: impl EntityArchetype) -> Self { |     pub fn add_entity(&mut self, entity_archetype: impl EntityArchetype) -> &mut Self { | ||||||
|         let current_entity = entity_archetype.insert_command_buffer(self.command_buffer); |         let current_entity = entity_archetype.insert_command_buffer(self.command_buffer); | ||||||
|         self.current_entity = Some(current_entity); |         self.current_entity = Some(current_entity); | ||||||
|         self.add_parent_to_current_entity(); |         self.add_parent_to_current_entity(); | ||||||
| @ -162,13 +161,13 @@ impl<'a> CommandBufferBuilder<'a> { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     pub fn add_children( |     pub fn add_children( | ||||||
|         mut self, |         &mut self, | ||||||
|         build_children: impl Fn(CommandBufferBuilder) -> CommandBufferBuilder, |         build_children: impl Fn(&mut Self) -> &mut Self, | ||||||
|     ) -> Self { |     ) -> &mut Self { | ||||||
|         self.parent_entity = self.current_entity; |         self.parent_entity = self.current_entity; | ||||||
|         self.current_entity = None; |         self.current_entity = None; | ||||||
| 
 | 
 | ||||||
|         self = build_children(self); |         build_children(self); | ||||||
| 
 | 
 | ||||||
|         self.current_entity = self.parent_entity; |         self.current_entity = self.parent_entity; | ||||||
|         self.parent_entity = None; |         self.parent_entity = None; | ||||||
|  | |||||||
| @ -43,7 +43,6 @@ pub fn startup_system() -> Box<dyn Schedulable> { | |||||||
|                         Vec3::new(0.0, 0.0, 1.0), |                         Vec3::new(0.0, 0.0, 1.0), | ||||||
|                     )), |                     )), | ||||||
|                     ..Default::default() |                     ..Default::default() | ||||||
|                 }) |                 }); | ||||||
|                 .build(); |  | ||||||
|         }) |         }) | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Carter Anderson
						Carter Anderson