@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
53 lines (46 loc) • 1.46 kB
text/typescript
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;
}
}