UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

33 lines 1.43 kB
import { ObjectProcessingNode } from '../ObjectProcessingNode'; /** * Relative position processing node. * @category Processing node */ export class RelativePositionProcessing extends ObjectProcessingNode { constructor(relativePositionType, options) { super(options); this._relativePositionType = relativePositionType; } processObject(dataObject, dataFrame) { return new Promise((resolve, reject) => { const referencePromises = []; const index = new Map(); for (const relativePosition of dataObject.relativePositions) { // Only use relative positions that are instance of relativePositionType if (relativePosition instanceof this._relativePositionType) { index.set(relativePosition.referenceObjectUID, relativePosition); referencePromises.push(this.findObjectByUID(relativePosition.referenceObjectUID, dataFrame, relativePosition.referenceObjectType)); } } Promise.all(referencePromises).then(referenceObjects => { const relativePositions = new Map(); referenceObjects.filter(obj => obj !== undefined).forEach(referenceObject => { relativePositions.set(index.get(referenceObject.uid), referenceObject); }); return this.processRelativePositions(dataObject, relativePositions, dataFrame); }).then(modifiedObject => { resolve(modifiedObject); }).catch(reject); }); } }