use crate::metadata::EntityTypeMeta;
use crate::model_builder::ModelBuilder;
use std::any::TypeId;
#[derive(Debug)]
pub struct EntityRegistration {
pub type_id: TypeId,
pub type_name: &'static str,
pub meta_fn: fn() -> EntityTypeMeta,
pub context_key: Option<&'static str>,
}
impl EntityRegistration {
pub fn meta(&self) -> EntityTypeMeta {
(self.meta_fn)()
}
}
inventory::collect!(EntityRegistration);
#[derive(Clone, Copy)]
pub struct EntityConfigRegistration {
pub type_id: TypeId,
pub type_name: &'static str,
pub apply_fn: fn(&mut ModelBuilder),
pub context_key: Option<&'static str>,
}
impl std::fmt::Debug for EntityConfigRegistration {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("EntityConfigRegistration")
.field("type_id", &self.type_id)
.field("type_name", &self.type_name)
.finish()
}
}
inventory::collect!(EntityConfigRegistration);