Skip to content

Idetik

The top-level entry point for an Idetik visualization.

An Idetik instance owns the renderer, the shared chunk manager, and one or more viewports. Each viewport pairs a camera, its controls, and a stack of layers and draws into a region of the canvas. Call Idetik.start to begin the render loop and Idetik.stop to halt it.

Constructor

Creates a new Idetik visualization runtime instance.

ts
new Idetik(params): Idetik;
ParameterTypeDescription
params{ canvas: HTMLCanvasElement; viewports?: ViewportProps[]; overlays?: Overlay[]; showStats?: boolean; memoryLimitMB?: number; maxConcurrentRequests?: number; maxGpuUploadsPerUpdate?: number; }Configuration parameters for the Idetik instance
params.canvasHTMLCanvasElementHTMLCanvasElement to render to
params.viewports?ViewportProps[]Optional array of viewport configurations. Each viewport renders with its own camera, layers, and controls. The element property is optional and defaults to the canvas if not provided. Elements must be unique across viewports. The id property is optional but useful for referencing specific viewports later.
params.overlays?Overlay[]Optional array of overlay objects that update each frame (e.g., for HUD elements)
params.showStats?booleanOptional flag to display performance statistics
params.memoryLimitMB?number-
params.maxConcurrentRequests?number-
params.maxGpuUploadsPerUpdate?number-

Examples

ts
// Single viewport (element defaults to canvas)
const camera = new OrthographicCamera({ left: 0, right: 1024, top: 0, bottom: 1024 });
const idetik = new Idetik({
  canvas: document.querySelector('canvas')!,
  viewports: [{
    camera: camera,
    layers: [imageLayer],
    cameraControls: new PanZoomControls(camera)
  }]
});
ts
// Multiple viewports - one defaults to canvas, others use separate elements
const idetik = new Idetik({
  canvas: document.querySelector('canvas')!,
  viewports: [
    {
      id: 'main',
      // element omitted - defaults to canvas
      camera: camera1,
      layers: [layer1]
    },
    {
      id: 'minimap',
      element: document.querySelector('#minimap')!,
      camera: camera2,
      layers: [layer2]
    }
  ]
});

Properties

canvas

ts
readonly canvas: HTMLCanvasElement;

overlays

ts
readonly overlays: Overlay[];

Accessors

chunkQueueStats QueueStats

ts
get chunkQueueStats(): QueueStats;

memoryStats MemoryStats

ts
get memoryStats(): MemoryStats;

renderedObjects number

ts
get renderedObjects(): number;

width number

ts
get width(): number;

height number

ts
get height(): number;

viewports readonly Viewport[]

ts
get viewports(): readonly Viewport[];

running boolean

ts
get running(): boolean;

Methods

getViewport() Viewport | undefined

ts
getViewport(id): Viewport | undefined;
ParameterType
idstring

addViewport() Viewport

ts
addViewport(props): Viewport;
ParameterType
propsViewportProps

removeViewport() boolean

ts
removeViewport(viewport): boolean;
ParameterType
viewportViewport

addOverlay() void

ts
addOverlay(overlay): void;
ParameterType
overlayOverlay

removeOverlay() boolean

ts
removeOverlay(overlay): boolean;
ParameterType
overlayOverlay

setMemoryLimitMB() void

ts
setMemoryLimitMB(memoryLimitMB): void;
ParameterType
memoryLimitMBnumber

start() Idetik

ts
start(): Idetik;

stop() void

ts
stop(): void;

Released under the MIT License