Function createEngine: (gopt: KAPLAYOpt) => { globalOpt: { scale: number } & KAPLAYOpt<any, any> canvas: HTMLCanvasElement app: { state: { canvas: HTMLCanvasElement buttons: ButtonsDef buttonsByKey: Map<Key, string[]> buttonsByMouse: Map<MouseButton, string[]> buttonsByGamepad: Map<KGamepadButton, string[]> buttonsByKeyCode: Map<string, string[]> loopID: null | number stopped: boolean dt: number fixedDt: number restDt: number time: number realTime: number fpsCounter: { dts: number[] timer: number fps: number tick(dt: number): void } timeScale: number skipTime: boolean isHidden: boolean numFrames: number capsOn: boolean mousePos: Vec2 mouseDeltaPos: Vec2 keyState: ButtonState<Key> mouseState: ButtonState<MouseButton> mergedGamepadState: { buttonState: ButtonState<KGamepadButton> stickState: Map<GamepadStick, Vec2> } gamepadStates: Map<number, { buttonState: ButtonState<KGamepadButton> stickState: Map<GamepadStick, Vec2> }> lastInputDevice: "mouse" | "keyboard" | "gamepad" | null buttonState: ButtonState<string> gamepads: KGamepad[] charInputted: string[] isMouseMoved: boolean lastWidth: number lastHeight: number events: KEventHandler<AppEventMap> } dt: () => number fixedDt: () => number restDt: () => number time: () => number run: (fixedUpdate: () => void, update: (processInput: () => void, resetInput: () => void) => void) => void runOnce: (update: () => void) => void canvas: HTMLCanvasElement fps: () => number numFrames: () => number quit: () => void isHidden: () => boolean setFullscreen: (f?: boolean) => void isFullscreen: () => boolean setCursor: (c: Cursor) => void screenshot: () => string getGamepads: () => KGamepad[] getCursor: () => Cursor setCursorLocked: (b: boolean) => void isCursorLocked: () => boolean isTouchscreen: () => boolean mousePos: () => Vec2 mouseDeltaPos: () => Vec2 isKeyDown: (k?: Key | Key[]) => boolean isKeyPressed: (k?: Key | Key[]) => boolean isKeyPressedRepeat: (k?: Key | Key[]) => boolean isKeyReleased: (k?: Key | Key[]) => boolean isMouseDown: (m?: MouseButton) => boolean isMousePressed: (m?: MouseButton) => boolean isMouseReleased: (m?: MouseButton) => boolean isMouseMoved: () => boolean isGamepadButtonPressed: (btn?: KGamepadButton | KGamepadButton[]) => boolean isGamepadButtonDown: (btn?: KGamepadButton | KGamepadButton[]) => boolean isGamepadButtonReleased: (btn?: KGamepadButton | KGamepadButton[]) => boolean isFocused: () => boolean getGamepadStick: (stick: GamepadStick) => Vec2 isButtonPressed: (btn?: string | string[]) => boolean isButtonDown: (btn?: string | string[]) => boolean isButtonReleased: (btn?: string | string[]) => boolean setButton: (btn: string, binding: ButtonBinding) => void getButton: (btn: string) => ButtonBinding pressButton: (btn: string) => void releaseButton: (btn: string) => void charInputted: () => string[] onResize: (action: () => void) => KEventController onKeyDown: ( (action: (key: Key) => void) => KEventController) & ( (key: Key | Key[], action: (key: Key) => void) => KEventController) onKeyPress: ( (action: (key: Key) => void) => KEventController) & ( (key: Key | Key[], action: (key: Key) => void) => KEventController) onKeyPressRepeat: ( (action: (key: Key) => void) => KEventController) & ( (key: Key | Key[], action: (key: Key) => void) => KEventController) onKeyRelease: ( (action: (key: Key) => void) => KEventController) & ( (key: Key | Key[], action: (key: Key) => void) => KEventController) onMouseDown: ( (action: (m: MouseButton) => void) => KEventController) & ( (mouse: MouseButton | MouseButton[], action: (m: MouseButton) => void) => KEventController) onMousePress: ( (action: (m: MouseButton) => void) => KEventController) & ( (mouse: MouseButton | MouseButton[], action: (m: MouseButton) => void) => KEventController) onMouseRelease: ( (action: (m: MouseButton) => void) => KEventController) & ( (mouse: MouseButton | MouseButton[], action: (m: MouseButton) => void) => KEventController) onMouseMove: (f: (pos: Vec2, dpos: Vec2) => void) => KEventController onCharInput: (action: (ch: string) => void) => KEventController onTouchStart: (f: (pos: Vec2, t: Touch) => void) => KEventController onTouchMove: (f: (pos: Vec2, t: Touch) => void) => KEventController onTouchEnd: (f: (pos: Vec2, t: Touch) => void) => KEventController onScroll: (action: (delta: Vec2) => void) => KEventController onHide: (action: () => void) => KEventController onShow: (action: () => void) => KEventController onGamepadButtonDown: ( (action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) & ( (btn: KGamepadButton, action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) onGamepadButtonPress: ( (action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) & ( (btn: KGamepadButton | KGamepadButton[], action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) onGamepadButtonRelease: ( (action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) & ( (btn: KGamepadButton | KGamepadButton[], action: (btn: KGamepadButton, gamepad: KGamepad) => void) => KEventController) onGamepadStick: (stick: GamepadStick, action: (value: Vec2, gp: KGamepad) => void) => KEventController onGamepadConnect: (action: (gamepad: KGamepad) => void) => KEventController onGamepadDisconnect: (action: (gamepad: KGamepad) => void) => KEventController onButtonPress: ( (action: (btn: string) => void) => KEventController) & ( (btn: string | string, action: (btn: string) => void) => KEventController) onButtonDown: ( (action: (btn: string) => void) => KEventController) & ( (btn: string | string, action: (btn: string) => void) => KEventController) onButtonRelease: ( (action: (btn: string) => void) => KEventController) & ( (btn: string | string, action: (btn: string) => void) => KEventController) getLastInputDeviceType: () => "keyboard" | "gamepad" | "mouse" | null events: KEventHandler<AppEventMap> } ggl: { gl: WebGLRenderingContext opts: KAPLAYOpt<any, any> onDestroy: (action: () => unknown) => void destroy: () => void pushTexture2D: (item: WebGLTexture) => void popTexture2D: () => void pushArrayBuffer: (item: WebGLBuffer) => void popArrayBuffer: () => void pushElementArrayBuffer: (item: WebGLBuffer) => void popElementArrayBuffer: () => void pushFramebuffer: (item: WebGLFramebuffer) => void popFramebuffer: () => void pushRenderbuffer: (item: WebGLRenderbuffer) => void popRenderbuffer: () => void pushViewport: (item: { x: number y: number w: number h: number }) => void popViewport: () => void pushProgram: (item: WebGLProgram) => void popProgram: () => void setVertexFormat: (fmt: VertexFormat) => void } gfx: AppGfxCtx audio: { ctx: AudioContext masterNode: GainNode } assets: { urlPrefix: string sprites: AssetBucket<SpriteData> fonts: AssetBucket<FontData> bitmapFonts: AssetBucket<GfxFont> sounds: AssetBucket<SoundData> shaders: AssetBucket<Shader> custom: AssetBucket<any> music: Record<string, string> packer: TexPacker loaded: boolean } frameRenderer: { frameStart: () => void frameEnd: () => void fixedUpdateFrame: () => void updateFrame: () => void } fontCacheC2d: CanvasRenderingContext2D | null fontCacheCanvas: HTMLCanvasElement game: Game debug: Debug gc: ( () => void)[] k: KAPLAYCtx startLoop(): void }