import { ECS } from "./ECS"; import { EntityView } from "./EntityViewFactory"; import { ISystem } from "./ISystem"; export class System implements ISystem { public ecs: ECS; public update(dt: number): void { } } export type ValuesOf = T[number]; type ArrayElement = ArrayType extends (infer ElementType)[] ? ElementType : never; export type SystemEntityType = (T[View] extends EntityView ? ArrayElement : never) | any;