GoudEngine TypeScript SDK
    Preparing search index...

    Interface IGoudGame

    Main game engine instance. Creates a window, manages rendering, input, and ECS.

    interface IGoudGame {
        deltaTime: number;
        fps: number;
        frameCount: number;
        title: string;
        totalTime: number;
        windowHeight: number;
        windowWidth: number;
        aabbOverlap(
            minAx: number,
            minAy: number,
            maxAx: number,
            maxAy: number,
            minBx: number,
            minBy: number,
            maxBx: number,
            maxBy: number,
        ): boolean;
        addLight(
            lightType: number,
            posX: number,
            posY: number,
            posZ: number,
            dirX: number,
            dirY: number,
            dirZ: number,
            r: number,
            g: number,
            b: number,
            intensity: number,
            range: number,
            spotAngle: number,
        ): number;
        addName(entity: IEntity, name: string): void;
        addSprite(entity: IEntity, sprite: ISpriteData): void;
        addTransform2d(entity: IEntity, transform: ITransform2DData): void;
        beginFrame(r?: number, g?: number, b?: number, a?: number): void;
        circleOverlap(
            x1: number,
            y1: number,
            r1: number,
            x2: number,
            y2: number,
            r2: number,
        ): boolean;
        clearDepth(): void;
        cloneEntity(entity: IEntity): IEntity;
        cloneEntityRecursive(entity: IEntity): IEntity;
        close(): void;
        collisionAabbAabb(
            centerAx: number,
            centerAy: number,
            halfWa: number,
            halfHa: number,
            centerBx: number,
            centerBy: number,
            halfWb: number,
            halfHb: number,
        ): IContact | null;
        collisionCircleAabb(
            circleX: number,
            circleY: number,
            circleRadius: number,
            boxX: number,
            boxY: number,
            boxHw: number,
            boxHh: number,
        ): IContact | null;
        collisionCircleCircle(
            centerAx: number,
            centerAy: number,
            radiusA: number,
            centerBx: number,
            centerBy: number,
            radiusB: number,
        ): IContact | null;
        configureFog(
            enabled: boolean,
            r: number,
            g: number,
            b: number,
            density: number,
        ): boolean;
        configureGrid(enabled: boolean, size: number, divisions: number): boolean;
        configureSkybox(
            enabled: boolean,
            r: number,
            g: number,
            b: number,
            a: number,
        ): boolean;
        createCube(
            textureId: number,
            width: number,
            height: number,
            depth: number,
        ): number;
        createCylinder(
            textureId: number,
            radius: number,
            height: number,
            segments?: number,
        ): number;
        createPlane(textureId: number, width: number, depth: number): number;
        createSphere(
            textureId: number,
            diameter: number,
            segments?: number,
        ): number;
        despawn(entity: IEntity): boolean;
        despawnBatch(entities: IEntity[]): number;
        destroy(): void;
        destroyObject(objectId: number): boolean;
        destroyTexture(handle: number): void;
        disableBlending(): void;
        disableDepthTest(): void;
        distance(x1: number, y1: number, x2: number, y2: number): number;
        distanceSquared(x1: number, y1: number, x2: number, y2: number): number;
        drawQuad(
            x: number,
            y: number,
            width: number,
            height: number,
            color?: IColor,
        ): void;
        drawSprite(
            texture: number,
            x: number,
            y: number,
            width: number,
            height: number,
            rotation?: number,
            color?: IColor,
        ): void;
        drawSpriteRect(
            texture: number,
            x: number,
            y: number,
            width: number,
            height: number,
            rotation: number,
            srcX: number,
            srcY: number,
            srcW: number,
            srcH: number,
            color?: IColor,
        ): boolean;
        enableDepthTest(): void;
        endFrame(): void;
        entityCount(): number;
        getFpsStats(): IFpsStats;
        getMouseDelta(): IVec2;
        getMousePosition(): IVec2;
        getName(entity: IEntity): string | null;
        getRenderStats(): IRenderStats;
        getScrollDelta(): IVec2;
        getSprite(entity: IEntity): ISpriteData | null;
        getTransform2d(entity: IEntity): ITransform2DData | null;
        hasName(entity: IEntity): boolean;
        hasSprite(entity: IEntity): boolean;
        hasTransform2d(entity: IEntity): boolean;
        isActionJustPressed(action: string): boolean;
        isActionJustReleased(action: string): boolean;
        isActionPressed(action: string): boolean;
        isAlive(entity: IEntity): boolean;
        isKeyJustPressed(key: number): boolean;
        isKeyJustReleased(key: number): boolean;
        isKeyPressed(key: number): boolean;
        isMouseButtonJustPressed(button: number): boolean;
        isMouseButtonJustReleased(button: number): boolean;
        isMouseButtonPressed(button: number): boolean;
        loadTexture(path: string): Promise<number>;
        mapActionKey(action: string, key: number): boolean;
        pointInCircle(
            px: number,
            py: number,
            cx: number,
            cy: number,
            radius: number,
        ): boolean;
        pointInRect(
            px: number,
            py: number,
            rx: number,
            ry: number,
            rw: number,
            rh: number,
        ): boolean;
        removeLight(lightId: number): boolean;
        removeName(entity: IEntity): boolean;
        removeSprite(entity: IEntity): boolean;
        removeTransform2d(entity: IEntity): boolean;
        render3D(): boolean;
        run(update: (dt: number) => void): void;
        setCameraPosition3D(x: number, y: number, z: number): boolean;
        setCameraRotation3D(pitch: number, yaw: number, roll: number): boolean;
        setFogEnabled(enabled: boolean): boolean;
        setFpsOverlayCorner(corner: number): void;
        setFpsOverlayEnabled(enabled: boolean): void;
        setFpsUpdateInterval(interval: number): void;
        setGridEnabled(enabled: boolean): boolean;
        setObjectPosition(
            objectId: number,
            x: number,
            y: number,
            z: number,
        ): boolean;
        setObjectRotation(
            objectId: number,
            x: number,
            y: number,
            z: number,
        ): boolean;
        setObjectScale(objectId: number, x: number, y: number, z: number): boolean;
        setSprite(entity: IEntity, sprite: ISpriteData): void;
        setTransform2d(entity: IEntity, transform: ITransform2DData): void;
        setViewport(x: number, y: number, width: number, height: number): void;
        shouldClose(): boolean;
        spawnBatch(count: number): IEntity[];
        spawnEmpty(): IEntity;
        updateLight(
            lightId: number,
            lightType: number,
            posX: number,
            posY: number,
            posZ: number,
            dirX: number,
            dirY: number,
            dirZ: number,
            r: number,
            g: number,
            b: number,
            intensity: number,
            range: number,
            spotAngle: number,
        ): boolean;
    }

    Implemented by

    Index

    Properties

    deltaTime: number

    Seconds elapsed since last frame

    fps: number

    Current frames per second

    frameCount: number

    Number of frames processed

    title: string

    Window title

    totalTime: number

    Total elapsed time in seconds

    windowHeight: number

    Window height in pixels

    windowWidth: number

    Window width in pixels

    Methods

    • Fast AABB overlap test

      Parameters

      • minAx: number
      • minAy: number
      • maxAx: number
      • maxAy: number
      • minBx: number
      • minBy: number
      • maxBx: number
      • maxBy: number

      Returns boolean

    • Adds a light to the 3D scene

      Parameters

      • lightType: number
      • posX: number
      • posY: number
      • posZ: number
      • dirX: number
      • dirY: number
      • dirZ: number
      • r: number
      • g: number
      • b: number
      • intensity: number
      • range: number
      • spotAngle: number

      Returns number

    • Attaches a Name component to the entity

      Parameters

      Returns void

    • Attaches a Sprite component to the entity

      Parameters

      Returns void

    • Starts a new render frame with the given clear color

      Parameters

      • Optionalr: number
      • Optionalg: number
      • Optionalb: number
      • Optionala: number

      Returns void

    • Fast circle overlap test

      Parameters

      • x1: number
      • y1: number
      • r1: number
      • x2: number
      • y2: number
      • r2: number

      Returns boolean

    • Clears the depth buffer

      Returns void

    • Clones an entity, creating a new entity with copies of all cloneable components

      Parameters

      Returns IEntity

    • Clones an entity and all its descendants recursively

      Parameters

      Returns IEntity

    • Signals the window to close

      Returns void

    • AABB vs AABB collision test with contact

      Parameters

      • centerAx: number
      • centerAy: number
      • halfWa: number
      • halfHa: number
      • centerBx: number
      • centerBy: number
      • halfWb: number
      • halfHb: number

      Returns IContact | null

    • Circle vs AABB collision test

      Parameters

      • circleX: number
      • circleY: number
      • circleRadius: number
      • boxX: number
      • boxY: number
      • boxHw: number
      • boxHh: number

      Returns IContact | null

    • Circle vs circle collision test

      Parameters

      • centerAx: number
      • centerAy: number
      • radiusA: number
      • centerBx: number
      • centerBy: number
      • radiusB: number

      Returns IContact | null

    • Configures fog settings

      Parameters

      • enabled: boolean
      • r: number
      • g: number
      • b: number
      • density: number

      Returns boolean

    • Configures the ground grid

      Parameters

      • enabled: boolean
      • size: number
      • divisions: number

      Returns boolean

    • Configures the skybox/background color

      Parameters

      • enabled: boolean
      • r: number
      • g: number
      • b: number
      • a: number

      Returns boolean

    • Creates a 3D cube

      Parameters

      • textureId: number
      • width: number
      • height: number
      • depth: number

      Returns number

    • Creates a 3D cylinder

      Parameters

      • textureId: number
      • radius: number
      • height: number
      • Optionalsegments: number

      Returns number

    • Creates a 3D plane

      Parameters

      • textureId: number
      • width: number
      • depth: number

      Returns number

    • Creates a 3D sphere

      Parameters

      • textureId: number
      • diameter: number
      • Optionalsegments: number

      Returns number

    • Destroys an entity and all its components

      Parameters

      Returns boolean

    • Despawns multiple entities at once

      Parameters

      Returns number

    • Releases all engine resources

      Returns void

    • Destroys a 3D object

      Parameters

      • objectId: number

      Returns boolean

    • Destroys a previously loaded texture

      Parameters

      • handle: number

      Returns void

    • Disables alpha blending

      Returns void

    • Disables depth testing

      Returns void

    • Distance between two points

      Parameters

      • x1: number
      • y1: number
      • x2: number
      • y2: number

      Returns number

    • Squared distance between two points

      Parameters

      • x1: number
      • y1: number
      • x2: number
      • y2: number

      Returns number

    • Draws a colored rectangle

      Parameters

      • x: number
      • y: number
      • width: number
      • height: number
      • Optionalcolor: IColor

      Returns void

    • Draws a textured sprite

      Parameters

      • texture: number
      • x: number
      • y: number
      • width: number
      • height: number
      • Optionalrotation: number
      • Optionalcolor: IColor

      Returns void

    • Draws a sprite with source rectangle for sprite sheets

      Parameters

      • texture: number
      • x: number
      • y: number
      • width: number
      • height: number
      • rotation: number
      • srcX: number
      • srcY: number
      • srcW: number
      • srcH: number
      • Optionalcolor: IColor

      Returns boolean

    • Enables depth testing

      Returns void

    • Finishes the current frame and presents it to the screen

      Returns void

    • Returns the number of living entities

      Returns number

    • Returns FPS statistics from the debug overlay rolling window

      Returns IFpsStats

    • Returns the mouse movement since last frame

      Returns IVec2

    • Returns the mouse position relative to the window

      Returns IVec2

    • Returns the entity's Name, or null if absent

      Parameters

      Returns string | null

    • Returns rendering statistics for the current frame

      Returns IRenderStats

    • Returns the scroll wheel delta this frame

      Returns IVec2

    • Returns true if the entity has a Name

      Parameters

      Returns boolean

    • Returns true if the entity has a Sprite

      Parameters

      Returns boolean

    • Returns true if the entity has a Transform2D

      Parameters

      Returns boolean

    • Returns true if the action was pressed this frame

      Parameters

      • action: string

      Returns boolean

    • Returns true if the action was released this frame

      Parameters

      • action: string

      Returns boolean

    • Returns true if the action is currently pressed

      Parameters

      • action: string

      Returns boolean

    • Returns true if the entity still exists

      Parameters

      Returns boolean

    • Returns true if the key was pressed this frame

      Parameters

      • key: number

      Returns boolean

    • Returns true if the key was released this frame

      Parameters

      • key: number

      Returns boolean

    • Returns true if the key is currently held down

      Parameters

      • key: number

      Returns boolean

    • Returns true if the mouse button was pressed this frame

      Parameters

      • button: number

      Returns boolean

    • Returns true if the mouse button was released this frame

      Parameters

      • button: number

      Returns boolean

    • Returns true if the mouse button is currently held

      Parameters

      • button: number

      Returns boolean

    • Loads a texture from a file path and returns its handle

      Parameters

      • path: string

      Returns Promise<number>

    • Maps an action name to a key

      Parameters

      • action: string
      • key: number

      Returns boolean

    • Tests if a point is inside a circle

      Parameters

      • px: number
      • py: number
      • cx: number
      • cy: number
      • radius: number

      Returns boolean

    • Tests if a point is inside a rectangle

      Parameters

      • px: number
      • py: number
      • rx: number
      • ry: number
      • rw: number
      • rh: number

      Returns boolean

    • Removes a light

      Parameters

      • lightId: number

      Returns boolean

    • Removes the Name from the entity

      Parameters

      Returns boolean

    • Removes the Sprite from the entity

      Parameters

      Returns boolean

    • Removes the Transform2D from the entity

      Parameters

      Returns boolean

    • Renders all 3D objects

      Returns boolean

    • Runs the game loop. Calls the update callback each frame with delta time. Blocks until the window is closed.

      Parameters

      • update: (dt: number) => void

      Returns void

    • Sets the 3D camera position

      Parameters

      • x: number
      • y: number
      • z: number

      Returns boolean

    • Sets the 3D camera rotation

      Parameters

      • pitch: number
      • yaw: number
      • roll: number

      Returns boolean

    • Sets fog visibility

      Parameters

      • enabled: boolean

      Returns boolean

    • Sets the screen corner where the FPS overlay is displayed

      Parameters

      • corner: number

      Returns void

    • Enables or disables the FPS debug overlay

      Parameters

      • enabled: boolean

      Returns void

    • Sets how often FPS statistics are recomputed

      Parameters

      • interval: number

      Returns void

    • Sets grid visibility

      Parameters

      • enabled: boolean

      Returns boolean

    • Sets a 3D object's position

      Parameters

      • objectId: number
      • x: number
      • y: number
      • z: number

      Returns boolean

    • Sets a 3D object's rotation in degrees

      Parameters

      • objectId: number
      • x: number
      • y: number
      • z: number

      Returns boolean

    • Sets a 3D object's scale

      Parameters

      • objectId: number
      • x: number
      • y: number
      • z: number

      Returns boolean

    • Sets the rendering viewport

      Parameters

      • x: number
      • y: number
      • width: number
      • height: number

      Returns void

    • Returns true if the window close has been requested

      Returns boolean

    • Spawns multiple empty entities at once

      Parameters

      • count: number

      Returns IEntity[]

    • Creates a new empty entity

      Returns IEntity

    • Updates a light's properties

      Parameters

      • lightId: number
      • lightType: number
      • posX: number
      • posY: number
      • posZ: number
      • dirX: number
      • dirY: number
      • dirZ: number
      • r: number
      • g: number
      • b: number
      • intensity: number
      • range: number
      • spotAngle: number

      Returns boolean