@openhps/core
Version:
Open Hybrid Positioning System - Core component
43 lines • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RelativePositionProcessing = void 0;
const ObjectProcessingNode_1 = require("../ObjectProcessingNode");
/**
* Relative position processing node.
* @category Processing node
*/
class RelativePositionProcessing extends ObjectProcessingNode_1.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);
});
}
}
exports.RelativePositionProcessing = RelativePositionProcessing;
//# sourceMappingURL=RelativePositionProcessing.js.map