//! Entity Component System module.
//!
//! Contains all ECS-related functionality:
//! - Components: Data attached to entities (transforms, meshes, materials, etc.)
//! - Resources: Global singletons (input, graphics settings, caches)
//! - Systems: Logic operating on components
//! - Commands: Deferred operations for spawning and loading
//!
//! The [`World`] struct is the central container generated by `freecs::ecs!`.
//! Components use struct-of-arrays storage accessed via:
//! - `world.get_<component>(entity)` - Immutable reference
//! - `world.get_<component>_mut(entity)` - Mutable reference
//! - `world.insert_<component>(entity, value)` - Add component
//! - `world.remove_<component>(entity)` - Remove component

pub mod animation;
pub mod asset_id;
pub mod audio;
pub mod behavior;
pub mod bounding_volume;
pub mod camera;
pub mod decal;
pub mod event_bus;
pub mod generational_registry;
pub mod gizmos;
pub mod gpu_picking;
pub mod graphics;
pub mod grass;
pub mod input;
pub mod lattice;
pub mod light;
pub mod lines;
pub mod material;
pub mod mesh;
pub mod morph;
pub mod name;
pub mod navmesh;
pub mod particles;
pub mod physics;
#[cfg(feature = "picking")]
pub mod picking;
pub mod prefab;
pub mod render_layer;
#[cfg(feature = "scene_graph")]
pub mod scene;
pub mod script;
#[cfg(feature = "sdf_sculpt")]
pub mod sdf;
pub mod shadow;
pub mod shell;
pub mod skin;
pub mod sprite;
#[cfg(feature = "terrain")]
pub mod terrain;
pub mod text;
#[cfg(feature = "assets")]
pub mod texture_loader;
pub mod transform;
pub mod ui;
pub mod visibility;
pub mod water;
pub mod window;
pub mod world;

pub use crate::ecs::world::*;
