Expand description

Shipyard is an Entity Component System focused on usability and speed.

The user guide is a great place to learn all about Shipyard!

Features

  • parallel (default) — enables workload threading and add parallel iterators
  • proc (default) — re-exports macros from shipyard_proc, mainly to derive Component
  • serde1 — adds (de)serialization support with serde
  • std (default) — lets Shipyard use the standard library
  • thread_local — adds methods and types required to work with !Send and !Sync components
  • tracing — reports workload and system execution

Modules

Allows access to helper types needed to implement Borrow.

All error types.

Types for displaying workload information.

Iterators types and traits.

module related to storage tracking, like insertion or modification.

Structs

Contains all storages present in the World.

Shared view over AllStorages.

Exclusive view over AllStorages.

Iterator over newly bulk added entities.

Entities holds the EntityIds to all entities: living, removed and dead.

Shared view over Entities storage.

Exclusive view over Entities storage.

Handle to an entity.

Wrapper type allowing iterating over inserted flagged components.

Wrapper type allowing iterating over inserted and modified flagged components.

Wrapper type allowing iterating over modified flagged components.

Tracks component modification.

NonSendthread_local

Type used to access !Send storages.

NonSendSyncthread_local

Type used to access !Send + !Sync storages.

NonSyncthread_local

Type used to access !Sync storages.

Used to filter out components.

Yield the entities that have a component or another.

Wraps an AtomicRefcell’s shared borrow.

Wraps an AtomicRefcell’s exclusive borrow.

Used to create a Workload.

Internal part of a SparseSet.

Default component storage.

A draining iterator for SparseSet<T>.

A trait to query the amount of memory a storage uses.

Timestamp used to clear tracking information.

Unique storage.

Shared view over a unique component storage.

Exclusive view over a unique component storage.

Shared view over a component storage.

Exclusive view over a component storage.

Keeps information to create a workload.

Self contained system that may be inserted into a Workload.

World contains all data this library will manipulate.

Enums

Describes if a storage is borrowed exclusively or not.
It is used to display workloads’ borrowing information.

Returned when iterating with Or filter.

Id of a storage, can be a TypeId or u64.

Traits

Defines how components are added to an existing entity.

Add component only if not already present.

Trait describing how to add a new entity to a storage.

Allows a type to be borrowed by AllStorages::borrow and AllStorages::run.

Converts a value to a Box<dyn Label>

Allows a type to be borrowed by World::borrow, World::run and workloads.

Explains to a workload which storage are borrowed by a system.

Reserves memory for a set of entities.

Indicates that a struct or enum can be store in the World.

Checks if an entity has some components.

Low level access to storage.

Deletes component from entities.

Retrieves components based on their type and entity id.

Transforms a view into a helper type. This allows workloads to have the current syntax.

Trait used to create iterators.
Yields Mut for mutable components.

Creates iterator returning EntityId.

Converts to a collection of systems.

Trait used to add systems to a workload.

Trait used to add fallible systems to a workload.

Workload identifier

Removes component from entities.

Defines common storage operations.

Modifies a system.

Trait used as bound for World::remove and AllStorages::remove.

Trait used as bound for World::retain and AllStorages::retain.

Indicates that a struct or enum can be store a single time in the World.

Modifies a workload.

Derive Macros