@turbowarp/types-tw
    Preparing search index...

    Class RenderWebGL

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    • Parameters

      • canvas: HTMLCanvasElement
      • OptionalxLeft: number
      • OptionalxRight: number
      • OptionalyBottom: number
      • OptionalyTop: number

      Returns RenderWebGL

    Properties

    _allDrawables: Drawable[]
    _allSkins: Skin[]
    _backgroundColor3b: [number, number, number]

    RGB from 0-255

    _backgroundColor4f: [number, number, number, number]

    RGBA from 0-1

    _backgroundDrawRegionId: DrawingRegion
    _bufferInfo: BufferInfo
    _customFontStyles: HTMLStyleElement | null
    _debugCanvas?: HTMLCanvasElement
    _drawList: number[]
    _exitRegion: Function | null
    _groupOrdering: string[]
    _layerGroups: Record<LayerGroup, { drawListOffset: number; groupIndex: number }>
    _nativeSize: [number, number]
    _nextDrawableId: number
    _nextSkinId: number
    _overlays: Overlay[]
    _penSkinId: number | null
    _projection: M4
    _regionId: unknown
    _shaderManager: ShaderManager
    _snapshotCallbacks: ((dataURL: string) => void)[]
    _useGpuMode: UseGpuModes
    _xLeft: number
    _xRight: number
    _yBottom: number
    _yTop: number
    allowPrivateSkinAccess: boolean

    Whether projects should be able to access the contents of private skins such as webcams. If set to false, routines such as isTouchingColor will ignore private skins. Private skins will still be rendered on the canvas regardless of this setting.

    customFonts: Record<string, string>
    dirty: boolean
    exports: {
        BitmapSkin: new (id: number, renderer: RenderWebGL) => BitmapSkin;
        CanvasMeasurementProvider: new (
            ctx: CanvasRenderingContext2D,
        ) => CanvasMeasurementProvider;
        Drawable: new (id: number, renderer: RenderWebGL) => Drawable;
        EffectTransform: {
            transformColor(
                drawable: Drawable,
                inOutColor: Uint8ClampedArray,
                effectMask?: number,
            ): Uint8ClampedArray;
            transformPoint(drawable: Drawable, vec: V3, dst: V3): V3;
        };
        PenSkin: new (id: number, renderer: RenderWebGL) => PenSkin;
        Skin: new (id: number, renderer: RenderWebGL) => Skin;
        SVGSkin: new (id: number, renderer: RenderWebGL) => SVGSkin;
        TextBubbleSkin: new (id: number, renderer: RenderWebGL) => TextBubbleSkin;
        twgl: twgl;
    }
    maxTextureDimension: number

    Suggested maximum texture size in texels. This is not a hard limit.

    offscreenTouching: boolean
    overlayContainer: HTMLElement

    Element that contains all overlays.

    useHighQualityRender: boolean

    aka high quality pen.

    powerPreference: WebGLPowerPreference

    Accessors

    Methods

    • Parameters

      • drawableID: number
      • group: string

      Returns void

    • Parameters

      • drawableIds: number[]
      • drawMode: DrawMode
      • projection: M4
      • Optionalopts: {
            effectMask?: number;
            extraUniforms?: object;
            filter?: (drawableId: number) => boolean;
            framebufferHeight?: number;
            framebufferWidth?: number;
            ignoreVisibility?: boolean;
            skipPrivateSkins?: boolean;
        }

      Returns void

    • Parameters

      • drawableID: number

      Returns [number, number][]

    • Parameters

      • drawableId: number
      • candidateIds: number[]
      • bounds: RenderWebGL.Rectangle
      • color: [number, number, number]
      • Optionalmask: [number, number, number]

      Returns void

    • Parameters

      • updateType: "add" | "delete"
      • index: number

      Returns void

    • :3

      Parameters

      • drawableID: number

      Returns { height: number; imageData: ImageData; width: number; x: number; y: number }

    • Parameters

      • centerX: number

        X coordinate in client space

      • centerY: number

        Y coordinate in client space

      • Optionalwidth: number

        Defaults to 1

      • Optionalheight: number

        Defaults to 1

      Returns RenderWebGL.Rectangle

    • Parameters

      • svgData: string
      • OptionalrotationCenter: [number, number]

      Returns number

    • Parameters

      • drawableID: number
      • group: string

      Returns void

    • Determine if a drawable is touching a point.

      Parameters

      • drawableId: number

        ID of the target drawable

      • centerX: number

        X coordinate in client space

      • centerY: number

        Y coordinate in client space

      • Optionalwidth: number

        Defaults to 1

      • Optionalheight: number

        Defaults to 1

      Returns boolean

    • Enter a drawing region.

      Parameters

      • regionId: unknown

        Any arbitrary unique object.

      • Optionalenter: Function

        Called when entering the drawing region (which is what this function does). Defaults to regionId.enter.

      • Optionalexit: Function

        Called when leaving the drawing region. Defaults to regionId.exit.

      Returns void

    • Parameters

      • x: number

        X coordinate in client space

      • y: number

        Y coordinate in client space

      • radius: number

        "Radius" of the square, in pixels

      Returns {
          color: { a: number; b: number; g: number; r: number };
          data: Uint8Array;
          height: number;
          width: number;
      }

      Data about the pixels in a square around the coordinates. Color channels are RGBA from 0-255

    • Parameters

      • drawableId: number

      Returns { height: number; imageData: ImageData; width: number; x: number; y: number }

    • Parameters

      • drawableId: number

      Returns [number, number]

    • Parameters

      • drawableId: number
      • position: [number, number]

      Returns [number, number]

    • Determine if a drawable is touching a color or if a certain color of the drawable is touching a color.

      Parameters

      • drawableId: number
      • color: [number, number, number]

        RGB color from 0-255

      • Optionalmask: [number, number, number]

        RGB color from 0-255. Used by "is color touching color" block.

      Returns boolean

    • Determine if a drawable is intersecting a set of other drawables.

      Parameters

      • drawableId: number

        ID of the target drawable

      • OptionalcandidateIds: number[]

        The IDs of the drawables to test for collision with the target drawable. Defaults to all drawables.

      Returns boolean

    • Parameters

      • event: { newSize: [number, number] }

      Returns void

    • Parameters

      • penSkinId: number
      • penAttributes: PenAttributes
      • x1: number
      • y1: number
      • x2: number
      • y2: number

      Returns void

    • Parameters

      • penSkinId: number
      • stampDrawableId: number

      Returns void

    • Determine the top-most drawable at a point.

      Parameters

      • centerX: number

        X coordinate in client space

      • centerY: number

        Y coordinate in client space

      • Optionalwidth: number

        Defaults to 1

      • Optionalheight: number

        Defaults to 1

      • OptionalcandidateIds: number[]

        Defaults to all drawables

      Returns number

      The ID of the top-most drawable, or -1 if there is none. (TW: returns false instead of -1 in Scratch)

    • Parameters

      • callback: (dataURL: string) => void

      Returns void

    • Parameters

      Returns Uint8ClampedArray

    • Parameters

      • red: number

        Red from 0-1

      • green: number

        Green from 0-1

      • blue: number

        Blue from 0-1

      • Optionalalpha: number

        Alpha from 0-1, defaults to 1. (from TW)

      Returns void

    • Parameters

      • customFonts: Record<string, string>

      Returns void

    • Parameters

      • drawableID: number
      • order: number
      • group: string
      • OptionalisRelative: boolean
      • Optionalmin: number

      Returns void

    • Modify the suggested maximum texture dimension. This should be set before any skins are created.

      Parameters

      • newMax: number

        The new maximum in texels

      Returns void

    • Parameters

      • xLeft: number
      • xRight: number
      • yBottom: number
      • yTop: number

      Returns void

    • Parameters

      • drawableId: number
      • direction: number

      Returns void

    • Parameters

      • drawableId: number
      • direction: number
      • scale: [number, number]

      Returns void

    • Parameters

      • drawableId: number
      • position: [number, number]

      Returns void

    • Parameters

      • drawableId: number
      • properties:
            | Record<RenderWebGL.Effect, number>
            | {
                direction?: number;
                position?: [number, number];
                scale?: number;
                skinId?: number;
                visible?: number;
            }

      Returns void

      Use the individual updateDrawable* methods instead.

    • Parameters

      • drawableId: number
      • scale: [number, number]

      Returns void

    • Parameters

      • drawableId: number
      • skinId: number

      Returns void

    • Parameters

      • drawableId: number
      • visible: boolean

      Returns void

    • Parameters

      • skinId: number
      • svgData: string
      • OptionalrotationCenter: [number, number]

      Returns void

    • If WebGL 1 is supported, returns a WebGL 1 context. If WebGL 1 is not supported but WebGL 2 is supported, returns a WebGL 2 context. Otherwise, returns null.

      Parameters

      • canvas: HTMLCanvasElement

      Returns AnyWebGLContext | null

    • Parameters

      • Optionalcanvas: HTMLCanvasElement

      Returns boolean