Skip to content

@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 } = { }