/**
 * Base class for tracked 3D points.
 * Point coordinates can be applied in both local and world space.
 */
export class BimPointBase {
    _localX = 0;
    _localY = 0;
    _localZ = 0;
    _worldX;
    _worldY;
    _worldZ;
    _recalculateLocalCoords = false;
    _recalculateWorldCoords = false;
    /** X coordinate of point in world space. */
    get x() {
        return this.recalculateOrGetWorldCoords().x;
    }
    /** Set the X coordinate of point in world space. */
    set x(val) {
        this._worldX = val;
        this.recalculateOrGetLocalCoords(true);
    }
    /** Y coordinate of point in world space. */
    get y() {
        return this.recalculateOrGetWorldCoords().y;
    }
    /** Set the Y coordinate of point in world space. */
    set y(val) {
        this._worldY = val;
        this.recalculateOrGetLocalCoords(true);
    }
    /** Z coordinate of point in world space. */
    get z() {
        return this.recalculateOrGetWorldCoords().z;
    }
    /** Set the Z coordinate of point in world space. */
    set z(val) {
        this._worldZ = val;
        this.recalculateOrGetLocalCoords(true);
    }
    /** X coordinate of point in local space. */
    get localX() {
        return this.recalculateOrGetLocalCoords().x;
    }
    /** Y coordinate of point in local space. */
    get localY() {
        return this.recalculateOrGetLocalCoords().y;
    }
    /** Z coordinate of point in local space. */
    get localZ() {
        return this.recalculateOrGetLocalCoords().z;
    }
    /**
     * Set coordinates in local space.
     * @param x X coordinate in local space.
     * @param y Y coordinate in local space.
     * @param z Z coordinate in local space.
     */
    setLocals(x, y, z) {
        this._localX = x;
        this._localY = y;
        this._localZ = z;
        this.recalculateOrGetWorldCoords(true);
    }
    /**
     * @hidden
     */
    set recalculateWorldCoords(recalculate) {
        this._recalculateWorldCoords = recalculate;
    }
}
//# sourceMappingURL=BimPointBase.js.map