Expand description
Rust bindings for SIECS.
The safe API wraps common world, entity, component, query, system, resource,
observer, and event workflows. The raw module exposes the C FFI when a
feature is not wrapped yet.
use siecs::prelude::*;
#[derive(Component)]
struct Position {
x: f32,
y: f32,
}
#[derive(Component)]
struct Velocity {
x: f32,
y: f32,
}
fn move_system(mut query: Query<(&mut Position, &Velocity)>) {
for (position, velocity) in &mut query {
position.x += velocity.x;
position.y += velocity.y;
}
}
let mut world = World::new();
let entity = world.entity();
world.set(entity, Position { x: 0.0, y: 0.0 });
world.set(entity, Velocity { x: 1.0, y: 2.0 });
world.system(Phase::OnUpdate, move_system);
world.progress();
let position = world.get::<Position>(entity).unwrap();
assert_eq!(position.x, 1.0);
assert_eq!(position.y, 2.0);Re-exports§
pub use component::Abstract;pub use component::ChildOf;pub use component::Component;pub use component::Disabled;pub use component::Name;pub use entity::Entity;pub use module::Module;pub use module::ModuleId;pub use observer::Event;pub use observer::EventId;pub use observer::Observer;pub use observer::ObserverEvent;pub use observer::ObserverId;pub use observer::OnAdd;pub use observer::OnRemove;pub use observer::OnSet;pub use observer::RawEvent;pub use observer::TypedEvent;pub use query::Field;pub use query::FieldKind;pub use query::ParamError;pub use query::Query;pub use query::QueryFilter;pub use query::QueryParam;pub use query::QueryState;pub use query::With;pub use query::Without;pub use resource::Res;pub use resource::ResMut;pub use resource::Resource;pub use resource::ResourceId;pub use system::Commands;pub use system::EachCtx;pub use system::IntoSystem;pub use system::Phase;pub use system::System;pub use system::SystemContext;pub use system::SystemDescBuilder;pub use system::SystemId;pub use system::SystemParam;pub use world::DeferGuard;pub use world::World;pub use world::WorldFeatures;pub use world_ref::WorldRef;