steel_registry/
particle_type.rs1use rustc_hash::FxHashMap;
2use steel_utils::Identifier;
3
4#[derive(Debug)]
6pub struct ParticleType {
7 pub key: Identifier,
8 pub override_limiter: bool,
9}
10
11pub type ParticleTypeRef = &'static ParticleType;
12
13pub struct ParticleTypeRegistry {
14 particle_types_by_id: Vec<ParticleTypeRef>,
15 particle_types_by_key: FxHashMap<Identifier, usize>,
16 allows_registering: bool,
17}
18
19impl ParticleTypeRegistry {
20 #[must_use]
21 pub fn new() -> Self {
22 Self {
23 particle_types_by_id: Vec::new(),
24 particle_types_by_key: FxHashMap::default(),
25 allows_registering: true,
26 }
27 }
28}
29
30crate::impl_standard_methods!(
31 ParticleTypeRegistry,
32 ParticleTypeRef,
33 particle_types_by_id,
34 particle_types_by_key,
35 allows_registering
36);
37
38crate::impl_registry!(
39 ParticleTypeRegistry,
40 ParticleType,
41 particle_types_by_id,
42 particle_types_by_key,
43 particle_types
44);