1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
//! Xvc Entity-Component System is the basic storage mechanism behind Xvc.
//! It defines an integer-based entity type ([XvcEntity]), a trait to be implemented by components
//! (structs) and stores to save, load and operate on these components.
//!
//! It's an alternative to an object-oriented design where the relations between classes should be
//! known beforehand.
//! It allows to implement new components for entities at any point in the
//! evolution of software.
//! These components can have 1-1, 1-N or M-N relationships.
//!
//! In a sense components are analogous to database tables, and entities are primary keys.
//! [XvcStore] can be considered akin to a table, and [R11Store], [R1NStore] and [RMNStore] can be
//! considered as relations.
#![warn(missing_docs)]
#![forbid(unsafe_code)]
pub mod ecs;
pub mod error;
pub use ecs::hstore::HStore;
pub use ecs::init_generator;
pub use ecs::load_generator;
pub use ecs::r11store::R11Store;
pub use ecs::r1nstore::ChildEntity;
pub use ecs::r1nstore::R1NStore;
pub use ecs::rmnstore::RMNStore;
pub use ecs::storable::Storable;
pub use ecs::vstore::VStore;
pub use ecs::xvcstore::XvcStore;
pub use ecs::XvcEntity;
pub use ecs::XvcEntityGenerator;
pub use error::Error;
pub use error::Result;