23个不稳定版本 (3个破坏性版本)
0.6.6 | 2024年4月3日 |
---|---|
0.6.5 | 2024年4月3日 |
0.6.0 | 2024年3月19日 |
0.5.1 | 2024年3月18日 |
0.1.6 | 2022年11月20日 |
#356 in 游戏开发
23KB
485 行
thallium
我一直在开发的一个基本游戏引擎
示例代码
use thallium::ecs::{App, Component, Entities, Query, Ref, RefMut, SystemSet};
#[derive(Component)]
struct Person {
name: String,
age: i32,
}
let mut app = App::new();
let person1 = app.create_entity();
app.add_component(person1, Person {
name: "Alice".into(),
age: 23,
});
let person2 = app.create_entity();
app.add_component(person2, Person {
name: "Bob".into(),
age: 25,
});
// create a system set that prints all people
let mut print_people = SystemSet::new();
print_people.register_system(|q: Query<Ref<Person>>| {
for (_, person) in q.iter() {
println!("'{}' is {} years old", person.name, person.age);
}
});
// print out all the people
// should print:
//
// 'Alice' is 23 years old
// 'Bob' is 25 years old
app.run(&mut print_people);
// increment the ages of all people
app.run(|mut q: Query<RefMut<Person>>| {
for (_, mut person) in q.iter_mut() {
person.age += 1;
}
});
// another way to increment the ages of all people would be
app.run(|entities: Entities<'_>, mut q: Query<RefMut<Person>>| {
for entity in entities.iter() {
if let Some(mut person) = q.get_mut(entity) {
person.age += 1;
}
}
});
// print out all the people again
// should print:
//
// 'Alice' is 25 years old
// 'Bob' is 27 years old
app.run(&mut print_people);
依赖项
~0–5MB