mirror of
https://github.com/bevyengine/bevy
synced 2024-11-10 15:14:50 +00:00
Basic documentation for Entities, Components and Systems (#1578)
These are largely targeted at beginners, as `Entity`, `Component` and `System` are the most obvious terms to search when first getting introduced to Bevy.
This commit is contained in:
parent
32af4b7dc3
commit
03601db51c
3 changed files with 27 additions and 1 deletions
|
@ -11,6 +11,19 @@ use std::{
|
||||||
};
|
};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
|
/// A component is data associated with an `Entity`. Each entity can have multiple different types
|
||||||
|
/// of components, but only one of them per type.
|
||||||
|
///
|
||||||
|
/// Any type that is `Send + Sync + 'static` automatically implements `Component`.
|
||||||
|
///
|
||||||
|
/// Components are added with new entities using [Commands::spawn](crate::system::Commands::spawn),
|
||||||
|
/// or to existing entities with [Commands::insert](crate::system::Commands::insert),
|
||||||
|
/// or their [World](crate::world::World) equivalents.
|
||||||
|
///
|
||||||
|
/// Components can be accessed in systems by using a [Query](crate::system::Query)
|
||||||
|
/// as one of the arguments.
|
||||||
|
///
|
||||||
|
/// Components can be grouped together into a [Bundle](crate::bundle::Bundle).
|
||||||
pub trait Component: Send + Sync + 'static {}
|
pub trait Component: Send + Sync + 'static {}
|
||||||
impl<T: Send + Sync + 'static> Component for T {}
|
impl<T: Send + Sync + 'static> Component for T {}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,11 @@ use std::{
|
||||||
|
|
||||||
/// Lightweight unique ID of an entity
|
/// Lightweight unique ID of an entity
|
||||||
///
|
///
|
||||||
/// Obtained from `World::spawn`. Can be stored to refer to an entity in the future.
|
/// Obtained from [World::spawn](crate::world::World::spawn), typically via [Commands::spawn](crate::system::Commands::spawn). Can be stored to refer to an entity in the future.
|
||||||
|
///
|
||||||
|
/// `Entity` can be a part of a query, e.g. `Query<(Entity, &MyComponent)>`.
|
||||||
|
/// Components of a specific entity can be accessed using
|
||||||
|
/// [Query::get](crate::system::Query::get) and related methods.
|
||||||
#[derive(Clone, Copy, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
#[derive(Clone, Copy, Hash, Eq, Ord, PartialEq, PartialOrd)]
|
||||||
pub struct Entity {
|
pub struct Entity {
|
||||||
pub(crate) generation: u32,
|
pub(crate) generation: u32,
|
||||||
|
|
|
@ -17,6 +17,15 @@ impl SystemId {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An ECS system that can be added to a [Schedule](crate::schedule::Schedule)
|
/// An ECS system that can be added to a [Schedule](crate::schedule::Schedule)
|
||||||
|
///
|
||||||
|
/// Systems are functions with all arguments implementing [SystemParam].
|
||||||
|
///
|
||||||
|
/// Systems are added to an application using `AppBuilder::add_system(my_system.system())`
|
||||||
|
/// or similar methods, and will generally run once per pass of the main loop.
|
||||||
|
///
|
||||||
|
/// Systems are executed in parallel, in opportunistic order; data access is managed automatically.
|
||||||
|
/// It's possible to specify explicit execution order between specific systems,
|
||||||
|
/// see [SystemDescriptor](crate::schedule::SystemDescriptor).
|
||||||
pub trait System: Send + Sync + 'static {
|
pub trait System: Send + Sync + 'static {
|
||||||
type In;
|
type In;
|
||||||
type Out;
|
type Out;
|
||||||
|
|
Loading…
Reference in a new issue