[−][src]Crate bevy_hecs
A handy ECS
hecs provides a high-performance, minimalist entity-component-system (ECS) world. It is a
library, not a framework. In place of an explicit "System" abstraction, a World
's entities are
easily queried from regular code. Organize your application however you like!
In order of importance, hecs pursues:
- fast traversals
- a simple interface
- a small dependency closure
- exclusion of externally-implementable functionality
let mut world = World::new(); // Nearly any type can be used as a component with zero boilerplate let a = world.spawn((123, true, "abc")); let b = world.spawn((42, false)); // Systems can be simple for loops for (id, mut number, &flag) in &mut world.query_mut::<(Entity, &mut i32, &bool)>() { if flag { *number *= 2; } } assert_eq!(*world.get::<i32>(a).unwrap(), 246); assert_eq!(*world.get::<i32>(b).unwrap(), 42);
Macros
impl_query_set | |
smaller_tuples_too | Imagine macro parameters, but more like those Russian dolls. |
Structs
Added | Query transformer that retrieves components of type |
Archetype | A collection of entities having the same component types |
ArchetypeComponent | |
ArchetypesGeneration | Determines freshness of information derived from |
AtomicBorrow | Atomically enforces Rust-style borrow checking at runtime |
Batch | A sequence of entities yielded by |
BatchedIter | Batched version of |
BuiltEntity | The output of an |
Changed | Query transformer that retrieves components of type |
Entity | Lightweight unique ID of an entity |
EntityBuilder | Helper for incrementally constructing a bundle of components with dynamic component types |
EntityReserver | Reserves entities in a way that is usable in multi-threaded contexts. |
Location | A location of an entity in an archetype |
MissingComponent | Error indicating that an entity did not have a required component |
Mut | Unique borrow of an entity's component |
Mutated | Query transformer that retrieves components of type |
NoSuchEntity | Error indicating that no entity with a particular ID exists |
Or | Query transformer performing a logical or on a pair of queries Intended to be used on Mutated or Changed queries. |
QueryIter | Iterator over the set of entities with the components in |
Ref | Shared borrow of an entity's component |
RefMut | Unique borrow of an entity's component |
SpawnBatchIter | Entity IDs created by |
TypeAccess | Provides information about the types a [System] reads and writes |
TypeState | Metadata about a type stored in an archetype |
With | Query transformer skipping entities that do not have a |
Without | Query transformer skipping entities that have a |
World | An unordered collection of entities, each having any number of distinctly typed components |
Enums
ComponentError | Errors that arise when accessing components |
QueryAccess |
Traits
Bundle | A statically typed collection of components |
Component | Types that can be components, implemented automatically for all |
DynamicBundle | A dynamically typed collection of components |
Query | A collection of component types to fetch from a |
ReadOnlyFetch | A fetch that is read only. This should only be implemented for read-only fetches. |
Derive Macros
Bundle | Implement |