lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
21 lines (20 loc) • 1.43 kB
TypeScript
import { Cancellable } from "@lincode/promiselikes";
import type Appendable from "../../display/core/Appendable";
type Ticker = "beforeRender" | "afterRender" | "render" | "loop";
type SetupTicker = Ticker | typeof queueMicrotask | [() => Promise<void>];
export type SystemOptions<GameObject extends object | Appendable, Data extends Record<string, any> | void> = {
data?: Data | ((gameObject: GameObject) => Data);
effect?: (gameObject: GameObject, data: Data) => void | false | (() => void);
cleanup?: (gameObject: GameObject, data: Data) => void;
update?: (gameObject: GameObject, data: Data) => void;
updateTicker?: Ticker;
effectTicker?: SetupTicker;
beforeTick?: (queued: Map<GameObject, Data> | Set<GameObject>) => void;
afterTick?: (queued: Map<GameObject, Data> | Set<GameObject>) => void;
sort?: (a: GameObject, b: GameObject) => number;
};
declare const _default: <GameObject extends object | Appendable, Data extends void | Record<string, any>>(name: string, { data, effect, cleanup, update, updateTicker, effectTicker, beforeTick, afterTick, sort }: SystemOptions<GameObject, Data>, userland?: boolean) => {
add: ((item: GameObject, initData?: Data | undefined) => false | Cancellable) | ((item: GameObject, initData?: Data | undefined) => boolean);
delete: ((item: GameObject) => false | Cancellable | undefined) | ((item: GameObject) => boolean);
};
export default _default;