@tonybfox/threejs-tools 1.0.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/README.md +321 -0
- package/dist/asset-loader/index.cjs +376 -0
- package/dist/asset-loader/index.cjs.map +1 -0
- package/dist/asset-loader/index.d.mts +101 -0
- package/dist/asset-loader/index.d.ts +101 -0
- package/dist/asset-loader/index.mjs +7 -0
- package/dist/asset-loader/index.mjs.map +1 -0
- package/dist/camera/index.cjs +313 -0
- package/dist/camera/index.cjs.map +1 -0
- package/dist/camera/index.d.mts +82 -0
- package/dist/camera/index.d.ts +82 -0
- package/dist/camera/index.mjs +7 -0
- package/dist/camera/index.mjs.map +1 -0
- package/dist/chunk-5DP6WDB3.mjs +1161 -0
- package/dist/chunk-5DP6WDB3.mjs.map +1 -0
- package/dist/chunk-BJKSICFA.mjs +1579 -0
- package/dist/chunk-BJKSICFA.mjs.map +1 -0
- package/dist/chunk-BYRZCHE7.mjs +277 -0
- package/dist/chunk-BYRZCHE7.mjs.map +1 -0
- package/dist/chunk-EIROAPF7.mjs +387 -0
- package/dist/chunk-EIROAPF7.mjs.map +1 -0
- package/dist/chunk-EQDOX34V.mjs +164 -0
- package/dist/chunk-EQDOX34V.mjs.map +1 -0
- package/dist/chunk-IIAZ2WJJ.mjs +405 -0
- package/dist/chunk-IIAZ2WJJ.mjs.map +1 -0
- package/dist/chunk-L4VIIJZD.mjs +340 -0
- package/dist/chunk-L4VIIJZD.mjs.map +1 -0
- package/dist/chunk-P35QJCOG.mjs +339 -0
- package/dist/chunk-P35QJCOG.mjs.map +1 -0
- package/dist/chunk-R64RVBRM.mjs +394 -0
- package/dist/chunk-R64RVBRM.mjs.map +1 -0
- package/dist/compass/index.cjs +375 -0
- package/dist/compass/index.cjs.map +1 -0
- package/dist/compass/index.d.mts +58 -0
- package/dist/compass/index.d.ts +58 -0
- package/dist/compass/index.mjs +7 -0
- package/dist/compass/index.mjs.map +1 -0
- package/dist/grid/index.cjs +200 -0
- package/dist/grid/index.cjs.map +1 -0
- package/dist/grid/index.d.mts +43 -0
- package/dist/grid/index.d.ts +43 -0
- package/dist/grid/index.mjs +7 -0
- package/dist/grid/index.mjs.map +1 -0
- package/dist/index.cjs +5049 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.mjs +47 -0
- package/dist/index.mjs.map +1 -0
- package/dist/measurements/index.cjs +1198 -0
- package/dist/measurements/index.cjs.map +1 -0
- package/dist/measurements/index.d.mts +449 -0
- package/dist/measurements/index.d.ts +449 -0
- package/dist/measurements/index.mjs +9 -0
- package/dist/measurements/index.mjs.map +1 -0
- package/dist/sunlight/index.cjs +441 -0
- package/dist/sunlight/index.cjs.map +1 -0
- package/dist/sunlight/index.d.mts +92 -0
- package/dist/sunlight/index.d.ts +92 -0
- package/dist/sunlight/index.mjs +7 -0
- package/dist/sunlight/index.mjs.map +1 -0
- package/dist/terrain/index.cjs +423 -0
- package/dist/terrain/index.cjs.map +1 -0
- package/dist/terrain/index.d.mts +219 -0
- package/dist/terrain/index.d.ts +219 -0
- package/dist/terrain/index.mjs +7 -0
- package/dist/terrain/index.mjs.map +1 -0
- package/dist/transform-controls/index.cjs +1587 -0
- package/dist/transform-controls/index.cjs.map +1 -0
- package/dist/transform-controls/index.d.mts +162 -0
- package/dist/transform-controls/index.d.ts +162 -0
- package/dist/transform-controls/index.mjs +13 -0
- package/dist/transform-controls/index.mjs.map +1 -0
- package/dist/view-helper/index.cjs +430 -0
- package/dist/view-helper/index.cjs.map +1 -0
- package/dist/view-helper/index.d.mts +75 -0
- package/dist/view-helper/index.d.ts +75 -0
- package/dist/view-helper/index.mjs +7 -0
- package/dist/view-helper/index.mjs.map +1 -0
- package/package.json +124 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Geographic coordinates
|
|
5
|
+
*/
|
|
6
|
+
interface GeoCoordinates {
|
|
7
|
+
/** Latitude in degrees */
|
|
8
|
+
latitude: number;
|
|
9
|
+
/** Longitude in degrees */
|
|
10
|
+
longitude: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Terrain dimensions
|
|
14
|
+
*/
|
|
15
|
+
interface TerrainDimensions {
|
|
16
|
+
/** Width in meters */
|
|
17
|
+
width: number;
|
|
18
|
+
/** Depth in meters */
|
|
19
|
+
depth: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for fetching satellite imagery from Mapbox
|
|
23
|
+
*/
|
|
24
|
+
interface MapboxTextureOptions {
|
|
25
|
+
/** Required Mapbox access token */
|
|
26
|
+
accessToken: string;
|
|
27
|
+
/** Style identifier (default: mapbox/satellite-v9) */
|
|
28
|
+
styleId?: string;
|
|
29
|
+
/** Requested image width in pixels (clamped to Mapbox limits, default: 1024) */
|
|
30
|
+
imageWidth?: number;
|
|
31
|
+
/** Requested image height in pixels (clamped to Mapbox limits, default: 1024) */
|
|
32
|
+
imageHeight?: number;
|
|
33
|
+
/** Whether to request @2x high-DPI imagery (default: false) */
|
|
34
|
+
highResolution?: boolean;
|
|
35
|
+
/** Optional padding factor (0-1) to expand the requested bounds (default: 0.1) */
|
|
36
|
+
paddingRatio?: number;
|
|
37
|
+
/** Override imagery format (default: png). jpg is smaller but lossy. */
|
|
38
|
+
imageFormat?: 'png' | 'jpg';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration options for the terrain tool
|
|
42
|
+
*/
|
|
43
|
+
interface TerrainToolOptions {
|
|
44
|
+
/** Number of width segments for the terrain mesh (default: 50) */
|
|
45
|
+
widthSegments?: number;
|
|
46
|
+
/** Number of depth segments for the terrain mesh (default: 50) */
|
|
47
|
+
depthSegments?: number;
|
|
48
|
+
/** Vertical exaggeration factor for elevation (default: 1.0) */
|
|
49
|
+
elevationScale?: number;
|
|
50
|
+
/** Base material color (default: 0x8B7355) */
|
|
51
|
+
baseColor?: number;
|
|
52
|
+
/** Whether to enable wireframe mode (default: false) */
|
|
53
|
+
wireframe?: boolean;
|
|
54
|
+
/** Texture URL for imagery overlay (optional) */
|
|
55
|
+
textureUrl?: string;
|
|
56
|
+
/** Automatically fetch Mapbox satellite imagery for the current bounds */
|
|
57
|
+
mapbox?: MapboxTextureOptions;
|
|
58
|
+
/** Whether to receive shadows (default: true) */
|
|
59
|
+
receiveShadow?: boolean;
|
|
60
|
+
/** Whether to cast shadows (default: true) */
|
|
61
|
+
castShadow?: boolean;
|
|
62
|
+
/** Use demo/synthetic data instead of API (default: false) */
|
|
63
|
+
useDemoData?: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Elevation data point from API
|
|
67
|
+
*/
|
|
68
|
+
interface ElevationPoint {
|
|
69
|
+
/** Latitude */
|
|
70
|
+
latitude: number;
|
|
71
|
+
/** Longitude */
|
|
72
|
+
longitude: number;
|
|
73
|
+
/** Elevation in meters */
|
|
74
|
+
elevation: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Terrain data returned by the API
|
|
78
|
+
*/
|
|
79
|
+
interface TerrainData {
|
|
80
|
+
/** Center coordinates */
|
|
81
|
+
center: GeoCoordinates;
|
|
82
|
+
/** Dimensions */
|
|
83
|
+
dimensions: TerrainDimensions;
|
|
84
|
+
/** Grid of elevation points */
|
|
85
|
+
elevations: number[][];
|
|
86
|
+
/** Minimum elevation in the dataset */
|
|
87
|
+
minElevation: number;
|
|
88
|
+
/** Maximum elevation in the dataset */
|
|
89
|
+
maxElevation: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Event types dispatched by the terrain tool
|
|
93
|
+
*/
|
|
94
|
+
interface TerrainToolEvents {
|
|
95
|
+
/** Dispatched when terrain data has been fetched */
|
|
96
|
+
dataLoaded: {
|
|
97
|
+
data: TerrainData;
|
|
98
|
+
};
|
|
99
|
+
/** Dispatched when the terrain mesh has been created and added to the scene */
|
|
100
|
+
meshLoaded: {
|
|
101
|
+
mesh: THREE.Mesh;
|
|
102
|
+
};
|
|
103
|
+
/** Dispatched when terrain update starts */
|
|
104
|
+
updateStarted: {
|
|
105
|
+
center: GeoCoordinates;
|
|
106
|
+
dimensions: TerrainDimensions;
|
|
107
|
+
};
|
|
108
|
+
/** Dispatched when an error occurs */
|
|
109
|
+
error: {
|
|
110
|
+
message: string;
|
|
111
|
+
error: Error;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Terrain mesh creator for Three.js scenes
|
|
117
|
+
* Fetches elevation data from Open-Elevation API and creates 3D terrain meshes
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```javascript
|
|
121
|
+
* const terrainTool = new TerrainTool(scene, {
|
|
122
|
+
* widthSegments: 100,
|
|
123
|
+
* depthSegments: 100,
|
|
124
|
+
* elevationScale: 2.0,
|
|
125
|
+
* useDemoData: false // Set to true for demo/testing without API
|
|
126
|
+
* })
|
|
127
|
+
*
|
|
128
|
+
* // Listen for events
|
|
129
|
+
* terrainTool.addEventListener('dataLoaded', (e) => {
|
|
130
|
+
* console.log('Terrain data loaded:', e.data)
|
|
131
|
+
* })
|
|
132
|
+
*
|
|
133
|
+
* terrainTool.addEventListener('meshLoaded', (e) => {
|
|
134
|
+
* console.log('Terrain mesh created:', e.mesh)
|
|
135
|
+
* })
|
|
136
|
+
*
|
|
137
|
+
* // Load terrain for a location
|
|
138
|
+
* terrainTool.loadTerrain(
|
|
139
|
+
* { latitude: 36.1699, longitude: -115.1398 }, // Las Vegas
|
|
140
|
+
* { width: 5000, depth: 5000 } // 5km x 5km
|
|
141
|
+
* )
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
declare class TerrainTool extends THREE.EventDispatcher<TerrainToolEvents> {
|
|
145
|
+
private scene;
|
|
146
|
+
private mesh;
|
|
147
|
+
private currentData;
|
|
148
|
+
private isLoading;
|
|
149
|
+
private mapboxOptions?;
|
|
150
|
+
private generatedTextureUrls;
|
|
151
|
+
widthSegments: number;
|
|
152
|
+
depthSegments: number;
|
|
153
|
+
elevationScale: number;
|
|
154
|
+
baseColor: number;
|
|
155
|
+
wireframe: boolean;
|
|
156
|
+
textureUrl: string | undefined;
|
|
157
|
+
receiveShadow: boolean;
|
|
158
|
+
castShadow: boolean;
|
|
159
|
+
useDemoData: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Creates a new TerrainTool instance
|
|
162
|
+
* @param scene - The Three.js scene to add terrain to
|
|
163
|
+
* @param options - Configuration options
|
|
164
|
+
*/
|
|
165
|
+
constructor(scene: THREE.Scene, options?: TerrainToolOptions);
|
|
166
|
+
/**
|
|
167
|
+
* Update Mapbox imagery configuration at runtime
|
|
168
|
+
*/
|
|
169
|
+
setMapboxOptions(options?: MapboxTextureOptions): void;
|
|
170
|
+
/**
|
|
171
|
+
* Loads terrain data and creates a mesh
|
|
172
|
+
* @param center - Center coordinates (latitude, longitude)
|
|
173
|
+
* @param dimensions - Terrain dimensions in meters
|
|
174
|
+
*/
|
|
175
|
+
loadTerrain(center: GeoCoordinates, dimensions: TerrainDimensions): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* Updates the terrain with new coordinates and/or dimensions
|
|
178
|
+
* @param center - New center coordinates (optional, keeps current if not provided)
|
|
179
|
+
* @param dimensions - New dimensions (optional, keeps current if not provided)
|
|
180
|
+
*/
|
|
181
|
+
updateTerrain(center?: GeoCoordinates, dimensions?: TerrainDimensions): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Fetches elevation data from Open-Elevation API or generates demo data
|
|
184
|
+
* @private
|
|
185
|
+
*/
|
|
186
|
+
private fetchElevationData;
|
|
187
|
+
/**
|
|
188
|
+
* Generates demo terrain data using perlin-like noise
|
|
189
|
+
* @private
|
|
190
|
+
*/
|
|
191
|
+
private generateDemoData;
|
|
192
|
+
/**
|
|
193
|
+
* Creates a terrain mesh from elevation data
|
|
194
|
+
* @private
|
|
195
|
+
*/
|
|
196
|
+
private createMesh;
|
|
197
|
+
private resolveTexture;
|
|
198
|
+
private computeBoundingBox;
|
|
199
|
+
private fetchMapboxTexture;
|
|
200
|
+
private releaseGeneratedTexture;
|
|
201
|
+
/**
|
|
202
|
+
* Gets the current terrain mesh
|
|
203
|
+
*/
|
|
204
|
+
getMesh(): THREE.Mesh | null;
|
|
205
|
+
/**
|
|
206
|
+
* Gets the current terrain data
|
|
207
|
+
*/
|
|
208
|
+
getData(): TerrainData | null;
|
|
209
|
+
/**
|
|
210
|
+
* Checks if terrain is currently loading
|
|
211
|
+
*/
|
|
212
|
+
isTerrainLoading(): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Disposes of all resources
|
|
215
|
+
*/
|
|
216
|
+
dispose(): void;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export { type ElevationPoint, type GeoCoordinates, type TerrainData, type TerrainDimensions, TerrainTool, type TerrainToolEvents, type TerrainToolOptions };
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Geographic coordinates
|
|
5
|
+
*/
|
|
6
|
+
interface GeoCoordinates {
|
|
7
|
+
/** Latitude in degrees */
|
|
8
|
+
latitude: number;
|
|
9
|
+
/** Longitude in degrees */
|
|
10
|
+
longitude: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Terrain dimensions
|
|
14
|
+
*/
|
|
15
|
+
interface TerrainDimensions {
|
|
16
|
+
/** Width in meters */
|
|
17
|
+
width: number;
|
|
18
|
+
/** Depth in meters */
|
|
19
|
+
depth: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for fetching satellite imagery from Mapbox
|
|
23
|
+
*/
|
|
24
|
+
interface MapboxTextureOptions {
|
|
25
|
+
/** Required Mapbox access token */
|
|
26
|
+
accessToken: string;
|
|
27
|
+
/** Style identifier (default: mapbox/satellite-v9) */
|
|
28
|
+
styleId?: string;
|
|
29
|
+
/** Requested image width in pixels (clamped to Mapbox limits, default: 1024) */
|
|
30
|
+
imageWidth?: number;
|
|
31
|
+
/** Requested image height in pixels (clamped to Mapbox limits, default: 1024) */
|
|
32
|
+
imageHeight?: number;
|
|
33
|
+
/** Whether to request @2x high-DPI imagery (default: false) */
|
|
34
|
+
highResolution?: boolean;
|
|
35
|
+
/** Optional padding factor (0-1) to expand the requested bounds (default: 0.1) */
|
|
36
|
+
paddingRatio?: number;
|
|
37
|
+
/** Override imagery format (default: png). jpg is smaller but lossy. */
|
|
38
|
+
imageFormat?: 'png' | 'jpg';
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration options for the terrain tool
|
|
42
|
+
*/
|
|
43
|
+
interface TerrainToolOptions {
|
|
44
|
+
/** Number of width segments for the terrain mesh (default: 50) */
|
|
45
|
+
widthSegments?: number;
|
|
46
|
+
/** Number of depth segments for the terrain mesh (default: 50) */
|
|
47
|
+
depthSegments?: number;
|
|
48
|
+
/** Vertical exaggeration factor for elevation (default: 1.0) */
|
|
49
|
+
elevationScale?: number;
|
|
50
|
+
/** Base material color (default: 0x8B7355) */
|
|
51
|
+
baseColor?: number;
|
|
52
|
+
/** Whether to enable wireframe mode (default: false) */
|
|
53
|
+
wireframe?: boolean;
|
|
54
|
+
/** Texture URL for imagery overlay (optional) */
|
|
55
|
+
textureUrl?: string;
|
|
56
|
+
/** Automatically fetch Mapbox satellite imagery for the current bounds */
|
|
57
|
+
mapbox?: MapboxTextureOptions;
|
|
58
|
+
/** Whether to receive shadows (default: true) */
|
|
59
|
+
receiveShadow?: boolean;
|
|
60
|
+
/** Whether to cast shadows (default: true) */
|
|
61
|
+
castShadow?: boolean;
|
|
62
|
+
/** Use demo/synthetic data instead of API (default: false) */
|
|
63
|
+
useDemoData?: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Elevation data point from API
|
|
67
|
+
*/
|
|
68
|
+
interface ElevationPoint {
|
|
69
|
+
/** Latitude */
|
|
70
|
+
latitude: number;
|
|
71
|
+
/** Longitude */
|
|
72
|
+
longitude: number;
|
|
73
|
+
/** Elevation in meters */
|
|
74
|
+
elevation: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Terrain data returned by the API
|
|
78
|
+
*/
|
|
79
|
+
interface TerrainData {
|
|
80
|
+
/** Center coordinates */
|
|
81
|
+
center: GeoCoordinates;
|
|
82
|
+
/** Dimensions */
|
|
83
|
+
dimensions: TerrainDimensions;
|
|
84
|
+
/** Grid of elevation points */
|
|
85
|
+
elevations: number[][];
|
|
86
|
+
/** Minimum elevation in the dataset */
|
|
87
|
+
minElevation: number;
|
|
88
|
+
/** Maximum elevation in the dataset */
|
|
89
|
+
maxElevation: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Event types dispatched by the terrain tool
|
|
93
|
+
*/
|
|
94
|
+
interface TerrainToolEvents {
|
|
95
|
+
/** Dispatched when terrain data has been fetched */
|
|
96
|
+
dataLoaded: {
|
|
97
|
+
data: TerrainData;
|
|
98
|
+
};
|
|
99
|
+
/** Dispatched when the terrain mesh has been created and added to the scene */
|
|
100
|
+
meshLoaded: {
|
|
101
|
+
mesh: THREE.Mesh;
|
|
102
|
+
};
|
|
103
|
+
/** Dispatched when terrain update starts */
|
|
104
|
+
updateStarted: {
|
|
105
|
+
center: GeoCoordinates;
|
|
106
|
+
dimensions: TerrainDimensions;
|
|
107
|
+
};
|
|
108
|
+
/** Dispatched when an error occurs */
|
|
109
|
+
error: {
|
|
110
|
+
message: string;
|
|
111
|
+
error: Error;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Terrain mesh creator for Three.js scenes
|
|
117
|
+
* Fetches elevation data from Open-Elevation API and creates 3D terrain meshes
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```javascript
|
|
121
|
+
* const terrainTool = new TerrainTool(scene, {
|
|
122
|
+
* widthSegments: 100,
|
|
123
|
+
* depthSegments: 100,
|
|
124
|
+
* elevationScale: 2.0,
|
|
125
|
+
* useDemoData: false // Set to true for demo/testing without API
|
|
126
|
+
* })
|
|
127
|
+
*
|
|
128
|
+
* // Listen for events
|
|
129
|
+
* terrainTool.addEventListener('dataLoaded', (e) => {
|
|
130
|
+
* console.log('Terrain data loaded:', e.data)
|
|
131
|
+
* })
|
|
132
|
+
*
|
|
133
|
+
* terrainTool.addEventListener('meshLoaded', (e) => {
|
|
134
|
+
* console.log('Terrain mesh created:', e.mesh)
|
|
135
|
+
* })
|
|
136
|
+
*
|
|
137
|
+
* // Load terrain for a location
|
|
138
|
+
* terrainTool.loadTerrain(
|
|
139
|
+
* { latitude: 36.1699, longitude: -115.1398 }, // Las Vegas
|
|
140
|
+
* { width: 5000, depth: 5000 } // 5km x 5km
|
|
141
|
+
* )
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
declare class TerrainTool extends THREE.EventDispatcher<TerrainToolEvents> {
|
|
145
|
+
private scene;
|
|
146
|
+
private mesh;
|
|
147
|
+
private currentData;
|
|
148
|
+
private isLoading;
|
|
149
|
+
private mapboxOptions?;
|
|
150
|
+
private generatedTextureUrls;
|
|
151
|
+
widthSegments: number;
|
|
152
|
+
depthSegments: number;
|
|
153
|
+
elevationScale: number;
|
|
154
|
+
baseColor: number;
|
|
155
|
+
wireframe: boolean;
|
|
156
|
+
textureUrl: string | undefined;
|
|
157
|
+
receiveShadow: boolean;
|
|
158
|
+
castShadow: boolean;
|
|
159
|
+
useDemoData: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Creates a new TerrainTool instance
|
|
162
|
+
* @param scene - The Three.js scene to add terrain to
|
|
163
|
+
* @param options - Configuration options
|
|
164
|
+
*/
|
|
165
|
+
constructor(scene: THREE.Scene, options?: TerrainToolOptions);
|
|
166
|
+
/**
|
|
167
|
+
* Update Mapbox imagery configuration at runtime
|
|
168
|
+
*/
|
|
169
|
+
setMapboxOptions(options?: MapboxTextureOptions): void;
|
|
170
|
+
/**
|
|
171
|
+
* Loads terrain data and creates a mesh
|
|
172
|
+
* @param center - Center coordinates (latitude, longitude)
|
|
173
|
+
* @param dimensions - Terrain dimensions in meters
|
|
174
|
+
*/
|
|
175
|
+
loadTerrain(center: GeoCoordinates, dimensions: TerrainDimensions): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* Updates the terrain with new coordinates and/or dimensions
|
|
178
|
+
* @param center - New center coordinates (optional, keeps current if not provided)
|
|
179
|
+
* @param dimensions - New dimensions (optional, keeps current if not provided)
|
|
180
|
+
*/
|
|
181
|
+
updateTerrain(center?: GeoCoordinates, dimensions?: TerrainDimensions): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* Fetches elevation data from Open-Elevation API or generates demo data
|
|
184
|
+
* @private
|
|
185
|
+
*/
|
|
186
|
+
private fetchElevationData;
|
|
187
|
+
/**
|
|
188
|
+
* Generates demo terrain data using perlin-like noise
|
|
189
|
+
* @private
|
|
190
|
+
*/
|
|
191
|
+
private generateDemoData;
|
|
192
|
+
/**
|
|
193
|
+
* Creates a terrain mesh from elevation data
|
|
194
|
+
* @private
|
|
195
|
+
*/
|
|
196
|
+
private createMesh;
|
|
197
|
+
private resolveTexture;
|
|
198
|
+
private computeBoundingBox;
|
|
199
|
+
private fetchMapboxTexture;
|
|
200
|
+
private releaseGeneratedTexture;
|
|
201
|
+
/**
|
|
202
|
+
* Gets the current terrain mesh
|
|
203
|
+
*/
|
|
204
|
+
getMesh(): THREE.Mesh | null;
|
|
205
|
+
/**
|
|
206
|
+
* Gets the current terrain data
|
|
207
|
+
*/
|
|
208
|
+
getData(): TerrainData | null;
|
|
209
|
+
/**
|
|
210
|
+
* Checks if terrain is currently loading
|
|
211
|
+
*/
|
|
212
|
+
isTerrainLoading(): boolean;
|
|
213
|
+
/**
|
|
214
|
+
* Disposes of all resources
|
|
215
|
+
*/
|
|
216
|
+
dispose(): void;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
export { type ElevationPoint, type GeoCoordinates, type TerrainData, type TerrainDimensions, TerrainTool, type TerrainToolEvents, type TerrainToolOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|