UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

53 lines (46 loc) 1.46 kB
import type {CoreMarkerTrackingController} from '../../../core/webXR/markerTracking/MarkerTrackingController'; import type {CoreMarkerTrackingControllerOptions} from '../../../core/webXR/markerTracking/Common'; export type MarkerTrackingControllerCreateFunc = ( options: CoreMarkerTrackingControllerOptions ) => CoreMarkerTrackingController; export type MarkerTrackingBarCodeUrlFunc = (type: string, value: number) => string; export interface MarkerTrackingConfig { barcodeUrl: MarkerTrackingBarCodeUrlFunc; createController: MarkerTrackingControllerCreateFunc; barCodes: { types: string[]; valuesCountByType: Record<string, number>; }; } export class PolyMarkerTrackingController { private _config: MarkerTrackingConfig | undefined; private _controller: CoreMarkerTrackingController | null = null; setConfig(config: MarkerTrackingConfig) { this._config = config; } barCodeUrl(type: string, value: number): string | void { if (this._config) { return this._config.barcodeUrl(type, value); } } barCodeTypes() { return this._config?.barCodes.types || ['']; } config() { return this._config; } hasController(): boolean { return this._config != null; } createController(options: CoreMarkerTrackingControllerOptions) { if (!this._config) { return; } const controller = this._config.createController(options); this._controller = controller; return controller; } controller() { return this._controller; } }