use flecs::*;
#[derive(Default, Debug, PartialEq)]
struct Position {
x: f32,
y: f32,
}
#[derive(Default, Debug, PartialEq)]
struct Walking {}
fn main() {
println!("Entity Basics starting...");
let mut world = World::new();
world.component::<Position>();
world.component::<Walking>();
let bob = world
.entity()
.named("Bob")
.set::<Position>(Position { x: 10.0, y: 20.0 })
.add::<Walking>();
let pos = bob.get::<Position>();
println!("Bob position: {}, {}", pos.x, pos.y);
bob.set::<Position>(Position { x: 20.0, y: 30.0 });
println!("Bob position: {}, {}", pos.x, pos.y);
let alice = world.entity().named("Alice").set::<Position>(Position { x: 10.0, y: 20.0 });
alice.add::<Walking>();
println!("Alice type = [ {} ]", alice.type_info().to_str());
alice.remove::<Walking>();
world.each1(|e: flecs::Entity, p: &Position| {
println!("{}: {}, {}", e.name(), p.x, p.y);
});
}
#[cfg(test)]
mod tests {
#[test]
fn flecs_entity_basics() {
super::main();
}
}