astro-viewer 3.11.0 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astroviewer.cjs +561 -149
- package/dist/astroviewer.cjs.map +1 -1
- package/dist/astroviewer.js +561 -149
- package/dist/astroviewer.js.map +1 -1
- package/dist/astroviewer.min.js +1 -1
- package/dist/astroviewer.min.js.map +1 -1
- package/lib-esm/AstroSphere.d.ts +36 -2
- package/lib-esm/AstroSphere.d.ts.map +1 -1
- package/lib-esm/AstroSphere.js +234 -70
- package/lib-esm/AstroSphere.js.map +1 -1
- package/lib-esm/AstroViewer.d.ts +14 -1
- package/lib-esm/AstroViewer.d.ts.map +1 -1
- package/lib-esm/AstroViewer.js +38 -4
- package/lib-esm/AstroViewer.js.map +1 -1
- package/lib-esm/Camera.d.ts +8 -0
- package/lib-esm/Camera.d.ts.map +1 -1
- package/lib-esm/Camera.js +16 -0
- package/lib-esm/Camera.js.map +1 -1
- package/lib-esm/index.d.ts +1 -0
- package/lib-esm/index.d.ts.map +1 -1
- package/lib-esm/index.js +1 -0
- package/lib-esm/index.js.map +1 -1
- package/lib-esm/model/Source.js +1 -1
- package/lib-esm/model/Source.js.map +1 -1
- package/lib-esm/model/catalogues/CatalogueGL.d.ts +13 -4
- package/lib-esm/model/catalogues/CatalogueGL.d.ts.map +1 -1
- package/lib-esm/model/catalogues/CatalogueGL.js +109 -59
- package/lib-esm/model/catalogues/CatalogueGL.js.map +1 -1
- package/lib-esm/model/earth/XYZMap.d.ts +4 -1
- package/lib-esm/model/earth/XYZMap.d.ts.map +1 -1
- package/lib-esm/model/earth/XYZMap.js +35 -2
- package/lib-esm/model/earth/XYZMap.js.map +1 -1
- package/lib-esm/model/footprints/FootprintSetGL.d.ts +1 -0
- package/lib-esm/model/footprints/FootprintSetGL.d.ts.map +1 -1
- package/lib-esm/model/footprints/FootprintSetGL.js +13 -3
- package/lib-esm/model/footprints/FootprintSetGL.js.map +1 -1
- package/lib-esm/model/grid/EquatorialGrid.d.ts +1 -0
- package/lib-esm/model/grid/EquatorialGrid.d.ts.map +1 -1
- package/lib-esm/model/grid/EquatorialGrid.js +3 -0
- package/lib-esm/model/grid/EquatorialGrid.js.map +1 -1
- package/lib-esm/model/grid/HealpixGrid.d.ts +1 -0
- package/lib-esm/model/grid/HealpixGrid.d.ts.map +1 -1
- package/lib-esm/model/grid/HealpixGrid.js +3 -0
- package/lib-esm/model/grid/HealpixGrid.js.map +1 -1
- package/lib-esm/model/grid/LonLatGrid.d.ts +1 -0
- package/lib-esm/model/grid/LonLatGrid.d.ts.map +1 -1
- package/lib-esm/model/grid/LonLatGrid.js +3 -0
- package/lib-esm/model/grid/LonLatGrid.js.map +1 -1
- package/lib-esm/model/meships/MeshHiPS.d.ts +4 -0
- package/lib-esm/model/meships/MeshHiPS.d.ts.map +1 -1
- package/lib-esm/model/meships/MeshHiPS.js +11 -1
- package/lib-esm/model/meships/MeshHiPS.js.map +1 -1
- package/lib-esm/model/terra/TerraPointSetGL.d.ts +1 -0
- package/lib-esm/model/terra/TerraPointSetGL.d.ts.map +1 -1
- package/lib-esm/model/terra/TerraPointSetGL.js +39 -1
- package/lib-esm/model/terra/TerraPointSetGL.js.map +1 -1
- package/lib-esm/shader/CatalogueShaderProgram.d.ts +4 -0
- package/lib-esm/shader/CatalogueShaderProgram.d.ts.map +1 -1
- package/lib-esm/shader/CatalogueShaderProgram.js +6 -0
- package/lib-esm/shader/CatalogueShaderProgram.js.map +1 -1
- package/lib-esm/shader/ShaderManager.d.ts.map +1 -1
- package/lib-esm/shader/ShaderManager.js +7 -4
- package/lib-esm/shader/ShaderManager.js.map +1 -1
- package/lib-esm/shader/XYZShaderProgram.d.ts +3 -0
- package/lib-esm/shader/XYZShaderProgram.d.ts.map +1 -1
- package/lib-esm/shader/XYZShaderProgram.js +11 -3
- package/lib-esm/shader/XYZShaderProgram.js.map +1 -1
- package/lib-esm/utils/Utils.d.ts +12 -0
- package/lib-esm/utils/Utils.d.ts.map +1 -1
- package/lib-esm/utils/Utils.js +26 -0
- package/lib-esm/utils/Utils.js.map +1 -1
- package/package.json +2 -2
package/lib-esm/AstroSphere.d.ts
CHANGED
|
@@ -42,9 +42,17 @@ export type CameraChangedDetail = {
|
|
|
42
42
|
mouseHoverPoint: PointCoordinates | undefined;
|
|
43
43
|
getFoVPolygon: Point[];
|
|
44
44
|
};
|
|
45
|
+
export type ViewerDomain = "astronomy" | "earth" | "mesh";
|
|
45
46
|
export type AstroSphereOptions = {
|
|
46
47
|
gridLabelContainers?: GridLabelContainers;
|
|
47
48
|
};
|
|
49
|
+
export type EarthRasterOverlayInfo = {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
sourceType: "xyz" | "wmts";
|
|
53
|
+
visible: boolean;
|
|
54
|
+
opacity: number;
|
|
55
|
+
};
|
|
48
56
|
/**
|
|
49
57
|
* AstroSphere — main WebGL scene controller (TS port)
|
|
50
58
|
*/
|
|
@@ -71,12 +79,18 @@ declare class AstroSphere {
|
|
|
71
79
|
private _activeHiPS;
|
|
72
80
|
private _activeHiPSLayers;
|
|
73
81
|
private _activeXYZ2;
|
|
82
|
+
private _earthRasterOverlays;
|
|
83
|
+
private _earthRasterOverlaySequence;
|
|
74
84
|
private _activeMeshHiPS;
|
|
75
85
|
private _activeBaseLayer;
|
|
86
|
+
private _activeDomain;
|
|
87
|
+
private domainCameraStates;
|
|
76
88
|
private startup;
|
|
77
89
|
private fov;
|
|
78
|
-
private
|
|
79
|
-
private
|
|
90
|
+
private astronomyCatalogues;
|
|
91
|
+
private earthPointSets;
|
|
92
|
+
private astronomyFootprintSets;
|
|
93
|
+
private earthFootprintSets;
|
|
80
94
|
private activePolylineSets;
|
|
81
95
|
private activeSensorCones;
|
|
82
96
|
private activeSatelliteObjects;
|
|
@@ -129,11 +143,30 @@ declare class AstroSphere {
|
|
|
129
143
|
activateXYZ(config: XYZLayerConfig): void;
|
|
130
144
|
activateXYZ2(config: XYZMapDescriptor): void;
|
|
131
145
|
activateMeshHiPS(descriptor: MeshHiPSDescriptor): void;
|
|
146
|
+
setMeshHiPSColor(color: [number, number, number, number]): void;
|
|
147
|
+
setMeshHiPSWireframe(wireframe: boolean): void;
|
|
132
148
|
activateWMTS(config: WMTSLayerConfig): void;
|
|
149
|
+
addXYZRasterOverlay(config: XYZMapDescriptor): EarthRasterOverlayInfo;
|
|
150
|
+
addWMTSRasterOverlay(config: WMTSLayerConfig): EarthRasterOverlayInfo;
|
|
151
|
+
getEarthRasterOverlays(): EarthRasterOverlayInfo[];
|
|
152
|
+
setEarthRasterOverlayOpacity(id: string, opacity: number): void;
|
|
153
|
+
setEarthRasterOverlayVisible(id: string, visible: boolean): void;
|
|
154
|
+
removeEarthRasterOverlay(id: string): void;
|
|
155
|
+
removeAllEarthRasterOverlays(): void;
|
|
156
|
+
private addEarthRasterOverlay;
|
|
157
|
+
setActiveDomain(domain: ViewerDomain): void;
|
|
158
|
+
private clearGridLabelsForDomain;
|
|
159
|
+
get activeDomain(): ViewerDomain;
|
|
160
|
+
private getActivePointSets;
|
|
161
|
+
private getActiveFootprintSets;
|
|
133
162
|
showCatalogue(cat: CatalogueGL): Promise<CatalogueGL>;
|
|
134
163
|
deleteCatalogue(catalogue: CatalogueGL): void;
|
|
164
|
+
showTerraPointSet(pointSet: CatalogueGL): Promise<CatalogueGL>;
|
|
165
|
+
deleteTerraPointSet(pointSet: CatalogueGL): void;
|
|
135
166
|
showFootprintSet(fset: FootprintSetGL): Promise<FootprintSetGL>;
|
|
136
167
|
deleteFootprintSet(footprintSet: FootprintSetGL): void;
|
|
168
|
+
showTerraFootprintSet(footprintSet: FootprintSetGL): Promise<FootprintSetGL>;
|
|
169
|
+
deleteTerraFootprintSet(footprintSet: FootprintSetGL): void;
|
|
137
170
|
showPolylineSet(polylineSet: TerraPolylineSetGL): Promise<TerraPolylineSetGL>;
|
|
138
171
|
deletePolylineSet(polylineSet: TerraPolylineSetGL): void;
|
|
139
172
|
showSensorCone(sensorCone: SensorConeGL): Promise<SensorConeGL>;
|
|
@@ -178,6 +211,7 @@ declare class AstroSphere {
|
|
|
178
211
|
getHiPSDebugStats(): HiPSDebugStats | null;
|
|
179
212
|
getMeshHiPSDebugStats(): MeshHiPSDebugStats | null;
|
|
180
213
|
draw(canvas: HTMLCanvasElement): void;
|
|
214
|
+
private getActiveDomainModelMatrix;
|
|
181
215
|
private emitHoveredSourceIfChanged;
|
|
182
216
|
}
|
|
183
217
|
export default AstroSphere;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AstroSphere.d.ts","sourceRoot":"","sources":["../src/AstroSphere.ts"],"names":[],"mappings":"AAYA,OAAO,
|
|
1
|
+
{"version":3,"file":"AstroSphere.d.ts","sourceRoot":"","sources":["../src/AstroSphere.ts"],"names":[],"mappings":"AAYA,OAAO,MAAgC,MAAM,aAAa,CAAC;AAK3D,OAAO,EAKL,WAAW,EACX,GAAG,EACH,eAAe,EACf,GAAG,EACJ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAChE,OAAO,EACL,cAAc,EACd,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,OAAkB,EAAgB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,YAAY,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,KAAK,CAAC;IACpB,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,aAAa,EAAE,KAAK,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF;;GAEG;AACH,cAAM,WAAW;IACf,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAQ;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAO;IAE9C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,yBAAyB,CAA2B;IAE5D,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAAiB;IAExC,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,iBAAiB,CAAc;IAEvC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,2BAA2B,CAAK;IACxC,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAAsD;IAEhF,OAAO,CAAC,OAAO,CAAQ;IAEvB,OAAO,CAAC,GAAG,CAAY;IAEvB,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,sBAAsB,CAAwB;IACtD,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,sBAAsB,CAA2B;IACzD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,eAAe,CAAO;IAC9B,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;gBAGhD,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,sBAAsB,EAC7B,OAAO,GAAE,kBAAuB;IAiDlC,OAAO,CAAC,UAAU;IAQlB,SAAS,CAAC,MAAM,EAAE,MAAM;IAIxB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjD,4BAA4B,IAAI,MAAM;IAItC,IAAI,WAAW,gBAEd;IAED,IAAI,cAAc,mBAEjB;IAGD,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,mBAAmB;IAK3B,0BAA0B,IAAI,gBAAgB,GAAG,SAAS;IAI1D,4BAA4B,IAAI,gBAAgB,GAAG,SAAS;IAI5D,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,eAAe;IAiBvB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,kBAAkB,IAAI,MAAM;IAI5B,OAAO,CAAC,+BAA+B;IAwEvC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,yBAAyB;IA2BjC,OAAO,CAAC,gCAAgC;IAmCxC,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,iBAAiB;IA6VzB,cAAc,CAAC,MAAM,EAAE,iBAAiB;IAgBxC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQtC,wBAAwB,CACtB,aAAa,EAAE,qBAAqB,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI;IAQP,wBAAwB,IAAI,eAAe,GAAG,IAAI;IAIlD,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI;IAQxD,OAAO,CAAC,UAAU;IAYlB,YAAY,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAsBlD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAWjD,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAiC7C,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IA0B5B,aAAa,IAAI,IAAI;IAmBrB,WAAW,CAAC,MAAM,EAAE,cAAc;IAelC,YAAY,CAAC,MAAM,EAAE,gBAAgB;IAcrC,gBAAgB,CAAC,UAAU,EAAE,kBAAkB;IAc/C,gBAAgB,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAI/D,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAI9C,YAAY,CAAC,MAAM,EAAE,eAAe;IAyBpC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,sBAAsB;IAarE,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,sBAAsB;IAyBrE,sBAAsB,IAAI,sBAAsB,EAAE;IAIlD,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ/D,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAKhE,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI1C,4BAA4B,IAAI,IAAI;IAIpC,OAAO,CAAC,qBAAqB;IAoB7B,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IA+B3C,OAAO,CAAC,wBAAwB;IAYhC,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,sBAAsB;IAOxB,aAAa,CAAC,GAAG,EAAE,WAAW;IAOpC,eAAe,CAAC,SAAS,EAAE,WAAW;IAQhC,iBAAiB,CAAC,QAAQ,EAAE,WAAW;IAO7C,mBAAmB,CAAC,QAAQ,EAAE,WAAW;IAKnC,gBAAgB,CAAC,IAAI,EAAE,cAAc;IAO3C,kBAAkB,CAAC,YAAY,EAAE,cAAc;IAQzC,qBAAqB,CAAC,YAAY,EAAE,cAAc;IAOxD,uBAAuB,CAAC,YAAY,EAAE,cAAc;IAM9C,eAAe,CAAC,WAAW,EAAE,kBAAkB;IAKrD,iBAAiB,CAAC,WAAW,EAAE,kBAAkB;IAO3C,cAAc,CAAC,UAAU,EAAE,YAAY;IAK7C,gBAAgB,CAAC,UAAU,EAAE,YAAY;IAOnC,mBAAmB,CAAC,eAAe,EAAE,iBAAiB;IAK5D,qBAAqB,CAAC,eAAe,EAAE,iBAAiB;IAOxD,oBAAoB,IAAI,sBAAsB,EAAE;IAShD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIzC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAO,GAAG,IAAI;IAI7D,uBAAuB,IAAI,YAAY,GAAG,UAAU,GAAG,QAAQ;IAY/D,oBAAoB,IAAI,IAAI;IAkB5B,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO5C,mBAAmB,IAAI,OAAO;IAI9B,MAAM,IAAI,SAAS;IAQnB,aAAa,IAAI,KAAK,EAAE;IAaxB,SAAS,CAAC,GAAG,EAAE,MAAM;IAUrB,UAAU,CAAC,GAAG,EAAE,MAAM;IAOtB,UAAU,CAAC,GAAG,EAAE,MAAM;IAgBtB,eAAe,IAAI,OAAO;IAI1B,kBAAkB;IAgCX,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAY/C,eAAe,CAAC,UAAU,EAAE,YAAY;IAY/C,OAAO,CAAC,iBAAiB,CAAkB;IAEpC,oBAAoB,CACzB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,OAAO;IAiBd,gBAAgB,IAAI,mBAAmB,GAAG,IAAI;IAyCrD,cAAc,CAAC,EAAE,EAAE,QAAQ;IAO3B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD,IAAI,UAAU,IAAI,IAAI,GAAG,IAAI,CAE5B;IAED,IAAI,gBAAgB,IAAI,SAAS,IAAI,EAAE,CAEtC;IAED,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAS/B,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,cAAc,IAAI,QAAQ,GAAG,IAAI,CAEpC;IAED,mBAAmB,IAAI,OAAO;IAI9B,gBAAgB,IAAI,OAAO;IAI3B,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAQhD,wBAAwB,IAAI,OAAO;IAInC,2BAA2B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAQlD,0BAA0B,IAAI,OAAO;IAIrC,gBAAgB,IAAI,aAAa;IAQjC,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAK1C,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAKlD,IAAI,CAAC,MAAM,EAAE,iBAAiB;IAmV9B,OAAO,CAAC,0BAA0B;IAgBlC,OAAO,CAAC,0BAA0B;CA4BnC;AACD,eAAe,WAAW,CAAC"}
|
package/lib-esm/AstroSphere.js
CHANGED
|
@@ -54,12 +54,18 @@ class AstroSphere {
|
|
|
54
54
|
_activeHiPS = null;
|
|
55
55
|
_activeHiPSLayers = [];
|
|
56
56
|
_activeXYZ2 = null;
|
|
57
|
+
_earthRasterOverlays = [];
|
|
58
|
+
_earthRasterOverlaySequence = 0;
|
|
57
59
|
_activeMeshHiPS = null;
|
|
58
60
|
_activeBaseLayer = null;
|
|
61
|
+
_activeDomain = "astronomy";
|
|
62
|
+
domainCameraStates = {};
|
|
59
63
|
startup = true;
|
|
60
64
|
fov;
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
astronomyCatalogues = [];
|
|
66
|
+
earthPointSets = [];
|
|
67
|
+
astronomyFootprintSets = [];
|
|
68
|
+
earthFootprintSets = [];
|
|
63
69
|
activePolylineSets = [];
|
|
64
70
|
activeSensorCones = [];
|
|
65
71
|
activeSatelliteObjects = [];
|
|
@@ -292,9 +298,7 @@ class AstroSphere {
|
|
|
292
298
|
return true;
|
|
293
299
|
}
|
|
294
300
|
emitCameraChanged(reason) {
|
|
295
|
-
//
|
|
296
|
-
if (!this._activeHiPS && !this._activeXYZ2 && !this._activeMeshHiPS)
|
|
297
|
-
return;
|
|
301
|
+
// Camera interaction remains meaningful even when no base layer is active.
|
|
298
302
|
if (!this._healpixGrid?.fovObj)
|
|
299
303
|
return;
|
|
300
304
|
const detail = this.getCurrentStatus();
|
|
@@ -359,8 +363,11 @@ class AstroSphere {
|
|
|
359
363
|
if (mousePoint && mousePoint.length > 0) {
|
|
360
364
|
this.mouseHelper.update(mousePoint);
|
|
361
365
|
this.updateLastMousePoint();
|
|
362
|
-
for (const cat of this.
|
|
363
|
-
const
|
|
366
|
+
for (const cat of this.getActivePointSets()) {
|
|
367
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
368
|
+
if (!activeModelMatrix)
|
|
369
|
+
continue;
|
|
370
|
+
const clickResult = cat.selectPrimarySourceFromClick(this.mouseHelper, activeModelMatrix, this._camera.getCameraMatrix(), this._perspectiveMatrixManager.pMatrix);
|
|
364
371
|
if (!clickResult?.sources.length)
|
|
365
372
|
continue;
|
|
366
373
|
this._webgl.canvas.dispatchEvent(new CustomEvent("source-clicked", {
|
|
@@ -373,7 +380,7 @@ class AstroSphere {
|
|
|
373
380
|
composed: true,
|
|
374
381
|
}));
|
|
375
382
|
}
|
|
376
|
-
for (const fset of this.
|
|
383
|
+
for (const fset of this.getActiveFootprintSets()) {
|
|
377
384
|
const clickResult = fset.selectPrimaryFootprintFromClick(this.mouseHelper);
|
|
378
385
|
if (!clickResult?.footprints.length)
|
|
379
386
|
continue;
|
|
@@ -470,8 +477,11 @@ class AstroSphere {
|
|
|
470
477
|
}
|
|
471
478
|
this.mouseHelper.update(mousePoint);
|
|
472
479
|
this.updateLastMousePoint();
|
|
473
|
-
for (const cat of this.
|
|
474
|
-
const
|
|
480
|
+
for (const cat of this.getActivePointSets()) {
|
|
481
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
482
|
+
if (!activeModelMatrix)
|
|
483
|
+
continue;
|
|
484
|
+
const pickResult = cat.getSourcesFromPointer(this.mouseHelper, activeModelMatrix, this._camera.getCameraMatrix(), this._perspectiveMatrixManager.pMatrix);
|
|
475
485
|
if (!pickResult?.sources.length)
|
|
476
486
|
continue;
|
|
477
487
|
this._webgl.canvas.dispatchEvent(new CustomEvent("source-contextmenu", {
|
|
@@ -486,7 +496,7 @@ class AstroSphere {
|
|
|
486
496
|
}));
|
|
487
497
|
break;
|
|
488
498
|
}
|
|
489
|
-
for (const fset of this.
|
|
499
|
+
for (const fset of this.getActiveFootprintSets()) {
|
|
490
500
|
const pickResult = fset.getFootprintsFromPointer(this.mouseHelper);
|
|
491
501
|
if (!pickResult?.footprints.length)
|
|
492
502
|
continue;
|
|
@@ -576,19 +586,22 @@ class AstroSphere {
|
|
|
576
586
|
return new HiPS(1, [0.0, 0.0, 0.0], 0, 0, hipsDescriptor, this._webgl, this._healpixGrid);
|
|
577
587
|
}
|
|
578
588
|
activateHiPS(hipsDescriptor) {
|
|
589
|
+
if (this._activeHiPSLayers.length > 0) {
|
|
590
|
+
throw new Error("Cannot load a HiPS base layer while stacked layers are active.");
|
|
591
|
+
}
|
|
579
592
|
const tileBuffer = this._healpixGrid.visibleTilesManager.tileBuffer;
|
|
580
|
-
|
|
581
|
-
tileBuffer.removeHiPS(
|
|
593
|
+
if (this._activeHiPS) {
|
|
594
|
+
tileBuffer.removeHiPS(this._activeHiPS);
|
|
582
595
|
}
|
|
583
|
-
this._activeHiPSLayers = [];
|
|
584
596
|
const hips = this.createHiPS(hipsDescriptor);
|
|
585
|
-
this._activeHiPSLayers.push(hips);
|
|
586
597
|
this._activeHiPS = hips;
|
|
598
|
+
this._activeDomain = "astronomy";
|
|
587
599
|
this._activeBaseLayer = "hips";
|
|
588
600
|
return hips;
|
|
589
601
|
}
|
|
590
602
|
setHiPSOpacity(hips, opacity) {
|
|
591
|
-
|
|
603
|
+
const isBaseLayer = this._activeHiPSLayers.length === 0 && this._activeHiPS === hips;
|
|
604
|
+
if (!isBaseLayer && !this._activeHiPSLayers.includes(hips)) {
|
|
592
605
|
throw new Error("HiPS layer is not active in this AstroSphere.");
|
|
593
606
|
}
|
|
594
607
|
hips.setOpacity(opacity);
|
|
@@ -596,6 +609,13 @@ class AstroSphere {
|
|
|
596
609
|
addHiPS(hipsDescriptor) {
|
|
597
610
|
const normalizeURL = (url) => String(url).replace(/\/+$/, "");
|
|
598
611
|
const descriptorURL = normalizeURL(hipsDescriptor.url);
|
|
612
|
+
// Entering stack mode discards the standalone base HiPS. Base mode and
|
|
613
|
+
// stack mode are intentionally mutually exclusive.
|
|
614
|
+
if (this._activeHiPSLayers.length === 0 && this._activeHiPS) {
|
|
615
|
+
const tileBuffer = this._healpixGrid.visibleTilesManager.tileBuffer;
|
|
616
|
+
tileBuffer.removeHiPS(this._activeHiPS);
|
|
617
|
+
this._activeHiPS = null;
|
|
618
|
+
}
|
|
599
619
|
const existing = this._activeHiPSLayers.find((hips) => normalizeURL(hips.baseURL) === descriptorURL);
|
|
600
620
|
if (existing) {
|
|
601
621
|
throw new Error(`HiPS already active: ${String(hipsDescriptor.url)}`);
|
|
@@ -603,6 +623,7 @@ class AstroSphere {
|
|
|
603
623
|
const hips = this.createHiPS(hipsDescriptor);
|
|
604
624
|
this._activeHiPSLayers.push(hips);
|
|
605
625
|
this._activeHiPS = hips;
|
|
626
|
+
this._activeDomain = "astronomy";
|
|
606
627
|
this._activeBaseLayer = "hips";
|
|
607
628
|
return hips;
|
|
608
629
|
}
|
|
@@ -627,8 +648,13 @@ class AstroSphere {
|
|
|
627
648
|
}
|
|
628
649
|
removeAllHiPS() {
|
|
629
650
|
const tileBuffer = this._healpixGrid.visibleTilesManager.tileBuffer;
|
|
630
|
-
|
|
631
|
-
tileBuffer.removeHiPS(
|
|
651
|
+
if (this._activeHiPSLayers.length === 0 && this._activeHiPS) {
|
|
652
|
+
tileBuffer.removeHiPS(this._activeHiPS);
|
|
653
|
+
}
|
|
654
|
+
else {
|
|
655
|
+
for (const hips of this._activeHiPSLayers) {
|
|
656
|
+
tileBuffer.removeHiPS(hips);
|
|
657
|
+
}
|
|
632
658
|
}
|
|
633
659
|
this._activeHiPSLayers = [];
|
|
634
660
|
this._activeHiPS = null;
|
|
@@ -641,39 +667,169 @@ class AstroSphere {
|
|
|
641
667
|
this._activeBaseLayer = "xyz";
|
|
642
668
|
}
|
|
643
669
|
activateXYZ2(config) {
|
|
670
|
+
this._activeDomain = "earth";
|
|
644
671
|
this._activeXYZ2 = new XYZMap(1, [0.0, 0.0, 0.0], 0, 0, config, this._webgl, this.gridLabelContainers);
|
|
645
672
|
this._activeBaseLayer = "xyz";
|
|
646
673
|
}
|
|
647
674
|
activateMeshHiPS(descriptor) {
|
|
675
|
+
this._activeDomain = "mesh";
|
|
648
676
|
this._activeMeshHiPS = new MeshHiPS(descriptor.meshRadius, [0.0, 0.0, 0.0], 0, 0, descriptor, this._webgl, this._healpixGrid);
|
|
649
677
|
this._activeBaseLayer = "meships";
|
|
650
678
|
}
|
|
679
|
+
setMeshHiPSColor(color) {
|
|
680
|
+
this._activeMeshHiPS?.setColor(color);
|
|
681
|
+
}
|
|
682
|
+
setMeshHiPSWireframe(wireframe) {
|
|
683
|
+
this._activeMeshHiPS?.setWireframe(wireframe);
|
|
684
|
+
}
|
|
651
685
|
activateWMTS(config) {
|
|
686
|
+
this._activeDomain = "earth";
|
|
652
687
|
const adapter = new WMTSAdapter(config);
|
|
653
688
|
const xyzConfig = adapter.toXYZLayerConfig();
|
|
654
689
|
this._activeXYZ2 = new XYZMap(1, [0.0, 0.0, 0.0], 0, 0, new XYZMapDescriptor(config.layer ? `WMTS ${config.layer}` : "WMTS Earth2 Layer", xyzConfig.urlTemplate, xyzConfig.minZoom ?? 0, xyzConfig.maxZoom ?? 8, xyzConfig.segmentsPerSide ?? 48, xyzConfig.maxCachedTiles ?? 384, 8, xyzConfig.urlResolver), this._webgl, this.gridLabelContainers);
|
|
655
690
|
this._activeBaseLayer = "xyz";
|
|
656
691
|
}
|
|
657
|
-
|
|
692
|
+
addXYZRasterOverlay(config) {
|
|
693
|
+
const map = new XYZMap(1, [0.0, 0.0, 0.0], 0, 0, config, this._webgl, this.gridLabelContainers);
|
|
694
|
+
return this.addEarthRasterOverlay(config.name, "xyz", map);
|
|
695
|
+
}
|
|
696
|
+
addWMTSRasterOverlay(config) {
|
|
697
|
+
const adapter = new WMTSAdapter(config);
|
|
698
|
+
const xyzConfig = adapter.toXYZLayerConfig();
|
|
699
|
+
const name = config.layer ? `WMTS ${config.layer}` : "WMTS Earth Raster Overlay";
|
|
700
|
+
const map = new XYZMap(1, [0.0, 0.0, 0.0], 0, 0, new XYZMapDescriptor(name, xyzConfig.urlTemplate, xyzConfig.minZoom ?? 0, xyzConfig.maxZoom ?? 8, xyzConfig.segmentsPerSide ?? 48, xyzConfig.maxCachedTiles ?? 384, 8, xyzConfig.urlResolver), this._webgl, this.gridLabelContainers);
|
|
701
|
+
return this.addEarthRasterOverlay(name, "wmts", map);
|
|
702
|
+
}
|
|
703
|
+
getEarthRasterOverlays() {
|
|
704
|
+
return this._earthRasterOverlays.map(({ map: _map, ...overlay }) => ({ ...overlay }));
|
|
705
|
+
}
|
|
706
|
+
setEarthRasterOverlayOpacity(id, opacity) {
|
|
707
|
+
const overlay = this._earthRasterOverlays.find((entry) => entry.id === id);
|
|
708
|
+
if (!overlay)
|
|
709
|
+
return;
|
|
710
|
+
overlay.opacity = Math.min(1, Math.max(0, opacity));
|
|
711
|
+
overlay.map.setOpacity(overlay.opacity);
|
|
712
|
+
}
|
|
713
|
+
setEarthRasterOverlayVisible(id, visible) {
|
|
714
|
+
const overlay = this._earthRasterOverlays.find((entry) => entry.id === id);
|
|
715
|
+
if (overlay)
|
|
716
|
+
overlay.visible = visible;
|
|
717
|
+
}
|
|
718
|
+
removeEarthRasterOverlay(id) {
|
|
719
|
+
this._earthRasterOverlays = this._earthRasterOverlays.filter((entry) => entry.id !== id);
|
|
720
|
+
}
|
|
721
|
+
removeAllEarthRasterOverlays() {
|
|
722
|
+
this._earthRasterOverlays = [];
|
|
723
|
+
}
|
|
724
|
+
addEarthRasterOverlay(name, sourceType, map) {
|
|
725
|
+
const overlay = {
|
|
726
|
+
id: `earth-raster-${++this._earthRasterOverlaySequence}`,
|
|
727
|
+
name,
|
|
728
|
+
sourceType,
|
|
729
|
+
visible: true,
|
|
730
|
+
opacity: 0.65,
|
|
731
|
+
map,
|
|
732
|
+
};
|
|
733
|
+
map.setOpacity(overlay.opacity);
|
|
734
|
+
this._earthRasterOverlays.push(overlay);
|
|
735
|
+
const { map: _map, ...info } = overlay;
|
|
736
|
+
return { ...info };
|
|
737
|
+
}
|
|
738
|
+
setActiveDomain(domain) {
|
|
739
|
+
if (domain !== this._activeDomain) {
|
|
740
|
+
this.clearGridLabelsForDomain(this._activeDomain);
|
|
741
|
+
this.domainCameraStates[this._activeDomain] = this._camera.getViewState();
|
|
742
|
+
const targetCameraState = this.domainCameraStates[domain];
|
|
743
|
+
if (targetCameraState) {
|
|
744
|
+
this._camera.restoreViewState(targetCameraState);
|
|
745
|
+
}
|
|
746
|
+
this.inertiaX = 0;
|
|
747
|
+
this.inertiaY = 0;
|
|
748
|
+
this.zoomInertia = 0;
|
|
749
|
+
this._cameraStatusChanged = true;
|
|
750
|
+
}
|
|
751
|
+
this._activeDomain = domain;
|
|
752
|
+
if (domain === "astronomy") {
|
|
753
|
+
this._activeBaseLayer = this._activeHiPS ? "hips" : null;
|
|
754
|
+
}
|
|
755
|
+
else if (domain === "earth") {
|
|
756
|
+
this._activeBaseLayer = this._activeXYZ2 ? "xyz" : null;
|
|
757
|
+
}
|
|
758
|
+
else {
|
|
759
|
+
this._activeBaseLayer = this._activeMeshHiPS ? "meships" : null;
|
|
760
|
+
}
|
|
761
|
+
// A hover from the previous vertical must not leak into the new one.
|
|
762
|
+
this.lastHoveredSource = null;
|
|
763
|
+
this.lastHoveredCatalogue = null;
|
|
764
|
+
}
|
|
765
|
+
clearGridLabelsForDomain(domain) {
|
|
766
|
+
if (domain === "astronomy") {
|
|
767
|
+
this._healpixGrid?.clearLabels();
|
|
768
|
+
this._equatorialGrid?.clearLabels();
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
771
|
+
if (domain === "earth") {
|
|
772
|
+
this._activeXYZ2?.clearLonLatGridLabels?.();
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
get activeDomain() {
|
|
776
|
+
return this._activeDomain;
|
|
777
|
+
}
|
|
778
|
+
getActivePointSets() {
|
|
779
|
+
if (this._activeDomain === "astronomy")
|
|
780
|
+
return this.astronomyCatalogues;
|
|
781
|
+
if (this._activeDomain === "earth")
|
|
782
|
+
return this.earthPointSets;
|
|
783
|
+
return [];
|
|
784
|
+
}
|
|
785
|
+
getActiveFootprintSets() {
|
|
786
|
+
if (this._activeDomain === "astronomy")
|
|
787
|
+
return this.astronomyFootprintSets;
|
|
788
|
+
if (this._activeDomain === "earth")
|
|
789
|
+
return this.earthFootprintSets;
|
|
790
|
+
return [];
|
|
791
|
+
}
|
|
792
|
+
// Astronomy catalogue ownership
|
|
658
793
|
async showCatalogue(cat) {
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
794
|
+
if (cat && !this.astronomyCatalogues.includes(cat)) {
|
|
795
|
+
this.astronomyCatalogues.push(cat);
|
|
796
|
+
}
|
|
662
797
|
return cat;
|
|
663
798
|
}
|
|
664
799
|
deleteCatalogue(catalogue) {
|
|
665
|
-
this.
|
|
800
|
+
this.astronomyCatalogues = this.astronomyCatalogues.filter((c) => c !== catalogue);
|
|
666
801
|
}
|
|
667
|
-
//
|
|
668
|
-
//
|
|
802
|
+
// Earth point-set ownership. TerraPointSetGL still extends CatalogueGL in
|
|
803
|
+
// 3.12, but it no longer shares the Astronomy lifecycle collection.
|
|
804
|
+
async showTerraPointSet(pointSet) {
|
|
805
|
+
if (pointSet && !this.earthPointSets.includes(pointSet)) {
|
|
806
|
+
this.earthPointSets.push(pointSet);
|
|
807
|
+
}
|
|
808
|
+
return pointSet;
|
|
809
|
+
}
|
|
810
|
+
deleteTerraPointSet(pointSet) {
|
|
811
|
+
this.earthPointSets = this.earthPointSets.filter((set) => set !== pointSet);
|
|
812
|
+
}
|
|
813
|
+
// Astronomy footprint ownership
|
|
669
814
|
async showFootprintSet(fset) {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
815
|
+
if (fset && !this.astronomyFootprintSets.includes(fset)) {
|
|
816
|
+
this.astronomyFootprintSets.push(fset);
|
|
817
|
+
}
|
|
673
818
|
return fset;
|
|
674
819
|
}
|
|
675
820
|
deleteFootprintSet(footprintSet) {
|
|
676
|
-
this.
|
|
821
|
+
this.astronomyFootprintSets = this.astronomyFootprintSets.filter((fst) => fst !== footprintSet);
|
|
822
|
+
}
|
|
823
|
+
// Earth footprint ownership. TerraFootprintSetGL still reuses the common
|
|
824
|
+
// FootprintSetGL rendering implementation, but has an independent lifecycle.
|
|
825
|
+
async showTerraFootprintSet(footprintSet) {
|
|
826
|
+
if (footprintSet && !this.earthFootprintSets.includes(footprintSet)) {
|
|
827
|
+
this.earthFootprintSets.push(footprintSet);
|
|
828
|
+
}
|
|
829
|
+
return footprintSet;
|
|
830
|
+
}
|
|
831
|
+
deleteTerraFootprintSet(footprintSet) {
|
|
832
|
+
this.earthFootprintSets = this.earthFootprintSets.filter((fst) => fst !== footprintSet);
|
|
677
833
|
}
|
|
678
834
|
async showPolylineSet(polylineSet) {
|
|
679
835
|
if (polylineSet)
|
|
@@ -703,8 +859,8 @@ class AstroSphere {
|
|
|
703
859
|
satelliteObject.dispose();
|
|
704
860
|
}
|
|
705
861
|
getHoveredFootprints() {
|
|
706
|
-
|
|
707
|
-
this.
|
|
862
|
+
const footprintsHovered = [];
|
|
863
|
+
this.getActiveFootprintSets().forEach((fset) => {
|
|
708
864
|
footprintsHovered.push(fset.hoveredFootprints);
|
|
709
865
|
});
|
|
710
866
|
return footprintsHovered;
|
|
@@ -936,8 +1092,6 @@ class AstroSphere {
|
|
|
936
1092
|
return;
|
|
937
1093
|
if (!this._webgl)
|
|
938
1094
|
return;
|
|
939
|
-
if (!this._activeHiPS && !this._activeXYZ2 && !this._activeMeshHiPS)
|
|
940
|
-
return;
|
|
941
1095
|
if (!this._healpixGrid || Object.keys(this._healpixGrid).length === 0)
|
|
942
1096
|
return;
|
|
943
1097
|
if (this._healpixGrid.fovObj === undefined)
|
|
@@ -1049,8 +1203,10 @@ class AstroSphere {
|
|
|
1049
1203
|
this._webgl.enable(this._webgl.CULL_FACE);
|
|
1050
1204
|
this._webgl.cullFace(global.insideSphere ? this._webgl.FRONT : this._webgl.BACK);
|
|
1051
1205
|
this._webgl.blendFunc(this._webgl.SRC_ALPHA, this._webgl.ONE_MINUS_SRC_ALPHA);
|
|
1052
|
-
if (this._activeBaseLayer === "hips" && this.
|
|
1053
|
-
const maxHiPSOrder =
|
|
1206
|
+
if (this._activeBaseLayer === "hips" && this._activeHiPS) {
|
|
1207
|
+
const maxHiPSOrder = this._activeHiPSLayers.length > 0
|
|
1208
|
+
? Math.max(...this._activeHiPSLayers.map((hips) => hips.maxOrder))
|
|
1209
|
+
: this._activeHiPS.maxOrder;
|
|
1054
1210
|
const visibleOrder = Math.min(this._healpixGrid.visibleorder, maxHiPSOrder);
|
|
1055
1211
|
this._healpixGrid.visibleTilesManager.computeVisiblePixels(visibleOrder, this._webgl, this._camera, this._perspectiveMatrixManager.pMatrix);
|
|
1056
1212
|
}
|
|
@@ -1085,12 +1241,19 @@ class AstroSphere {
|
|
|
1085
1241
|
}
|
|
1086
1242
|
if (this._activeBaseLayer === "xyz") {
|
|
1087
1243
|
this._activeXYZ2?.draw(skyEntityDrawInput);
|
|
1244
|
+
for (const overlay of this._earthRasterOverlays) {
|
|
1245
|
+
if (overlay.visible) {
|
|
1246
|
+
overlay.map.draw(skyEntityDrawInput, true);
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1088
1249
|
}
|
|
1089
1250
|
if (this._activeBaseLayer === "meships") {
|
|
1090
1251
|
this._activeMeshHiPS?.draw(skyEntityDrawInput);
|
|
1091
1252
|
}
|
|
1092
|
-
this.
|
|
1093
|
-
|
|
1253
|
+
if (this._activeDomain === "astronomy") {
|
|
1254
|
+
this._healpixGrid.draw(skyEntityDrawInput);
|
|
1255
|
+
this._equatorialGrid.draw(skyEntityDrawInput);
|
|
1256
|
+
}
|
|
1094
1257
|
this._webgl.enable(this._webgl.DEPTH_TEST);
|
|
1095
1258
|
this._webgl.disable(this._webgl.CULL_FACE);
|
|
1096
1259
|
if (this.startup) {
|
|
@@ -1109,52 +1272,53 @@ class AstroSphere {
|
|
|
1109
1272
|
decDMS,
|
|
1110
1273
|
});
|
|
1111
1274
|
}
|
|
1112
|
-
this.
|
|
1113
|
-
const activeModelMatrix = this.
|
|
1114
|
-
this._activeXYZ2?.getModelMatrix() ??
|
|
1115
|
-
this._activeMeshHiPS?.getModelMatrix();
|
|
1275
|
+
this.getActivePointSets().forEach((cat) => {
|
|
1276
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
1116
1277
|
if (activeModelMatrix) {
|
|
1117
1278
|
cat.draw(activeModelMatrix, this.mouseHelper, this._camera.getCameraMatrix(), this._perspectiveMatrixManager.pMatrix);
|
|
1118
1279
|
}
|
|
1119
1280
|
});
|
|
1120
1281
|
this.emitHoveredSourceIfChanged();
|
|
1121
|
-
this.
|
|
1122
|
-
const activeModelMatrix = this.
|
|
1123
|
-
this._activeXYZ2?.getModelMatrix() ??
|
|
1124
|
-
this._activeMeshHiPS?.getModelMatrix();
|
|
1282
|
+
this.getActiveFootprintSets().forEach((fst) => {
|
|
1283
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
1125
1284
|
if (activeModelMatrix) {
|
|
1126
1285
|
fst.draw(activeModelMatrix, this.mouseHelper, this._camera.getCameraMatrix(), this._perspectiveMatrixManager.pMatrix);
|
|
1127
1286
|
}
|
|
1128
1287
|
});
|
|
1129
|
-
this.
|
|
1130
|
-
|
|
1131
|
-
this.
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1288
|
+
if (this._activeDomain === "earth") {
|
|
1289
|
+
this.activePolylineSets.forEach((polylineSet) => {
|
|
1290
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
1291
|
+
if (activeModelMatrix) {
|
|
1292
|
+
polylineSet.draw(activeModelMatrix, this.mouseHelper, this._camera.getCameraMatrix(), this._perspectiveMatrixManager.pMatrix);
|
|
1293
|
+
}
|
|
1294
|
+
});
|
|
1295
|
+
this.activeSensorCones.forEach((sensorCone) => {
|
|
1296
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
1297
|
+
if (activeModelMatrix) {
|
|
1298
|
+
sensorCone.draw(this._perspectiveMatrixManager.pMatrix, this._camera.getCameraMatrix(), activeModelMatrix);
|
|
1299
|
+
}
|
|
1300
|
+
});
|
|
1301
|
+
this.activeSatelliteObjects.forEach((satelliteObject) => {
|
|
1302
|
+
const activeModelMatrix = this.getActiveDomainModelMatrix();
|
|
1303
|
+
if (activeModelMatrix) {
|
|
1304
|
+
satelliteObject.draw(this._perspectiveMatrixManager.pMatrix, this._camera.getCameraMatrix(), activeModelMatrix);
|
|
1305
|
+
}
|
|
1306
|
+
});
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
getActiveDomainModelMatrix() {
|
|
1310
|
+
if (this._activeDomain === "astronomy") {
|
|
1311
|
+
return (this._activeHiPS?.getModelMatrix() ?? this._healpixGrid.getModelMatrix());
|
|
1312
|
+
}
|
|
1313
|
+
if (this._activeDomain === "earth") {
|
|
1314
|
+
return (this._activeXYZ2?.getModelMatrix() ?? this._healpixGrid.getModelMatrix());
|
|
1315
|
+
}
|
|
1316
|
+
return (this._activeMeshHiPS?.getModelMatrix() ?? this._healpixGrid.getModelMatrix());
|
|
1153
1317
|
}
|
|
1154
1318
|
emitHoveredSourceIfChanged() {
|
|
1155
1319
|
let nextHoveredSource = null;
|
|
1156
1320
|
let nextHoveredCatalogue = null;
|
|
1157
|
-
for (const cat of this.
|
|
1321
|
+
for (const cat of this.getActivePointSets()) {
|
|
1158
1322
|
const hovered = cat.getPrimaryHoveredSource();
|
|
1159
1323
|
if (!hovered)
|
|
1160
1324
|
continue;
|