@openhps/core
Version:
Open Hybrid Positioning System - Core component
30 lines • 1.15 kB
JavaScript
import { LengthUnit } from '../../utils';
import { ObjectProcessingNode } from '../ObjectProcessingNode';
/**
* Accuracy modifier node. Apply an offset of magnitude to the position accuracy.
* @category Processing node
*/
export class AccuracyModifierNode extends ObjectProcessingNode {
constructor(options) {
super(options);
this.options.offsetUnit = this.options.offsetUnit || LengthUnit.METER;
this.options.offset = this.options.offset || 0;
this.options.magnitude = this.options.magnitude || 1;
}
processObject(object) {
return new Promise(resolve => {
if (object.position) {
if (this.options.value) {
object.position.accuracy.value = LengthUnit.METER.convert(this.options.value, object.position.unit);
} else {
const accuracy = object.position.accuracy.value || this.options.defaultValue;
if (accuracy) {
const offset = this.options.offsetUnit.convert(this.options.offset, object.position.unit);
object.position.accuracy.value = accuracy * this.options.magnitude + offset;
}
}
}
resolve(object);
});
}
}