UNPKG

@openhps/core

Version:

Open Hybrid Positioning System - Core component

68 lines 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReferenceSpaceConversionNode = void 0; const ObjectProcessingNode_1 = require("../ObjectProcessingNode"); const data_1 = require("../../data"); /** * This node converts the positions of data objects inside the frame * to another reference space. * @category Processing node */ class ReferenceSpaceConversionNode extends ObjectProcessingNode_1.ObjectProcessingNode { constructor(referenceSpace, options) { super(options); if (referenceSpace instanceof data_1.ReferenceSpace) { this._referenceSpace = referenceSpace; this._referenceSpaceUID = referenceSpace.uid; } else { this._referenceSpaceUID = referenceSpace; } this.once('build', this._onRegisterService.bind(this)); } _onRegisterService() { return new Promise((resolve) => { const service = this.graph.findDataService(data_1.ReferenceSpace); // Update reference space when modified service.on('insert', (uid, space) => { if (uid === this._referenceSpaceUID) { this._referenceSpace = space; } }); // Update to the latest version service .findByUID(this._referenceSpaceUID) .then((space) => { this._referenceSpace = space; resolve(); }) .catch(() => { // Ignore, most likely not calibrated or stored yet resolve(); }); }); } processObject(object, frame) { return new Promise((resolve) => { // First check if a reference space is provided inside // the data frame. If not, use the stored reference space let referenceSpace = frame.getObjectByUID(this._referenceSpaceUID); if (referenceSpace === null || referenceSpace === undefined) { referenceSpace = this._referenceSpace; } if (object.getPosition() && object.uid !== referenceSpace.uid) { if (this.options.inverse) { // Convert from reference space to global object.setPosition(object.getPosition(), referenceSpace); } else { // Convert global space to reference space object.setPosition(object.getPosition(referenceSpace)); } } resolve(object); }); } } exports.ReferenceSpaceConversionNode = ReferenceSpaceConversionNode; //# sourceMappingURL=ReferenceSpaceConversionNode.js.map