Spaces:
Configuration error
Configuration error
| import { SampledPositionProperty, binarySearch, JulianDate } from "@cesium/engine"; | |
| // Augment Cesium's SampledPositionProperty with custom raw value accessors. | |
| declare module "@cesium/engine" { | |
| // eslint-disable-next-line @typescript-eslint/no-unused-vars | |
| interface SampledPositionProperty { | |
| getRawValues(start: JulianDate, end: JulianDate): unknown[]; | |
| getRawSamples(): { times: JulianDate[]; values: unknown[] }; | |
| length(): number; | |
| } | |
| } | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| (SampledPositionProperty.prototype as any).getRawValues = function (this: any, start: JulianDate, end: JulianDate): unknown[] { | |
| const times = this._property._times; | |
| if (times.length === 0) { | |
| return []; | |
| } | |
| const innerType = this._property._innerType; | |
| const values = this._property._values; | |
| let startIndex = binarySearch(times, start, JulianDate.compare); | |
| let endIndex = binarySearch(times, end, JulianDate.compare); | |
| if (startIndex < 0) { | |
| startIndex = ~startIndex; | |
| } | |
| if (endIndex < 0) { | |
| endIndex = ~endIndex; | |
| } | |
| const result: unknown[] = []; | |
| for (let i = startIndex; i < endIndex; i += 1) { | |
| result.push(innerType.unpack(values, i * innerType.packedLength)); | |
| } | |
| return result; | |
| }; | |
| /** | |
| * Every stored sample, times alongside values. | |
| * | |
| * The whole window rather than a range, and both halves together, because the | |
| * one caller derives a second reference frame from what is already stored (see | |
| * SampledTrajectory's inertial backfill) and needs each value's own time to pick | |
| * the right transform for it. | |
| */ | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| (SampledPositionProperty.prototype as any).getRawSamples = function (this: any): { times: JulianDate[]; values: unknown[] } { | |
| const times: JulianDate[] = this._property._times; | |
| const innerType = this._property._innerType; | |
| const packed = this._property._values; | |
| const values: unknown[] = []; | |
| for (let i = 0; i < times.length; i += 1) { | |
| values.push(innerType.unpack(packed, i * innerType.packedLength)); | |
| } | |
| return { times: [...times], values }; | |
| }; | |
| // eslint-disable-next-line @typescript-eslint/no-explicit-any | |
| (SampledPositionProperty.prototype as any).length = function (this: any): number { | |
| return this._property._times.length; | |
| }; | |