use anyhow::Result;
use qmi::{QMI, pool::ComponentPool};
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
struct Position {
x: i32,
y: i32,
z: i32,
}
#[derive(Debug, Deserialize, Serialize)]
struct Velocity {
x: i32,
y: i32,
z: i32,
}
fn main() -> Result<()> {
let mut qmi = QMI::open("test.db", false)?;
qmi.load::<Position>().unwrap();
qmi.load::<Velocity>().unwrap();
for entity in qmi.query::<(Position, Velocity)>() {
println!("{:?}", entity);
}
let pool = qmi
.component_storage
.get(
std::any::type_name::<Position>()
.rsplit("::")
.next()
.unwrap(),
)
.unwrap()
.as_any()
.downcast_ref::<ComponentPool<Position>>()
.unwrap();
println!("{:?}", pool.dense_data);
Ok(())
}