use crate::ecs::world::{GAME, World};
use nightshade_ecs::dynamic::ComponentRegistry;
pub(crate) fn register_physics_components() -> ComponentRegistry {
let mut registry = ComponentRegistry::new();
registry.register_serde::<crate::plugins::physics::components::RigidBodyComponent>();
registry.register_serde::<crate::plugins::physics::components::ColliderComponent>();
registry.register_serde::<crate::plugins::physics::components::CharacterControllerComponent>();
registry.register_serde::<crate::plugins::physics::components::CollisionListener>();
registry.register_serde::<crate::plugins::physics::components::PhysicsInterpolation>();
registry
}
pub fn physics_component_world(world: &mut World) -> usize {
if let Some(index) = world
.plugin_resource::<crate::plugins::physics::resources::PhysicsWorld>()
.component_world
{
return index;
}
if world.ecs.worlds.len() <= GAME {
world.ecs.add_world_at(GAME, ComponentRegistry::default());
}
let index = world.ecs.add_world(register_physics_components());
world
.plugin_resource_mut::<crate::plugins::physics::resources::PhysicsWorld>()
.component_world = Some(index);
index
}