lyra-wasm-scripting-test/witguest/wit/world.wit

56 lines
1.1 KiB
Plaintext
Raw Normal View History

2024-04-11 23:03:39 +00:00
package component:witguest;
interface math {
record vec3 {
x: f32,
y: f32,
z: f32,
}
}
interface ecs {
//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
}
resource ecs-dynamic-view {
constructor(wrld: borrow<ecs-world>, component-infos: list<component-info>);
next: func() -> option<list<u8>>;
}
resource ecs-world {
constructor();
// 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>) -> ecs-dynamic-view;
}
}
2024-04-11 23:03:39 +00:00
/// An example world for the component to target.
world example {
import math;
import ecs;
import host-print: func(msg: string);
export on-init: func() -> result<u8>;
2024-04-11 23:03:39 +00:00
}