@vaguevoid/fiasco / ecs/components / Component
Type Alias: Component<T>
Component<
T
> =ComponentKind
&T
Defined in: src/ecs/components.ts:163
A generic type for defining ECS Components.
ts
import type { Query, Component, u8, Transform } from '@vaguevoid/fiasco'
import { Components } from '../.fiasco/generated'
// Example component with one field.
type Car = Component<{
wheels: u8
}>
// Example how to spawn the custom component defined above.
function system() {
engine.spawn([
new Components.Car({ wheels: 4 })
])
}
// Example how to query entities with Car component attached.
function system(cars: Query<[Car, Transform]>) {
for (const [car, transform] of cars) {
console.log(car.wheels, transform.position)
}
}
Type Parameters
T
T
extends { [K in keyof T]: IsArray<T[K]> extends true ? IsTuple<T[K]> extends true ? T[K] : never : T[K] extends Primitives ? T[K] : T[K] extends Record<string, Primitives> ? T[K] : IsInterface<T[K]> extends true ? T[K] : never }
= { }