Skip to main content

Crate siecs

Crate siecs 

Source
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;

Modules§

component
entity
module
observer
prelude
query
raw
resource
system
world
world_ref

Derive Macros§

Component
Event
Resource