26 lines
867 B
Rust
26 lines
867 B
Rust
use crate::{asset::HandleUntyped, render::render_resource::RenderResourceAssignments};
|
|
use legion::prelude::Entity;
|
|
use std::collections::{HashSet, HashMap};
|
|
|
|
#[derive(PartialEq, Eq, Debug, Default)]
|
|
pub struct Batch {
|
|
pub handles: Vec<HandleUntyped>,
|
|
pub entities: HashSet<Entity>,
|
|
pub instanced_entity_indices: HashMap<Entity, usize>,
|
|
pub current_instanced_entity_index: usize,
|
|
pub render_resource_assignments: RenderResourceAssignments,
|
|
}
|
|
|
|
impl Batch {
|
|
pub fn add_entity(&mut self, entity: Entity) {
|
|
self.entities.insert(entity);
|
|
}
|
|
|
|
pub fn add_instanced_entity(&mut self, entity: Entity) {
|
|
if let None = self.instanced_entity_indices.get(&entity) {
|
|
self.instanced_entity_indices.insert(entity, self.current_instanced_entity_index);
|
|
self.current_instanced_entity_index += 1;
|
|
}
|
|
}
|
|
}
|