2024-04-11 23:03:39 +00:00
|
|
|
package component:witguest;
|
|
|
|
|
2024-04-12 06:05:10 +00:00
|
|
|
interface math {
|
|
|
|
record vec3 {
|
|
|
|
x: f32,
|
|
|
|
y: f32,
|
|
|
|
z: f32,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
interface ecs-world {
|
|
|
|
//use math.{vec3};
|
|
|
|
|
|
|
|
record entity-id {
|
|
|
|
id: u64,
|
|
|
|
}
|
|
|
|
|
|
|
|
record entity {
|
|
|
|
id: entity-id,
|
|
|
|
generation: u64,
|
|
|
|
}
|
|
|
|
|
|
|
|
record wasm-type-id {
|
|
|
|
inner: tuple<u64, u64>,
|
|
|
|
}
|
|
|
|
|
|
|
|
record component-info {
|
|
|
|
size: u64,
|
|
|
|
alignment: u64,
|
|
|
|
type-id: wasm-type-id, // a u128
|
|
|
|
}
|
|
|
|
|
|
|
|
// expects components to be tightly packed in the same order of component-infos
|
|
|
|
spawn: func(components: list<u8>, component-infos: list<component-info>) -> entity;
|
|
|
|
view: func(component-infos: list<component-info>) -> list<u8>;
|
|
|
|
}
|
|
|
|
|
2024-04-11 23:03:39 +00:00
|
|
|
/// An example world for the component to target.
|
|
|
|
world example {
|
2024-04-12 06:05:10 +00:00
|
|
|
import math;
|
|
|
|
import ecs-world;
|
|
|
|
|
|
|
|
import host-print: func(msg: string);
|
|
|
|
export on-init: func() -> result<u8>;
|
2024-04-11 23:03:39 +00:00
|
|
|
}
|