@metagl/sdk-render 1.0.8 → 1.0.10
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 +13 -0
- package/README_EN.md +13 -0
- package/Textures/bluenoise.png +0 -0
- package/Textures/waterNormals.jpg +0 -0
- package/amd/lacdt.render.amd.js +53 -51
- package/assets/images/rain.png +0 -0
- package/assets/images/waterNormals.jpg +0 -0
- package/cjs/lacdt.render.cjs.js +53 -51
- package/cjs/lacdt.render.d.ts +589 -316
- package/data/water.geojson +7 -0
- package/esm/lacdt.render.d.ts +589 -316
- package/esm/lacdt.render.js +53 -51
- package/lacdt.render.d.ts +589 -316
- package/lacdt.render.js +53 -51
- package/package.json +1 -1
package/lacdt.render.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Cesium from 'cesium';
|
|
2
|
-
import { Cartesian3, Color, Viewer, PostProcessStage, Cartesian4, Rectangle, Cesium3DTileset, ClippingPolygonCollection } from 'cesium';
|
|
2
|
+
import { Cartesian3, Color, Viewer, PostProcessStage, Cartesian4, Rectangle, Primitive, Cesium3DTileset, ClippingPolygonCollection } from 'cesium';
|
|
3
3
|
import { Render as Render$1 } from '@/system/RenderCore';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -104,6 +104,15 @@ declare class LightingSystem implements RenderSystem {
|
|
|
104
104
|
destroy(): void;
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
/**
|
|
108
|
+
* 检测 Viewer 运行环境
|
|
109
|
+
*
|
|
110
|
+
* 判断依据:DC V5.0.0 移除了原生 cesiumWidget,改为自身的 widgetContainer。
|
|
111
|
+
* 保留 cesiumWidget → 'cesium'(原生或其他兼容封装)
|
|
112
|
+
* 缺少 cesiumWidget → 'dc'(DC.Viewer 或同类框架)
|
|
113
|
+
*/
|
|
114
|
+
type ViewerEnv = 'cesium' | 'dc';
|
|
115
|
+
|
|
107
116
|
/**
|
|
108
117
|
* 阴影系统配置
|
|
109
118
|
*/
|
|
@@ -128,6 +137,9 @@ declare class ShadowSystem implements RenderSystem {
|
|
|
128
137
|
private config;
|
|
129
138
|
private isEnabled;
|
|
130
139
|
private originalSettings?;
|
|
140
|
+
private viewerEnv;
|
|
141
|
+
private shadowFrameListener?;
|
|
142
|
+
private originalGlobeShadows?;
|
|
131
143
|
/**
|
|
132
144
|
* 默认配置 - 从 EnvironmentDefaults 统一管理
|
|
133
145
|
*/
|
|
@@ -137,7 +149,7 @@ declare class ShadowSystem implements RenderSystem {
|
|
|
137
149
|
* @param viewer - Cesium Viewer 实例
|
|
138
150
|
* @param config - 阴影系统配置
|
|
139
151
|
*/
|
|
140
|
-
constructor(viewer: Viewer, config?: ShadowConfig);
|
|
152
|
+
constructor(viewer: Viewer, config?: ShadowConfig, viewerEnv?: ViewerEnv);
|
|
141
153
|
/**
|
|
142
154
|
* 初始化
|
|
143
155
|
*/
|
|
@@ -150,6 +162,26 @@ declare class ShadowSystem implements RenderSystem {
|
|
|
150
162
|
* 启用阴影系统
|
|
151
163
|
*/
|
|
152
164
|
enable(): void;
|
|
165
|
+
/**
|
|
166
|
+
* DC 环境专用启用逻辑
|
|
167
|
+
*
|
|
168
|
+
* 问题根因:DC 初始化时 globe.shadows = RECEIVE_ONLY(地形接收阴影)。
|
|
169
|
+
* DC 环境下阴影相机视锥投影计算异常,深度比较全部失效,
|
|
170
|
+
* 导致视锥覆盖的整片地形全部变黑(图二中的巨型黑色矩形)。
|
|
171
|
+
*
|
|
172
|
+
* 修复:禁用地形阴影接收(globe.shadows = DISABLED),地形不参与阴影系统。
|
|
173
|
+
* 3D tileset 阴影独立配置(tileset.shadows),不受影响。
|
|
174
|
+
*/
|
|
175
|
+
private enableDCMode;
|
|
176
|
+
/**
|
|
177
|
+
* DC 环境专用:保持 needsUpdate,确保 tileset 阴影每帧正常更新
|
|
178
|
+
* 不覆盖 _outOfView:Cesium 的高度/太阳角物理判断必须保留
|
|
179
|
+
*/
|
|
180
|
+
private registerDCWorkaround;
|
|
181
|
+
/**
|
|
182
|
+
* 移除 DC 监听器(disable / destroy 时调用)
|
|
183
|
+
*/
|
|
184
|
+
private removeDCWorkaround;
|
|
153
185
|
/**
|
|
154
186
|
* 禁用阴影系统
|
|
155
187
|
*/
|
|
@@ -201,6 +233,8 @@ interface VolumetricCloudsConfig {
|
|
|
201
233
|
cloudThickness?: number;
|
|
202
234
|
cloudLightIntensity?: number;
|
|
203
235
|
cloudIntensity?: number;
|
|
236
|
+
cloudOpacityMin?: number;
|
|
237
|
+
cloudOpacityMax?: number;
|
|
204
238
|
visibility?: CloudVisibilityConfig;
|
|
205
239
|
}
|
|
206
240
|
/**
|
|
@@ -342,9 +376,9 @@ declare class AtmosphereScatteringSystem implements RenderSystem {
|
|
|
342
376
|
private getRealPlanetRadius;
|
|
343
377
|
/**
|
|
344
378
|
* 根据相机高度动态调节 skyAtmosphere.brightnessShift
|
|
345
|
-
* 低空(<
|
|
346
|
-
*
|
|
347
|
-
* 高空(>
|
|
379
|
+
* 低空(< 100km,卡门线以下):-1.0(完全暗淡),自定义大气主导,城市/宏观城市无光晕圈
|
|
380
|
+
* 100km → 500km :线性从 -1.0 → 0.0 平滑过渡(进入轨道空间)
|
|
381
|
+
* 高空(> 500km) :0.0(正常亮度),Cesium 内置光晕完全接管
|
|
348
382
|
*/
|
|
349
383
|
private updateSkyAtmosphereIntensity;
|
|
350
384
|
/**
|
|
@@ -700,6 +734,8 @@ declare class PostProcessingSystem implements RenderSystem {
|
|
|
700
734
|
disable(): void;
|
|
701
735
|
update(config: Partial<PostProcessingConfig>): void;
|
|
702
736
|
getStatus(): boolean;
|
|
737
|
+
/** 返回当前已加入队列的自定义 Stage 列表(供 RenderCore 做顺序修正)*/
|
|
738
|
+
getCustomStages(): PostProcessStage[];
|
|
703
739
|
getConfig(): PostProcessingConfig;
|
|
704
740
|
saveConfig(): any;
|
|
705
741
|
destroy(): void;
|
|
@@ -951,148 +987,256 @@ declare class CameraListenerSystem {
|
|
|
951
987
|
}
|
|
952
988
|
|
|
953
989
|
/**
|
|
954
|
-
*
|
|
990
|
+
* 水体配置接口
|
|
955
991
|
*/
|
|
956
992
|
interface WaterConfig {
|
|
957
|
-
/**
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
993
|
+
/** 水体基础颜色 RGBA */
|
|
994
|
+
baseWaterColor?: {
|
|
995
|
+
r: number;
|
|
996
|
+
g: number;
|
|
997
|
+
b: number;
|
|
998
|
+
a: number;
|
|
999
|
+
};
|
|
1000
|
+
/** 波纹频率 */
|
|
1001
|
+
frequency?: number;
|
|
1002
|
+
/** 动画速度 */
|
|
1003
|
+
animationSpeed?: number;
|
|
1004
|
+
/** 振幅 */
|
|
1005
|
+
amplitude?: number;
|
|
1006
|
+
/** 高光强度 */
|
|
1007
|
+
specularIntensity?: number;
|
|
1008
|
+
/** 法线贴图路径 */
|
|
1009
|
+
normalMap?: string;
|
|
1010
|
+
}
|
|
1011
|
+
/**
|
|
1012
|
+
* 水体加载进度
|
|
1013
|
+
*/
|
|
1014
|
+
interface WaterLoadProgress {
|
|
1015
|
+
/** 总实体数 */
|
|
1016
|
+
total: number;
|
|
1017
|
+
/** 已加载数 */
|
|
1018
|
+
loaded: number;
|
|
1019
|
+
/** 百分比 */
|
|
1020
|
+
percentage: number;
|
|
1021
|
+
}
|
|
1022
|
+
/**
|
|
1023
|
+
* 水体加载选项
|
|
1024
|
+
*/
|
|
1025
|
+
interface WaterLoadOptions {
|
|
1026
|
+
/** 每批处理数量,默认 10 */
|
|
1027
|
+
batchSize?: number;
|
|
1028
|
+
/** 进度回调 */
|
|
1029
|
+
onProgress?: (progress: WaterLoadProgress) => void;
|
|
1030
|
+
/** 取消信号 */
|
|
1031
|
+
signal?: AbortSignal;
|
|
1032
|
+
}
|
|
1033
|
+
/**
|
|
1034
|
+
* 水体加载状态
|
|
1035
|
+
*/
|
|
1036
|
+
interface WaterLoadState {
|
|
1037
|
+
/** 是否正在加载 */
|
|
1038
|
+
isLoading: boolean;
|
|
1039
|
+
/** 当前加载的图层ID */
|
|
1040
|
+
currentLayer?: string;
|
|
1041
|
+
/** 加载进度 */
|
|
1042
|
+
progress?: WaterLoadProgress;
|
|
1043
|
+
}
|
|
1044
|
+
/**
|
|
1045
|
+
* 水体图层项
|
|
1046
|
+
*/
|
|
1047
|
+
interface WaterLayerItem {
|
|
1048
|
+
id: string;
|
|
1049
|
+
name: string;
|
|
1050
|
+
url?: string;
|
|
1051
|
+
source?: 'url' | 'file';
|
|
1052
|
+
primitive: any;
|
|
1053
|
+
visible: boolean;
|
|
979
1054
|
}
|
|
980
1055
|
/**
|
|
981
1056
|
* 水体系统类
|
|
982
|
-
*
|
|
1057
|
+
* 负责管理场景中的水体效果,支持 GeoJSON 数据加载
|
|
1058
|
+
*/
|
|
1059
|
+
/**
|
|
1060
|
+
* 水体事件类型
|
|
1061
|
+
*/
|
|
1062
|
+
type WaterEventType = 'waterLayer:add' | 'waterLayer:remove' | 'waterLayer:visible';
|
|
1063
|
+
/**
|
|
1064
|
+
* 水体系统类
|
|
1065
|
+
* 负责管理场景中的水体效果,支持 GeoJSON 数据加载
|
|
983
1066
|
*/
|
|
984
1067
|
declare class WaterSystem implements RenderSystem {
|
|
985
1068
|
private viewer;
|
|
986
1069
|
private config;
|
|
987
|
-
private
|
|
988
|
-
private
|
|
989
|
-
private
|
|
990
|
-
|
|
991
|
-
private
|
|
992
|
-
|
|
993
|
-
private
|
|
994
|
-
|
|
1070
|
+
private waterLayers;
|
|
1071
|
+
private enabled;
|
|
1072
|
+
private eventListeners;
|
|
1073
|
+
/** 共享材质实例 */
|
|
1074
|
+
private _sharedWaterMaterial;
|
|
1075
|
+
/** 地形高度是否已初始化 */
|
|
1076
|
+
private _terrainHeightsReady;
|
|
1077
|
+
/** 地形高度初始化 Promise */
|
|
1078
|
+
private _terrainHeightsPromise;
|
|
1079
|
+
/** 加载状态 */
|
|
1080
|
+
private _loadState;
|
|
1081
|
+
/** 取消控制器 */
|
|
1082
|
+
private _abortController;
|
|
995
1083
|
constructor(viewer: Viewer, config?: WaterConfig);
|
|
996
1084
|
/**
|
|
997
|
-
*
|
|
1085
|
+
* 初始化事件系统
|
|
1086
|
+
*/
|
|
1087
|
+
private initializeEvents;
|
|
1088
|
+
/**
|
|
1089
|
+
* 添加事件监听
|
|
1090
|
+
*/
|
|
1091
|
+
on(event: WaterEventType, callback: (layer?: WaterLayerItem, data?: any) => void): void;
|
|
1092
|
+
/**
|
|
1093
|
+
* 移除事件监听
|
|
1094
|
+
*/
|
|
1095
|
+
off(event: WaterEventType, callback: Function): void;
|
|
1096
|
+
/**
|
|
1097
|
+
* 触发事件
|
|
1098
|
+
*/
|
|
1099
|
+
private emitEvent;
|
|
1100
|
+
/**
|
|
1101
|
+
* 初始化系统
|
|
998
1102
|
*/
|
|
999
1103
|
initialize(): void;
|
|
1000
1104
|
/**
|
|
1001
|
-
*
|
|
1105
|
+
* 启用系统(不自动创建水面,水面通过 loadWaterFromUrl/loadWaterFromFile 添加)
|
|
1106
|
+
* 水图层始终使用贴地模式
|
|
1107
|
+
*
|
|
1108
|
+
* 优化:地形高度初始化改为后台异步执行,enable() 立即返回
|
|
1002
1109
|
*/
|
|
1003
|
-
|
|
1110
|
+
enable(): Promise<void>;
|
|
1004
1111
|
/**
|
|
1005
|
-
*
|
|
1112
|
+
* 异步初始化地形高度数据
|
|
1113
|
+
* 在后台执行,不阻塞主线程
|
|
1006
1114
|
*/
|
|
1007
|
-
private
|
|
1115
|
+
private initializeTerrainHeightsAsync;
|
|
1008
1116
|
/**
|
|
1009
|
-
*
|
|
1117
|
+
* 等待地形初始化完成
|
|
1118
|
+
* 在加载水图层前调用,确保地形数据已准备好
|
|
1010
1119
|
*/
|
|
1011
|
-
|
|
1120
|
+
waitForTerrainReady(): Promise<void>;
|
|
1012
1121
|
/**
|
|
1013
|
-
*
|
|
1122
|
+
* 检查地形是否已初始化
|
|
1014
1123
|
*/
|
|
1015
|
-
|
|
1124
|
+
isTerrainReady(): boolean;
|
|
1016
1125
|
/**
|
|
1017
|
-
*
|
|
1126
|
+
* 禁用系统
|
|
1018
1127
|
*/
|
|
1019
|
-
|
|
1128
|
+
disable(): void;
|
|
1020
1129
|
/**
|
|
1021
|
-
*
|
|
1130
|
+
* 更新配置(更新所有已加载水图层的外观参数)
|
|
1022
1131
|
*/
|
|
1023
|
-
|
|
1132
|
+
update(config: Partial<WaterConfig>): void;
|
|
1024
1133
|
/**
|
|
1025
|
-
*
|
|
1134
|
+
* 实时更新水图层效果(无需重新加载)
|
|
1135
|
+
* 直接修改已存在水图元的材质参数
|
|
1026
1136
|
*/
|
|
1027
|
-
|
|
1137
|
+
updateWaterLayerEffect(config: Partial<WaterConfig>): void;
|
|
1028
1138
|
/**
|
|
1029
|
-
*
|
|
1139
|
+
* 更新单个图元的材质参数
|
|
1030
1140
|
*/
|
|
1031
|
-
private
|
|
1141
|
+
private updateSinglePrimitiveMaterial;
|
|
1032
1142
|
/**
|
|
1033
|
-
*
|
|
1143
|
+
* 获取系统状态
|
|
1034
1144
|
*/
|
|
1035
|
-
|
|
1145
|
+
getStatus(): boolean;
|
|
1036
1146
|
/**
|
|
1037
|
-
*
|
|
1147
|
+
* 获取当前配置
|
|
1038
1148
|
*/
|
|
1039
|
-
|
|
1149
|
+
getConfig(): WaterConfig;
|
|
1040
1150
|
/**
|
|
1041
|
-
*
|
|
1151
|
+
* 从 URL 加载水体数据(优化版本,支持进度回调)
|
|
1152
|
+
* @param url GeoJSON 数据地址
|
|
1153
|
+
* @param name 水图层名称
|
|
1154
|
+
* @param options 加载选项(包含进度回调)
|
|
1155
|
+
* @returns 水图层ID
|
|
1042
1156
|
*/
|
|
1043
|
-
|
|
1157
|
+
loadWaterFromUrl(url: string, name?: string, options?: WaterLoadOptions): Promise<string>;
|
|
1044
1158
|
/**
|
|
1045
|
-
*
|
|
1159
|
+
* 从文件加载水体数据(优化版本,支持进度回调)
|
|
1160
|
+
* @param file GeoJSON 文件
|
|
1161
|
+
* @param name 水图层名称
|
|
1162
|
+
* @param options 加载选项(包含进度回调)
|
|
1163
|
+
* @returns 水图层ID
|
|
1046
1164
|
*/
|
|
1047
|
-
|
|
1165
|
+
loadWaterFromFile(file: File, name?: string, options?: WaterLoadOptions): Promise<string>;
|
|
1048
1166
|
/**
|
|
1049
|
-
*
|
|
1167
|
+
* 异步分批创建水体图元
|
|
1168
|
+
* 使用 requestIdleCallback 分批处理,避免阻塞主线程
|
|
1050
1169
|
*/
|
|
1051
|
-
private
|
|
1170
|
+
private createWaterPrimitivesAsync;
|
|
1052
1171
|
/**
|
|
1053
|
-
*
|
|
1172
|
+
* 从 GeoJSON 数据源创建水体图元(同步版本,保留向后兼容)
|
|
1173
|
+
* @deprecated 建议使用 createWaterPrimitivesAsync 异步版本
|
|
1054
1174
|
*/
|
|
1055
|
-
|
|
1056
|
-
private stopAllAnimations;
|
|
1057
|
-
private removeAllWaterPrimitives;
|
|
1058
|
-
private isWaterPrimitive;
|
|
1059
|
-
private clearAllReferences;
|
|
1060
|
-
private triggerGarbageCollection;
|
|
1061
|
-
private verifyShutdown;
|
|
1175
|
+
private createWaterPrimitivesFromDataSource;
|
|
1062
1176
|
/**
|
|
1063
|
-
*
|
|
1177
|
+
* 获取或创建共享材质实例
|
|
1064
1178
|
*/
|
|
1065
|
-
|
|
1179
|
+
private getOrCreateSharedMaterial;
|
|
1066
1180
|
/**
|
|
1067
|
-
*
|
|
1181
|
+
* 使用共享材质创建水体图元
|
|
1068
1182
|
*/
|
|
1069
|
-
private
|
|
1183
|
+
private createWaterPrimitiveWithSharedMaterial;
|
|
1070
1184
|
/**
|
|
1071
|
-
*
|
|
1185
|
+
* 创建水体图元(保留向后兼容)
|
|
1186
|
+
* @deprecated 建议使用 createWaterPrimitiveWithSharedMaterial
|
|
1072
1187
|
*/
|
|
1073
|
-
|
|
1188
|
+
private createWaterPrimitive;
|
|
1074
1189
|
/**
|
|
1075
|
-
*
|
|
1190
|
+
* 创建图元集合
|
|
1076
1191
|
*/
|
|
1077
|
-
|
|
1192
|
+
private createPrimitiveCollection;
|
|
1078
1193
|
/**
|
|
1079
|
-
*
|
|
1194
|
+
* 让出主线程的工具方法
|
|
1195
|
+
* 使用 requestIdleCallback 或 setTimeout 作为 fallback
|
|
1080
1196
|
*/
|
|
1081
|
-
|
|
1197
|
+
private yieldToMain;
|
|
1082
1198
|
/**
|
|
1083
|
-
*
|
|
1199
|
+
* 获取加载状态
|
|
1084
1200
|
*/
|
|
1085
|
-
|
|
1201
|
+
getLoadState(): WaterLoadState;
|
|
1202
|
+
/**
|
|
1203
|
+
* 取消当前加载
|
|
1204
|
+
*/
|
|
1205
|
+
cancelLoad(): void;
|
|
1206
|
+
/**
|
|
1207
|
+
* 创建取消控制器
|
|
1208
|
+
*/
|
|
1209
|
+
createAbortController(): AbortController;
|
|
1086
1210
|
/**
|
|
1087
|
-
*
|
|
1211
|
+
* 更新加载状态
|
|
1088
1212
|
*/
|
|
1089
|
-
private
|
|
1213
|
+
private updateLoadState;
|
|
1090
1214
|
/**
|
|
1091
|
-
*
|
|
1215
|
+
* 移除指定水图层
|
|
1092
1216
|
*/
|
|
1093
|
-
|
|
1217
|
+
removeWaterLayer(layerId: string): boolean;
|
|
1094
1218
|
/**
|
|
1095
|
-
*
|
|
1219
|
+
* 清除所有用户添加的水图层
|
|
1220
|
+
*/
|
|
1221
|
+
clearAllWaterLayers(): void;
|
|
1222
|
+
/**
|
|
1223
|
+
* 获取所有水图层
|
|
1224
|
+
*/
|
|
1225
|
+
getWaterLayers(): WaterLayerItem[];
|
|
1226
|
+
/**
|
|
1227
|
+
* 获取指定水图层
|
|
1228
|
+
*/
|
|
1229
|
+
getWaterLayer(layerId: string): WaterLayerItem | undefined;
|
|
1230
|
+
/**
|
|
1231
|
+
* 设置水图层可见性
|
|
1232
|
+
*/
|
|
1233
|
+
setWaterLayerVisible(layerId: string, visible: boolean): boolean;
|
|
1234
|
+
/**
|
|
1235
|
+
* 生成唯一ID
|
|
1236
|
+
*/
|
|
1237
|
+
private generateId;
|
|
1238
|
+
/**
|
|
1239
|
+
* 销毁系统
|
|
1096
1240
|
*/
|
|
1097
1241
|
destroy(): void;
|
|
1098
1242
|
}
|
|
@@ -1147,6 +1291,8 @@ declare class LayerSystem implements RenderSystem {
|
|
|
1147
1291
|
private layers;
|
|
1148
1292
|
private entities;
|
|
1149
1293
|
private eventListeners;
|
|
1294
|
+
private savedTerrainProvider;
|
|
1295
|
+
private defaultTerrainProvider;
|
|
1150
1296
|
constructor(render: Render);
|
|
1151
1297
|
initialize(): void;
|
|
1152
1298
|
enable(): void;
|
|
@@ -1157,6 +1303,7 @@ declare class LayerSystem implements RenderSystem {
|
|
|
1157
1303
|
saveConfig?(): void;
|
|
1158
1304
|
/**
|
|
1159
1305
|
* 加载地球已有的图层
|
|
1306
|
+
* 预设四个固定图层:影像地图、影像注记、矢量地图、高程
|
|
1160
1307
|
*/
|
|
1161
1308
|
loadExistingLayers(): void;
|
|
1162
1309
|
/**
|
|
@@ -1167,6 +1314,11 @@ declare class LayerSystem implements RenderSystem {
|
|
|
1167
1314
|
* 递归加载子实体
|
|
1168
1315
|
*/
|
|
1169
1316
|
private loadChildEntities;
|
|
1317
|
+
/**
|
|
1318
|
+
* 异步加载高程图层
|
|
1319
|
+
* @param layer 高程图层配置
|
|
1320
|
+
*/
|
|
1321
|
+
private loadTerrainLayer;
|
|
1170
1322
|
/**
|
|
1171
1323
|
* 获取所有实体和图元对象
|
|
1172
1324
|
*/
|
|
@@ -1245,8 +1397,21 @@ declare class LayerSystem implements RenderSystem {
|
|
|
1245
1397
|
private removeFromCesium;
|
|
1246
1398
|
/**
|
|
1247
1399
|
* 设置图层可见性
|
|
1400
|
+
* 支持底图互斥:当勾选矢量地图时,自动取消勾选影像地图和影像注记,反之亦然
|
|
1401
|
+
* 支持高程图层可见性切换
|
|
1248
1402
|
*/
|
|
1249
1403
|
setLayerVisible(layerId: string, visible: boolean): boolean;
|
|
1404
|
+
/**
|
|
1405
|
+
* 设置高程图层可见性
|
|
1406
|
+
* @param visible 是否可见
|
|
1407
|
+
*/
|
|
1408
|
+
private setTerrainLayerVisible;
|
|
1409
|
+
/**
|
|
1410
|
+
* 处理底图互斥逻辑
|
|
1411
|
+
* 当勾选矢量地图时,取消勾选影像地图和影像注记
|
|
1412
|
+
* 当勾选影像地图或影像注记时,取消勾选矢量地图
|
|
1413
|
+
*/
|
|
1414
|
+
private handleBaseMapMutex;
|
|
1250
1415
|
/**
|
|
1251
1416
|
* 设置图层可见性(内部方法)
|
|
1252
1417
|
*/
|
|
@@ -2325,6 +2490,7 @@ declare class Render {
|
|
|
2325
2490
|
engine: any;
|
|
2326
2491
|
viewer: Viewer;
|
|
2327
2492
|
config: RenderConfig;
|
|
2493
|
+
viewerEnv: ViewerEnv;
|
|
2328
2494
|
private lightingSystem;
|
|
2329
2495
|
private shadowSystem;
|
|
2330
2496
|
private volumetricCloudsSystem;
|
|
@@ -2353,6 +2519,9 @@ declare class Render {
|
|
|
2353
2519
|
*
|
|
2354
2520
|
* 修正方式:直接操作 PostProcessStageCollection 的内部 _stages 数组调整顺序,
|
|
2355
2521
|
* 不调用 remove()(remove 会 destroy GPU 资源),不触发 Shader 重编译,无视觉闪烁。
|
|
2522
|
+
*
|
|
2523
|
+
* 目标顺序:云 → 大气 → 后处理(whiteBalance/colorAdjustment/...)
|
|
2524
|
+
* 原因:后处理的 exposure 等效果作用在大气之后才正确;大气需读取未经后处理的原始场景。
|
|
2356
2525
|
*/
|
|
2357
2526
|
private ensurePostProcessStageOrder;
|
|
2358
2527
|
private registerSystems;
|
|
@@ -2377,6 +2546,11 @@ declare class Render {
|
|
|
2377
2546
|
* 清除当前预设,关闭所有环境系统
|
|
2378
2547
|
*/
|
|
2379
2548
|
clearPreset(): void;
|
|
2549
|
+
/**
|
|
2550
|
+
* 重置所有环境系统到默认配置(单一出口)
|
|
2551
|
+
* 等效于 applyConfig(DEFAULT_CONFIG),所有系统参数回到 DefaultConfig.ts 定义的值并禁用。
|
|
2552
|
+
*/
|
|
2553
|
+
resetConfig(): void;
|
|
2380
2554
|
/**
|
|
2381
2555
|
* 获取当前激活的预设 ID,未激活时返回 null
|
|
2382
2556
|
*/
|
|
@@ -2385,6 +2559,19 @@ declare class Render {
|
|
|
2385
2559
|
* 启用所有系统
|
|
2386
2560
|
*/
|
|
2387
2561
|
enableAllSystems(): void;
|
|
2562
|
+
/**
|
|
2563
|
+
* 以 DefaultConfig 参数启用所有环境系统
|
|
2564
|
+
*
|
|
2565
|
+
* 与直接调用 enableSystem() 的区别:
|
|
2566
|
+
* - 先将所有系统参数重置为 DefaultConfig(清除预设残留)
|
|
2567
|
+
* - 再启用所有环境系统
|
|
2568
|
+
*
|
|
2569
|
+
* 解决问题:
|
|
2570
|
+
* "全部开启"按钮点击时,若之前曾应用过预设,系统内部仍持有预设参数
|
|
2571
|
+
* (如 ACES 色调映射 / exposure 1.20 / 暖色温),导致视觉结果与 DefaultConfig 不一致。
|
|
2572
|
+
* 此方法保证"全部开启"始终以 DefaultConfig 参数运行。
|
|
2573
|
+
*/
|
|
2574
|
+
enableAllWithDefaults(): void;
|
|
2388
2575
|
/**
|
|
2389
2576
|
* 禁用所有系统
|
|
2390
2577
|
*/
|
|
@@ -3040,11 +3227,11 @@ declare class WaterControl {
|
|
|
3040
3227
|
*/
|
|
3041
3228
|
createPanel(container: HTMLElement): void;
|
|
3042
3229
|
/**
|
|
3043
|
-
*
|
|
3230
|
+
* 创建面板内容(不包含区域设置,区域通过 GeoJSON 文件指定)
|
|
3044
3231
|
*/
|
|
3045
3232
|
private createPanelContent;
|
|
3046
3233
|
/**
|
|
3047
|
-
*
|
|
3234
|
+
* 初始化事件监听器(不包含区域设置,区域通过 GeoJSON 文件指定)
|
|
3048
3235
|
*/
|
|
3049
3236
|
initEventListeners(container: HTMLElement): void;
|
|
3050
3237
|
/**
|
|
@@ -3056,13 +3243,199 @@ declare class WaterControl {
|
|
|
3056
3243
|
*/
|
|
3057
3244
|
applyDefaultPresets(): void;
|
|
3058
3245
|
/**
|
|
3059
|
-
*
|
|
3246
|
+
* RGBA 对象转十六进制
|
|
3060
3247
|
*/
|
|
3061
|
-
private
|
|
3248
|
+
private rgbaToHex;
|
|
3062
3249
|
/**
|
|
3063
|
-
* 十六进制颜色转
|
|
3250
|
+
* 十六进制颜色转 RGBA 对象
|
|
3064
3251
|
*/
|
|
3065
|
-
private
|
|
3252
|
+
private hexToRgba;
|
|
3253
|
+
}
|
|
3254
|
+
|
|
3255
|
+
/**
|
|
3256
|
+
* 海洋数据项接口
|
|
3257
|
+
*/
|
|
3258
|
+
interface SeaLayerItem {
|
|
3259
|
+
id: string;
|
|
3260
|
+
name: string;
|
|
3261
|
+
url?: string;
|
|
3262
|
+
source?: 'url' | 'file';
|
|
3263
|
+
primitive: Primitive | null;
|
|
3264
|
+
visible: boolean;
|
|
3265
|
+
}
|
|
3266
|
+
/**
|
|
3267
|
+
* 海洋系统配置接口
|
|
3268
|
+
*/
|
|
3269
|
+
interface SeaConfig {
|
|
3270
|
+
/** 是否启用海洋系统 */
|
|
3271
|
+
enabled: boolean;
|
|
3272
|
+
/** 海洋颜色 */
|
|
3273
|
+
color?: Color;
|
|
3274
|
+
/** 海洋透明度 */
|
|
3275
|
+
opacity?: number;
|
|
3276
|
+
/** 海洋反射强度 */
|
|
3277
|
+
specularIntensity?: number;
|
|
3278
|
+
/** 海洋波动振幅 */
|
|
3279
|
+
amplitude?: number;
|
|
3280
|
+
/** 海洋波动频率 */
|
|
3281
|
+
frequency?: number;
|
|
3282
|
+
/** 海洋动画速度 */
|
|
3283
|
+
animationSpeed?: number;
|
|
3284
|
+
/** 法线纹理路径 */
|
|
3285
|
+
normalMapUrl?: string;
|
|
3286
|
+
/** 海洋数据路径 */
|
|
3287
|
+
dataUrl?: string;
|
|
3288
|
+
}
|
|
3289
|
+
/**
|
|
3290
|
+
* 海洋系统类
|
|
3291
|
+
* 负责管理场景中的海洋效果
|
|
3292
|
+
* 参考 RenderSeaPolygon 实现
|
|
3293
|
+
*/
|
|
3294
|
+
declare class SeaSystem implements RenderSystem {
|
|
3295
|
+
private viewer;
|
|
3296
|
+
private config;
|
|
3297
|
+
private seaPrimitive;
|
|
3298
|
+
private isInitialized;
|
|
3299
|
+
private isEnabled;
|
|
3300
|
+
private morphCompleteListener;
|
|
3301
|
+
private postRenderListener;
|
|
3302
|
+
constructor(viewer: Viewer, config?: SeaConfig);
|
|
3303
|
+
/**
|
|
3304
|
+
* 初始化海洋系统
|
|
3305
|
+
*/
|
|
3306
|
+
initialize(): void;
|
|
3307
|
+
/**
|
|
3308
|
+
* 创建海洋几何
|
|
3309
|
+
*/
|
|
3310
|
+
private createSeaGeometry;
|
|
3311
|
+
/**
|
|
3312
|
+
* 加载海洋数据
|
|
3313
|
+
*/
|
|
3314
|
+
private loadSeaData;
|
|
3315
|
+
/**
|
|
3316
|
+
* 从GeoJSON获取层级结构
|
|
3317
|
+
*/
|
|
3318
|
+
private getHierarchies;
|
|
3319
|
+
/**
|
|
3320
|
+
* 从几何体获取层级结构
|
|
3321
|
+
*/
|
|
3322
|
+
private getHierarchiesFromGeometry;
|
|
3323
|
+
/**
|
|
3324
|
+
* 从坐标数组获取层级结构
|
|
3325
|
+
*/
|
|
3326
|
+
private getHierarchy;
|
|
3327
|
+
/**
|
|
3328
|
+
* 绘制海洋
|
|
3329
|
+
*/
|
|
3330
|
+
private drawSea;
|
|
3331
|
+
/**
|
|
3332
|
+
* 创建水体材质
|
|
3333
|
+
*/
|
|
3334
|
+
private createWaterMaterial;
|
|
3335
|
+
/**
|
|
3336
|
+
* 创建调试用的海洋
|
|
3337
|
+
*/
|
|
3338
|
+
private createDebugSea;
|
|
3339
|
+
/**
|
|
3340
|
+
* 配置海洋样式
|
|
3341
|
+
*/
|
|
3342
|
+
private setupSeaStyling;
|
|
3343
|
+
/**
|
|
3344
|
+
* 设置事件监听器
|
|
3345
|
+
*/
|
|
3346
|
+
private setupEventListeners;
|
|
3347
|
+
/**
|
|
3348
|
+
* 更新海洋动画
|
|
3349
|
+
*/
|
|
3350
|
+
private updateSeaAnimation;
|
|
3351
|
+
/**
|
|
3352
|
+
* 启用海洋系统
|
|
3353
|
+
*/
|
|
3354
|
+
enable(): void;
|
|
3355
|
+
/**
|
|
3356
|
+
* 重新创建海洋图元
|
|
3357
|
+
*/
|
|
3358
|
+
private recreateSeaPrimitives;
|
|
3359
|
+
/**
|
|
3360
|
+
* 禁用海洋系统
|
|
3361
|
+
*/
|
|
3362
|
+
disable(): void;
|
|
3363
|
+
/**
|
|
3364
|
+
* 销毁海洋图元
|
|
3365
|
+
*/
|
|
3366
|
+
private destroySeaPrimitives;
|
|
3367
|
+
/**
|
|
3368
|
+
* 更新海洋配置
|
|
3369
|
+
*/
|
|
3370
|
+
update(config: Partial<SeaConfig>): void;
|
|
3371
|
+
/**
|
|
3372
|
+
* 更新海洋样式
|
|
3373
|
+
*/
|
|
3374
|
+
private updateSeaStyle;
|
|
3375
|
+
/**
|
|
3376
|
+
* 获取系统状态
|
|
3377
|
+
*/
|
|
3378
|
+
getStatus(): boolean;
|
|
3379
|
+
/**
|
|
3380
|
+
* 获取当前配置
|
|
3381
|
+
*/
|
|
3382
|
+
getConfig(): SeaConfig;
|
|
3383
|
+
/**
|
|
3384
|
+
* 保存配置
|
|
3385
|
+
*/
|
|
3386
|
+
saveConfig(): SeaConfig;
|
|
3387
|
+
/**
|
|
3388
|
+
* 获取系统状态信息(调试用)
|
|
3389
|
+
*/
|
|
3390
|
+
getDebugInfo(): any;
|
|
3391
|
+
/**
|
|
3392
|
+
* 销毁海洋系统
|
|
3393
|
+
*/
|
|
3394
|
+
destroy(): void;
|
|
3395
|
+
/** 用户添加的海图层 */
|
|
3396
|
+
private seaLayers;
|
|
3397
|
+
/**
|
|
3398
|
+
* 从 URL 加载海洋数据
|
|
3399
|
+
* @param url GeoJSON 数据地址
|
|
3400
|
+
* @param name 海图层名称
|
|
3401
|
+
* @returns 海图层ID
|
|
3402
|
+
*/
|
|
3403
|
+
loadSeaFromUrl(url: string, name?: string): Promise<string>;
|
|
3404
|
+
/**
|
|
3405
|
+
* 从文件加载海洋数据
|
|
3406
|
+
* @param file GeoJSON 文件
|
|
3407
|
+
* @param name 海图层名称
|
|
3408
|
+
* @returns 海图层ID
|
|
3409
|
+
*/
|
|
3410
|
+
loadSeaFromFile(file: File, name?: string): Promise<string>;
|
|
3411
|
+
/**
|
|
3412
|
+
* 从层级结构创建海洋图元
|
|
3413
|
+
*/
|
|
3414
|
+
private createSeaPrimitivesFromHierarchies;
|
|
3415
|
+
/**
|
|
3416
|
+
* 获取所有用户添加的海图层
|
|
3417
|
+
*/
|
|
3418
|
+
getSeaLayers(): SeaLayerItem[];
|
|
3419
|
+
/**
|
|
3420
|
+
* 获取指定海图层
|
|
3421
|
+
*/
|
|
3422
|
+
getSeaLayer(layerId: string): SeaLayerItem | undefined;
|
|
3423
|
+
/**
|
|
3424
|
+
* 设置海图层可见性
|
|
3425
|
+
*/
|
|
3426
|
+
setSeaLayerVisible(layerId: string, visible: boolean): boolean;
|
|
3427
|
+
/**
|
|
3428
|
+
* 移除指定海图层
|
|
3429
|
+
*/
|
|
3430
|
+
removeSeaLayer(layerId: string): boolean;
|
|
3431
|
+
/**
|
|
3432
|
+
* 清除所有用户添加的海图层
|
|
3433
|
+
*/
|
|
3434
|
+
clearAllSeaLayers(): void;
|
|
3435
|
+
/**
|
|
3436
|
+
* 获取脚本基础URL
|
|
3437
|
+
*/
|
|
3438
|
+
private getScriptBaseUrl;
|
|
3066
3439
|
}
|
|
3067
3440
|
|
|
3068
3441
|
/**
|
|
@@ -3501,6 +3874,8 @@ interface SidebarManagerState {
|
|
|
3501
3874
|
*/
|
|
3502
3875
|
declare class LayerControl extends PanelBase {
|
|
3503
3876
|
private layerSystem;
|
|
3877
|
+
private waterSystem;
|
|
3878
|
+
private render;
|
|
3504
3879
|
private folders;
|
|
3505
3880
|
private searchTerm;
|
|
3506
3881
|
private entityExpandedMap;
|
|
@@ -3565,6 +3940,18 @@ declare class LayerControl extends PanelBase {
|
|
|
3565
3940
|
* 过滤实体和图元对象
|
|
3566
3941
|
*/
|
|
3567
3942
|
private filterEntities;
|
|
3943
|
+
/**
|
|
3944
|
+
* 过滤水图层
|
|
3945
|
+
*/
|
|
3946
|
+
private filterWaterLayers;
|
|
3947
|
+
/**
|
|
3948
|
+
* 渲染水图层文件夹
|
|
3949
|
+
*/
|
|
3950
|
+
private renderWaterFolder;
|
|
3951
|
+
/**
|
|
3952
|
+
* 渲染水图层列表
|
|
3953
|
+
*/
|
|
3954
|
+
private renderWaterLayerList;
|
|
3568
3955
|
/**
|
|
3569
3956
|
* 渲染实体和图元列表(支持递归)
|
|
3570
3957
|
*/
|
|
@@ -3589,6 +3976,22 @@ declare class LayerControl extends PanelBase {
|
|
|
3589
3976
|
* 显示添加图层对话框
|
|
3590
3977
|
*/
|
|
3591
3978
|
private showAddLayerDialog;
|
|
3979
|
+
/**
|
|
3980
|
+
* 添加对话框样式
|
|
3981
|
+
*/
|
|
3982
|
+
private addDialogStyles;
|
|
3983
|
+
/**
|
|
3984
|
+
* 绑定对话框事件
|
|
3985
|
+
*/
|
|
3986
|
+
private bindDialogEvents;
|
|
3987
|
+
/**
|
|
3988
|
+
* 处理水图层添加
|
|
3989
|
+
*/
|
|
3990
|
+
private handleWaterLayerAdd;
|
|
3991
|
+
/**
|
|
3992
|
+
* 关闭对话框
|
|
3993
|
+
*/
|
|
3994
|
+
private closeDialog;
|
|
3592
3995
|
/**
|
|
3593
3996
|
* 显示添加目录对话框
|
|
3594
3997
|
*/
|
|
@@ -3605,6 +4008,30 @@ declare class LayerControl extends PanelBase {
|
|
|
3605
4008
|
* 切换实体展开/收起状态
|
|
3606
4009
|
*/
|
|
3607
4010
|
private toggleEntityExpanded;
|
|
4011
|
+
/**
|
|
4012
|
+
* 显示水图层效果编辑对话框
|
|
4013
|
+
*/
|
|
4014
|
+
private showWaterEffectDialog;
|
|
4015
|
+
/**
|
|
4016
|
+
* 添加水效果对话框样式
|
|
4017
|
+
*/
|
|
4018
|
+
private addWaterEffectDialogStyles;
|
|
4019
|
+
/**
|
|
4020
|
+
* 绑定水效果对话框事件
|
|
4021
|
+
*/
|
|
4022
|
+
private bindWaterEffectDialogEvents;
|
|
4023
|
+
/**
|
|
4024
|
+
* 关闭水效果编辑对话框
|
|
4025
|
+
*/
|
|
4026
|
+
private closeWaterEffectDialog;
|
|
4027
|
+
/**
|
|
4028
|
+
* RGBA 对象转十六进制
|
|
4029
|
+
*/
|
|
4030
|
+
private rgbaToHex;
|
|
4031
|
+
/**
|
|
4032
|
+
* 十六进制颜色转 RGBA 对象
|
|
4033
|
+
*/
|
|
4034
|
+
private hexToRgba;
|
|
3608
4035
|
/**
|
|
3609
4036
|
* 刷新面板
|
|
3610
4037
|
*/
|
|
@@ -4097,227 +4524,71 @@ declare class CameraUrlManager {
|
|
|
4097
4524
|
destroy(): void;
|
|
4098
4525
|
}
|
|
4099
4526
|
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
north: number;
|
|
4108
|
-
/** 右下角经度 */
|
|
4109
|
-
east: number;
|
|
4110
|
-
/** 右下角纬度 */
|
|
4111
|
-
south: number;
|
|
4527
|
+
interface WeatherAreaData {
|
|
4528
|
+
gger: string;
|
|
4529
|
+
minLon: number;
|
|
4530
|
+
maxLon: number;
|
|
4531
|
+
minLat: number;
|
|
4532
|
+
maxLat: number;
|
|
4533
|
+
weatherType: 'rainy' | 'snowy' | 'foggy' | 'sunny';
|
|
4112
4534
|
}
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4130
|
-
|
|
4131
|
-
|
|
4132
|
-
|
|
4133
|
-
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
private
|
|
4162
|
-
private
|
|
4163
|
-
private
|
|
4164
|
-
private
|
|
4165
|
-
private
|
|
4166
|
-
private
|
|
4167
|
-
private
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
* 初始化下雨系统
|
|
4171
|
-
*/
|
|
4172
|
-
initialize(): void;
|
|
4173
|
-
/**
|
|
4174
|
-
* 在指定矩形范围内创建下雨效果
|
|
4175
|
-
*/
|
|
4176
|
-
private createRainSystemsInBounds;
|
|
4177
|
-
/**
|
|
4178
|
-
* 创建网格点的下雨粒子系统
|
|
4179
|
-
*/
|
|
4180
|
-
private createGridRainSystem;
|
|
4181
|
-
/**
|
|
4182
|
-
* 计算发射器模型矩阵
|
|
4183
|
-
* 让发射方向向下(旋转使发射器朝向地面)
|
|
4184
|
-
*/
|
|
4185
|
-
private computeEmitterModelMatrix;
|
|
4186
|
-
/**
|
|
4187
|
-
* 创建雨滴纹理图像 - 使用 Canvas 程序生成细长的雨丝
|
|
4188
|
-
*/
|
|
4189
|
-
private createRainImage;
|
|
4190
|
-
/**
|
|
4191
|
-
* 创建 Canvas 雨滴纹理
|
|
4192
|
-
*/
|
|
4193
|
-
private createCanvashailImage;
|
|
4194
|
-
private createCanvasSnowImage;
|
|
4195
|
-
/**
|
|
4196
|
-
* 设置雨滴纹理类型
|
|
4197
|
-
* @param type 纹理类型: 'rain' | 'hail' | 'snow'
|
|
4198
|
-
*/
|
|
4199
|
-
setRainImageType(type: 'rain' | 'hail' | 'snow'): void;
|
|
4200
|
-
/**
|
|
4201
|
-
* 设置自定义雨滴纹理路径
|
|
4202
|
-
* @param imagePath 纹理图片路径,如 './image/rain.png'
|
|
4203
|
-
*/
|
|
4204
|
-
setRainImage(imagePath: string): void;
|
|
4205
|
-
/**
|
|
4206
|
-
* 创建着色器雨效(后期处理方式)
|
|
4207
|
-
* 参考 natureSimulate.js 的 FS_Rain 实现,兼容 WebGL 2.0
|
|
4208
|
-
*/
|
|
4209
|
-
private createShaderRainStage;
|
|
4210
|
-
/**
|
|
4211
|
-
* 根据相机高度切换雨效模式
|
|
4212
|
-
* 500米以内使用着色器雨效,500米以上使用粒子系统
|
|
4213
|
-
*/
|
|
4214
|
-
private switchRainEffectMode;
|
|
4215
|
-
/**
|
|
4216
|
-
* 获取相机正下方地形的海拔高度
|
|
4217
|
-
*/
|
|
4218
|
-
private getTerrainHeightBelowCamera;
|
|
4219
|
-
/**
|
|
4220
|
-
* 应用重力效果 - 雨滴下落
|
|
4221
|
-
*/
|
|
4222
|
-
private applyGravity;
|
|
4223
|
-
/**
|
|
4224
|
-
* 根据相机高度更新雨滴可见性
|
|
4225
|
-
* 当相机高度超过 hideAltitude 时隐藏雨滴,拉近时重新显示
|
|
4226
|
-
* 同时更新天气图标的显示状态
|
|
4227
|
-
*/
|
|
4228
|
-
updateCameraVisibility(): void;
|
|
4229
|
-
/**
|
|
4230
|
-
* 创建天气图标 DOM 元素
|
|
4231
|
-
*/
|
|
4232
|
-
private createWeatherIcon;
|
|
4233
|
-
/**
|
|
4234
|
-
* 获取当前天气类型的图标信息
|
|
4235
|
-
*/
|
|
4236
|
-
private getWeatherIconInfo;
|
|
4237
|
-
/**
|
|
4238
|
-
* 显示天气图标
|
|
4239
|
-
*/
|
|
4240
|
-
private showWeatherIcon;
|
|
4241
|
-
/**
|
|
4242
|
-
* 隐藏天气图标
|
|
4243
|
-
*/
|
|
4244
|
-
private hideWeatherIcon;
|
|
4245
|
-
/**
|
|
4246
|
-
* 更新天气图标显示内容
|
|
4247
|
-
*/
|
|
4248
|
-
private updateWeatherIconContent;
|
|
4249
|
-
/**
|
|
4250
|
-
* 启用下雨系统
|
|
4251
|
-
*/
|
|
4252
|
-
enable(): void;
|
|
4253
|
-
/**
|
|
4254
|
-
* 设置相机高度追踪
|
|
4255
|
-
* 在每一帧渲染后检测相机高度,超过阈值时隐藏雨滴
|
|
4256
|
-
* 同时根据高度切换着色器雨效和粒子系统
|
|
4257
|
-
*/
|
|
4258
|
-
private cameraTrackingCallback;
|
|
4259
|
-
/**
|
|
4260
|
-
* 设置相机追踪
|
|
4261
|
-
*/
|
|
4262
|
-
private setupCameraTracking;
|
|
4263
|
-
/**
|
|
4264
|
-
* 禁用下雨系统
|
|
4265
|
-
*/
|
|
4266
|
-
disable(): void;
|
|
4267
|
-
/**
|
|
4268
|
-
* 更新系统配置 - 实时天气数据更新的统一公共接口
|
|
4269
|
-
* 支持不同天气状态间的动态平滑过渡(例如强度由小雨转大雨,或类型由雨转雪)
|
|
4270
|
-
* @param config 部分配置参数,将与现有配置合并
|
|
4271
|
-
*/
|
|
4272
|
-
update(config: Partial<RainConfig>): void;
|
|
4273
|
-
/**
|
|
4274
|
-
* 更新下雨区域范围
|
|
4275
|
-
* @param bounds 新的区域范围
|
|
4276
|
-
*/
|
|
4277
|
-
private updateBounds;
|
|
4278
|
-
/**
|
|
4279
|
-
* 平滑过渡到新的天气强度
|
|
4280
|
-
* @param targetEmissionRate 目标发射率
|
|
4281
|
-
* @param duration 过渡持续时间(毫秒)
|
|
4282
|
-
*/
|
|
4283
|
-
transitionToIntensity(targetEmissionRate: number, duration?: number): void;
|
|
4284
|
-
/**
|
|
4285
|
-
* 平滑过渡到新的天气类型
|
|
4286
|
-
* @param targetType 目标天气类型
|
|
4287
|
-
* @param duration 过渡持续时间(毫秒)
|
|
4288
|
-
*/
|
|
4289
|
-
transitionToType(targetType: 'rain' | 'hail' | 'snow', duration?: number): void;
|
|
4290
|
-
/**
|
|
4291
|
-
* 获取系统状态
|
|
4292
|
-
*/
|
|
4293
|
-
getStatus(): boolean;
|
|
4294
|
-
/**
|
|
4295
|
-
* 设置相机隐藏高度
|
|
4296
|
-
* @param altitude 相机高度超过此值时隐藏雨滴(单位:米)
|
|
4297
|
-
*/
|
|
4298
|
-
setHideAltitude(altitude: number): void;
|
|
4299
|
-
/**
|
|
4300
|
-
* 获取当前相机高度
|
|
4301
|
-
*/
|
|
4302
|
-
getCurrentCameraHeight(): number;
|
|
4303
|
-
/**
|
|
4304
|
-
* 设置是否启用着色器雨效模式
|
|
4305
|
-
* @param enabled 是否启用着色器雨效(相机低于500米时自动切换)
|
|
4306
|
-
*/
|
|
4307
|
-
setShaderRainEnabled(enabled: boolean): void;
|
|
4308
|
-
/**
|
|
4309
|
-
* 设置着色器雨效切换高度
|
|
4310
|
-
* @param height 相机高度低于此值时切换到着色器雨效(单位:米)
|
|
4311
|
-
*/
|
|
4312
|
-
setShaderRainHeight(height: number): void;
|
|
4313
|
-
/**
|
|
4314
|
-
* 销毁系统
|
|
4315
|
-
*/
|
|
4316
|
-
destroy(): void;
|
|
4317
|
-
/**
|
|
4318
|
-
* 获取当前配置
|
|
4319
|
-
*/
|
|
4320
|
-
getConfig(): RainConfig;
|
|
4535
|
+
declare class RainSystem {
|
|
4536
|
+
private _viewer;
|
|
4537
|
+
private _effects;
|
|
4538
|
+
private _anchorEntities;
|
|
4539
|
+
private _allAreas;
|
|
4540
|
+
private _lastCameraPosition;
|
|
4541
|
+
private _effectPaused;
|
|
4542
|
+
private _isPageVisible;
|
|
4543
|
+
private _isWindowFocused;
|
|
4544
|
+
private _rainCanvas;
|
|
4545
|
+
private _snowCanvas;
|
|
4546
|
+
private _fogCanvas;
|
|
4547
|
+
private readonly MAX_EFFECTS;
|
|
4548
|
+
private readonly UPDATE_THRESHOLD;
|
|
4549
|
+
private _pendingAdd;
|
|
4550
|
+
private _pendingRemove;
|
|
4551
|
+
private _isUpdating;
|
|
4552
|
+
private _lastUpdateTime;
|
|
4553
|
+
private readonly THROTTLE_MS;
|
|
4554
|
+
private _tickHandler;
|
|
4555
|
+
constructor(viewer: any, Cesium?: any);
|
|
4556
|
+
/**
|
|
4557
|
+
* 从JSON数组加载天气效果
|
|
4558
|
+
*/
|
|
4559
|
+
loadFromJson(areas: WeatherAreaData[]): void;
|
|
4560
|
+
private _setupVisibilityHandler;
|
|
4561
|
+
private _updatePauseState;
|
|
4562
|
+
private _setEffectsPaused;
|
|
4563
|
+
private _pauseAllEffects;
|
|
4564
|
+
private _resumeAllEffects;
|
|
4565
|
+
private _startCameraWatch;
|
|
4566
|
+
private _scheduleUpdate;
|
|
4567
|
+
private _computePendingChanges;
|
|
4568
|
+
private _processNextPending;
|
|
4569
|
+
private _updateVisibleEffects;
|
|
4570
|
+
private _getVisibleAreas;
|
|
4571
|
+
/**
|
|
4572
|
+
* 添加单个天气区域
|
|
4573
|
+
*/
|
|
4574
|
+
addWeatherArea(area: WeatherAreaData): void;
|
|
4575
|
+
/**
|
|
4576
|
+
* 移除指定区域天气效果
|
|
4577
|
+
*/
|
|
4578
|
+
removeWeatherArea(id: string): void;
|
|
4579
|
+
/**
|
|
4580
|
+
* 清空所有天气效果
|
|
4581
|
+
*/
|
|
4582
|
+
clearAll(): void;
|
|
4583
|
+
private _createSunnyEffect;
|
|
4584
|
+
private _createRainEffect;
|
|
4585
|
+
private _createSnowEffect;
|
|
4586
|
+
private _createFogEffect;
|
|
4587
|
+
private _createSunCoreCanvas;
|
|
4588
|
+
private _createRainCanvas;
|
|
4589
|
+
private _createSnowCanvas;
|
|
4590
|
+
private _createFogCanvas;
|
|
4591
|
+
private _getParticleSystemMatrix;
|
|
4321
4592
|
}
|
|
4322
4593
|
|
|
4323
4594
|
declare global {
|
|
@@ -4362,6 +4633,8 @@ declare const render: {
|
|
|
4362
4633
|
CameraUrlManager: typeof CameraUrlManager;
|
|
4363
4634
|
/** 下雨天气系统 */
|
|
4364
4635
|
RainSystem: typeof RainSystem;
|
|
4636
|
+
/** 海洋系统 */
|
|
4637
|
+
SeaSystem: typeof SeaSystem;
|
|
4365
4638
|
};
|
|
4366
4639
|
|
|
4367
|
-
export { AtmosphereControl, type AtmosphereScatteringConfig, AtmosphereScatteringSystem, BuildingControl, BuildingSystem, CameraListener, type CameraListenerConfig, CameraListenerSystem, type CameraListenerSystemConfig, type CameraParams, CameraUrlManager, type CameraUrlManagerConfig, type DirectionalLightConfig, type DistanceFogConfig, DistanceFogSystem, EnvironmentControl, FogControl, type HeightFogConfig, HeightFogSystem, LayerControl, LayerSystem, LightingControl, LightingSystem, PlottingControl, type PostProcessingConfig, PostProcessingControl, PostProcessingSystem,
|
|
4640
|
+
export { AtmosphereControl, type AtmosphereScatteringConfig, AtmosphereScatteringSystem, BuildingControl, BuildingSystem, CameraListener, type CameraListenerConfig, CameraListenerSystem, type CameraListenerSystemConfig, type CameraParams, CameraUrlManager, type CameraUrlManagerConfig, type DirectionalLightConfig, type DistanceFogConfig, DistanceFogSystem, EnvironmentControl, FogControl, type HeightFogConfig, HeightFogSystem, LayerControl, LayerSystem, LightingControl, LightingSystem, PlottingControl, type PostProcessingConfig, PostProcessingControl, PostProcessingSystem, RainSystem, Render, type RenderConfig, RenderControl, type SeaConfig, SeaSystem, type ShadowConfig, ShadowControl, ShadowSystem, SidebarControl, TilesetManager, TilesetSearchControl, ToolboxControl, ToolboxSystem, VolumetricCloudControl, type VolumetricCloudsConfig, VolumetricCloudsSystem, type WaterConfig, WaterControl, WaterSystem, type WeatherAreaData, render };
|