@u-gis/ue 3.0.7 → 3.0.8
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/earthsdk3-ue.iife.js +29553 -297
- package/dist/earthsdk3-ue.iife.js.map +1 -0
- package/dist/earthsdk3-ue.js +4710 -3310
- package/dist/earthsdk3-ue.js.map +1 -0
- package/dist/earthsdk3-ue.umd.cjs +6583 -1
- package/dist/earthsdk3-ue.umd.cjs.map +1 -0
- package/dist/types/ESUeViewer/ESUeViewer.d.ts +1 -1
- package/dist/types/ESUeViewer/ESUeViewer.d.ts.map +1 -1
- package/dist/types/ESUeViewer/Viewers/CSTMPSViewer/PSUEViewer.d.ts +1 -1
- package/dist/types/ESUeViewer/Viewers/CSTMPSViewer/PSUEViewer.d.ts.map +1 -1
- package/dist/types/ESUeViewer/Viewers/CSTMPSViewer/PSUEViewerWrapper.d.ts.map +1 -1
- package/dist/types/ESUeViewer/Viewers/INNPSViewer/WebRtcManager.d.ts +1 -1
- package/dist/types/ESUeViewer/Viewers/INNPSViewer/WebRtcManager.d.ts.map +1 -1
- package/dist/types/ESUeViewer/uemsg/UeEventsType.d.ts +1 -1
- package/dist/types/ESUeViewer/uemsg/UeEventsType.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeES3DTileset/index.d.ts +1 -1
- package/dist/types/UeObjects/general/UeESGaussianSplatting/index.d.ts +2 -2
- package/dist/types/UeObjects/general/UeESGeoDiv/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeESHumanPoi/index.d.ts +1 -1
- package/dist/types/UeObjects/general/UeESRtsFeatureEditing/index.d.ts +4 -2
- package/dist/types/UeObjects/general/UeESRtsFeatureEditing/index.d.ts.map +1 -1
- package/dist/types/UeObjects/general/UeESStaticMesh/index.d.ts +2 -2
- package/dist/types/UeObjects/general/UeESUnrealActor/index.d.ts +1 -1
- package/package.json +4 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"earthsdk3-ue.umd.cjs","sources":["../src/ESUeViewer/inner/ReactProps.ts","../src/ESUeViewer/Viewers/CSTMPSViewer/dataFormats.ts","../src/ESUeViewer/Viewers/CSTMPSViewer/ESMsgWebSocketWrapper.ts","../src/ESUeViewer/Viewers/CSTMPSViewer/PSUEViewer.ts","../src/ESUeViewer/Viewers/CSTMPSViewer/PSUEViewerWrapper.ts","../src/ESUeViewer/uemsg/CallUeFuncs.ts","../src/ESUeViewer/uemsg/UeCloudViewerBase.ts","../src/ESUeViewer/uemsg/UeFuncsType.ts","../src/ESUeViewer/Viewers/CSTMPSViewer/index.ts","../src/ESUeViewer/Viewers/INNPSViewer/createMsgInput.ts","../src/ESUeViewer/Viewers/INNPSViewer/WebRtcManager.ts","../src/ESUeViewer/Viewers/INNPSViewer/WebRtcManagerWrapper.ts","../src/ESUeViewer/Viewers/INNPSViewer/index.ts","../src/ESUeViewer/Viewers/H5Viewer/DLViewer.ts","../src/ESUeViewer/Viewers/H5Viewer/utils.ts","../src/ESUeViewer/Viewers/H5Viewer/ViewerH5Instance.ts","../src/ESUeViewer/Viewers/H5Viewer/index.ts","../src/ESUeViewer/inner/UeLocalViewer.ts","../src/ESUeViewer/inner/ViewerInstance.ts","../src/ESUeViewer/inner/ViewerLocalInstance.ts","../src/ESUeViewer/inner/ViewerCreating.ts","../src/ESUeViewer/ESUeViewer.ts","../src/UeObjects/base/UeESSceneObject/index.ts","../src/UeObjects/base/UeESVisualObject/index.ts","../src/UeObjects/base/UeESObjectWithLocation/index.ts","../src/UeObjects/base/UeESGeoVector/index.ts","../src/UeObjects/base/UeESLabel/index.ts","../src/UeObjects/base/UeESLocalVector/index.ts","../src/UeObjects/base/UeESLocalVector2D/index.ts","../src/UeObjects/general/UeES3DTileset/index.ts","../src/UeObjects/general/UeESImageryLayer/index.ts","../src/UeObjects/general/UeESTerrainLayer/index.ts","../src/UeObjects/general/UeESAlarm/index.ts","../src/UeObjects/general/UeESApertureEffect/index.ts","../src/UeObjects/general/UeESGeoPolygon/index.ts","../src/UeObjects/general/UeESAreaMeasurement/index.ts","../src/UeObjects/general/UeESBlastParticleSystem/index.ts","../src/UeObjects/general/UeESBoxClipping/index.ts","../src/UeObjects/general/UeESCameraView/index.ts","../src/UeObjects/general/UeESCameraVisibleRange/index.ts","../src/UeObjects/general/UeESCar/index.ts","../src/UeObjects/general/UeESClassification/index.ts","../src/UeObjects/general/UeESClippingPlane/index.ts","../src/UeObjects/general/UeESDataMesh/index.ts","../src/UeObjects/general/UeESDatasmithRuntimeModel/index.ts","../src/UeObjects/general/UeESDirectionMeasurement/index.ts","../src/UeObjects/general/UeESDistanceMeasurement/index.ts","../src/UeObjects/general/UeESLocalPolygon/index.ts","../src/UeObjects/general/UeESDynamicWater/index.ts","../src/UeObjects/general/UeESEntityCluster/index.ts","../src/UeObjects/general/UeESExcavate/index.ts","../src/UeObjects/general/UeESFireParticleSystem/index.ts","../src/UeObjects/general/UeESForestTileset/index.ts","../src/UeObjects/general/UeESGeoDiv/index.ts","../src/UeObjects/general/UeESGeoJson/index.ts","../src/UeObjects/general/UeESGeoLineString/index.ts","../src/UeObjects/general/UeESGeoRectangle/index.ts","../src/UeObjects/general/UeESGeoWater/index.ts","../src/UeObjects/general/UeESGltfModel/index.ts","../src/UeObjects/general/UeESHeightMeasurement/index.ts","../src/UeObjects/general/UeESHuman/index.ts","../src/UeObjects/general/UeESImageLabel/index.ts","../src/UeObjects/general/UeESLevelRuntimeModel/index.ts","../src/UeObjects/general/UeESLocalCircle/index.ts","../src/UeObjects/general/UeESLocalPolygonZ/index.ts","../src/UeObjects/general/UeESLocalRectangle/index.ts","../src/UeObjects/general/UeESLocalSkyBox/index.ts","../src/UeObjects/general/UeESLocationMeasurement/index.ts","../src/UeObjects/general/UeESPipeFence/index.ts","../src/UeObjects/general/UeESPipeline/index.ts","../src/UeObjects/general/UeESPipeserTileset/index.ts","../src/UeObjects/general/UeESPit/index.ts","../src/UeObjects/general/UeESPoi2D/index.ts","../src/UeObjects/general/UeESPoi3D/index.ts","../src/UeObjects/general/UeESPoiTileset/index.ts","../src/UeObjects/general/UeESPolygonFence/index.ts","../src/UeObjects/general/UeESPolygonFlattenedPlane/index.ts","../src/UeObjects/general/UeESPolygonWithHole/index.ts","../src/UeObjects/general/UeESRtsTileset/index.ts","../src/UeObjects/general/UeESSeparateFoliage/index.ts","../src/UeObjects/general/UeESSubmergingAnalysis/index.ts","../src/UeObjects/general/UeESSunshineAnalysis/index.ts","../src/UeObjects/general/UeESSurfaceAreaMeasurement/index.ts","../src/UeObjects/general/UeESTextLabel/index.ts","../src/UeObjects/general/UeESUEWidget/index.ts","../src/UeObjects/general/UeESUnrealActor/tipInfo.ts","../src/UeObjects/general/UeESUnrealActor/index.ts","../src/UeObjects/general/UeESVideoFusion/index.ts","../src/UeObjects/general/UeESViewShed/index.ts","../src/UeObjects/general/UeESVisibilityAnalysis/index.ts","../src/UeObjects/general/UeESVolumeMeasurement/index.ts","../src/UeObjects/general/UeESWidget/index.ts","../src/UeObjects/general/UeESHumanPoi/index.ts","../src/UeObjects/general/UeESNavigator/index.ts","../src/UeObjects/general/UeESPath/index.ts","../src/UeObjects/general/UeESViewerStatusBar/index.ts","../src/UeObjects/general/UeESGaussianSplatting/index.ts","../src/UeObjects/general/UeESRtsFeatureEditing/index.ts","../src/UeObjects/general/UeESMsTileset/index.ts","../src/UeObjects/general/UeESGeoExtrudedPolygon/index.ts","../src/UeObjects/general/UeESStaticMesh/index.ts"],"sourcesContent":["\nimport { reactArrayWithUndefined } from \"xbsj-base\";\nimport { ESUeViewer } from \"../index\";\nimport { ESJLonLatFormatType, ESJVector3D, ESViewer } from \"@u-gis/core\";\nconst reactPropDefaults = {\n ...ESViewer.defaults,\n\n geoReferenceOrigin: undefined as ESJVector3D | undefined,\n keepWorldOriginNearCamera: false,\n useCache: true,\n widgetInteractionDistance: 200,\n memReportInterval: 10,\n\n sceneControlled: true,\n brightness: 0,\n emissiveIntensity: 1,\n\n statusUpdateInterval: 0.5,\n baseUrl: window.location.href ?? '',\n}\n//全局属性,消息通信的所有属性\nconst createReactProps = () => ({\n ...ESViewer.createCommonProps(),\n\n //语音模式\n apiKey: '' as string,\n apiUrl: '' as string,\n secretKey: '' as string,\n speechVoiceMode: '' as string,\n\n geoReferenceOrigin: reactArrayWithUndefined<ESJVector3D | undefined>(undefined),//地理参考原点\n keepWorldOriginNearCamera: undefined as boolean | undefined,//地理参考的保持世界原点开关\n useCache: undefined as boolean | undefined,\n widgetInteractionDistance: undefined as number | undefined,\n memReportInterval: undefined as number | undefined,//内存报告间隔\n\n // 天气和后处理参数\n sceneControlled: undefined as boolean | undefined,//是否允许Manager控制场景\n brightness: undefined as number | undefined,//场景亮度\n emissiveIntensity: undefined as number | undefined,//自发光强度\n\n statusUpdateInterval: undefined as number | undefined, //状态更新间隔\n baseUrl: undefined as string | undefined, //基础路径\n});\n\n\n\nfunction getGlobalPropsKey() {\n const reactProps = createReactProps()\n const props: string[] = []\n Object.keys(reactProps).forEach(item => { props.push(item) })\n return props\n}\n\nfunction getGlobalPropsValue(viewer: ESUeViewer) {\n const { defaults } = ESUeViewer;\n const keys = getGlobalPropsKey()\n const params: { [key: string]: any } = {}\n keys.forEach(key => {\n //@ts-ignore\n params[key] = viewer[key] ?? defaults[key]\n })\n return params;\n}\n\nexport { getGlobalPropsKey, getGlobalPropsValue, createReactProps, reactPropDefaults }\n","// Must be kept in sync with JavaScriptKeyCodeToFKey C++ array.\n// special keycodes different from KeyboardEvent.keyCode\nexport const SpecialKeyCodes = {\n\tBackspace: 8,\n\tShiftLeft: 16,\n\tControlLeft: 17,\n\tAltLeft: 18,\n\tShiftRight: 253,\n\tControlRight: 254,\n\tAltRight: 255,\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\nexport const MouseButton = {\n\tMainButton: 0, // Left button.\n\tAuxiliaryButton: 1, // Wheel button.\n\tSecondaryButton: 2, // Right button.\n\tFourthButton: 3, // Browser Back button.\n\tFifthButton: 4, // Browser Forward button.\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons#value\nexport const MouseButtonsMask = {\n\tPrimaryButton: 1, // Left button.\n\tSecondaryButton: 2, // Right button.\n\tAuxiliaryButton: 4, // Wheel button.\n\tFourthButton: 8, // Browser Back button.\n\tFifthButton: 16, // Browser Forward button.\n }\n\n// Must be kept in sync with PixelStreamingProtocol::EToClientMsg C++ enum.\nexport const RECEIVE = {\n\tQualityControlOwnership: 0,\n\tResponse: 1,\n\tCommand: 2,\n\tFreezeFrame: 3,\n\tUnfreezeFrame: 4,\n\tVideoEncoderAvgQP: 5,\n\tLatencyTest: 6,\n\tInitialSettings: 7,\n\tFileExtension: 8,\n\tFileMimeType: 9,\n\tFileContents: 10,\n\tInputControlOwnership: 12,\n\tProtocol: 255\n};\n\n// Must be kept in sync with PixelStreamingProtocol::EToUE4Msg C++ enum.\nexport const SEND = {\n\t/*\n\t * Control Messages. Range = 0..49.\n\t */\n\tIFrameRequest: 0,\n\tRequestQualityControl: 1,\n\tFpsRequest: 2,\n\tAverageBitrateRequest: 3,\n\tStartStreaming: 4,\n\tStopStreaming: 5,\n\tLatencyTest: 6,\n\tRequestInitialSettings: 7,\n\t/*\n\t * Input Messages. Range = 50..89.\n\t */\n\n\t// Generic Input Messages. Range = 50..59.\n\tUIInteraction: 50,\n\tCommand: 51,\n\n\t// Keyboard Input Message. Range = 60..69.\n\tKeyDown: 60,\n\tKeyUp: 61,\n\tKeyPress: 62,\n\n\t// Mouse Input Messages. Range = 70..79.\n\tMouseEnter: 70,\n\tMouseLeave: 71,\n\tMouseDown: 72,\n\tMouseUp: 73,\n\tMouseMove: 74,\n\tMouseWheel: 75,\n\n\t// Touch Input Messages. Range = 80..89.\n\tTouchStart: 80,\n\tTouchEnd: 81,\n\tTouchMove: 82,\n\n\t// Gamepad Input Messages. Range = 90..99\n\tGamepadButtonPressed: 90,\n\tGamepadButtonReleased: 91,\n\tGamepadAnalog: 92,\n};\n","//@ts-nocheck\n//TODO 重写确保ts不报错\nimport { HasOwner } from \"xbsj-base\";\nimport { PSUEViewer } from \"./PSUEViewer\";\nimport { RECEIVE, SEND } from \"./dataFormats\";\nexport class ESMsgWebSocketWrapper extends HasOwner<PSUEViewer> {\n get esUeViewer() { return this.owner; }\n\n // private _responseEvent = this.disposeVar(new XEvent<[string]>());\n // get responseEvent() { return this._responseEvent; }\n private _processResponseFn = (e: string) => this.esUeViewer.processResponse(e);\n\n get uri() { return this._uri; }\n\n\n private _inner = new WebSocket(this._uri);\n private _innerInit = (() => {\n this.inner.onmessage = (messageEvent) => {\n if (this.isDestroyed())\n return;\n //修改为处理 ue返回的消息,msg是字符串\n //console.log(msg.data);\n let fileReader = new FileReader();\n fileReader.onload = event => {\n if (this.isDestroyed())\n return;\n // @ts-ignore\n let arrayBuffer = event.target.result as ArrayBuffer;\n\n //先解析出来\n // @ts-ignore\n let uint32View = new Uint32Array(arrayBuffer);\n\n let byteOffset = 0;\n if (uint32View[0] === RECEIVE.Response) {\n byteOffset += 4;\n //解析消息个数\n let msgCount = uint32View[byteOffset / 4];\n byteOffset += 4;\n\n for (let i = 0; i < msgCount; i++) {\n let msgSize = uint32View[byteOffset / 4];\n byteOffset += 4;\n let response = new TextDecoder('utf-8').decode(arrayBuffer.slice(byteOffset, byteOffset + msgSize));\n //每个response是个json\n // console.log(response);\n byteOffset += msgSize;\n\n // @ts-ignore\n // TODO\n // that.processResponse(response)\n // this.responseEvent.emit(response);\n this._processResponseFn(response);\n }\n }\n };\n fileReader.readAsArrayBuffer(messageEvent.data);\n }\n\n this.inner.onopen = () => {\n if (this.isDestroyed()) return;\n console.warn(\"earthsdk message websocket server connected:\", this.uri);\n console.log(\"%c[EarthSDK websocket open]\", \"background: #a6ec99; color: black\", `open`);\n\n this.owner.dispatchEvent(new CustomEvent('esmsgwsopen', { detail: 'websocket open' }));\n }\n\n this._inner.onclose = (e) => {\n if (this.isDestroyed()) return;\n console.log(\"%c[EarthSDK websocket close ]\", \"background: red; color: black\", `error`);\n this.owner.dispatchEvent(new CustomEvent('error', { detail: 'websocket close' }));\n }\n\n this._inner.onerror = (e) => {\n if (this.isDestroyed()) return;\n console.log(\"%c[EarthSDK websocket error ]\", \"background: red; color: black\", `error`);\n this.owner.dispatchEvent(new CustomEvent('error', { detail: 'websocket error' }));\n }\n\n this.d(() => { (!this.isDestroyed()) && this._inner.close(); });\n\n })();\n get inner() { return this._inner; }\n\n constructor(owner: PSUEViewer, private _uri: string) {\n super(owner);\n //this.dispose(this.responseEvent.disposableOn(e => this.esUeViewer.processResponse(e)));\n }\n\n sendInputData(data: ArrayBuffer) {\n const esMsgWs = this.inner;\n if (esMsgWs.readyState !== WebSocket.OPEN) return;\n\n const srcBuf = new Uint8Array(data);\n // 判断事件类型,我们只截获鼠标键盘事件,以及ui事件,其他不处理\n const msgType = srcBuf[0];\n if (msgType >= SEND.UIInteraction && msgType <= SEND.MouseWheel) {\n const data2 = new ArrayBuffer(data.byteLength + 4);\n new DataView(data2).setUint32(0, data.byteLength, true);\n new Uint8Array(data2, 4).set(new Uint8Array(data));\n esMsgWs.send(new DataView(data2));\n return true;\n } else {\n return false;\n }\n }\n\n // 发送通用消息\n emitDescriptorWithString(messageType: number, descriptorAsString: string) {\n // Convert the dscriptor object into a JSON string.\n let utf8Array = new TextEncoder().encode(descriptorAsString);\n // Add the UTF-8 JSON string to the array byte buffer, going two bytes at\n // a time. \n let data = new DataView(new ArrayBuffer(1 + 2 + utf8Array.length));\n let byteIdx = 0;\n data.setUint8(byteIdx, messageType);\n byteIdx++;\n data.setUint16(byteIdx, utf8Array.length, true);\n byteIdx += 2;\n\n for (let i = 0; i < utf8Array.length; i++) {\n data.setUint8(byteIdx, utf8Array[i]);\n byteIdx += 1;\n }\n try {\n this.sendInputData(data.buffer);\n } catch (error) {\n console.error(`data.buffer.size: ${data.buffer.byteLength} 独立通道 sendInputData error: ${error}`, error);\n }\n }\n\n destroyImpl() {\n if (this._inner) {\n this._inner.close();\n }\n }\n}\n","//@ts-nocheck\n//TODO 重写确保ts不报错\n\nimport {\n Config,\n Flags,\n Logger,\n NumericParameters,\n PixelStreaming,\n TextParameters\n} from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.2';\nimport { createGuid, Destroyable } from 'xbsj-base';\nimport { ESMsgWebSocketWrapper } from './ESMsgWebSocketWrapper';\nimport { SEND } from './dataFormats';\n\n// @ts-ignore\nwindow.g_emitDescriptor_maxBytes = 30000;\nlet lastSendId = -1;\n//越小,输出的信息越少\nLogger.SetLoggerVerbosity(1);\nexport class PSUEViewer extends Destroyable {\n\n private _eventTarget = new EventTarget();\n get eventTarget() { return this._eventTarget; }\n\n addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: AddEventListenerOptions | boolean) {\n return this.eventTarget.addEventListener(type, callback, options);\n }\n\n removeEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean) {\n return this.eventTarget.removeEventListener(type, callback, options);\n }\n\n dispatchEvent(event: Event) {\n return this.eventTarget.dispatchEvent(event);\n }\n\n public debug = false;\n\n private uiInteractionCallbacks = new Map<string, any>();\n\n private _url = this._options.url;\n\n private _container = (() => {\n const c = typeof this._domOrDomId === 'string' ? document.getElementById(this._domOrDomId) : this._domOrDomId;\n if (!c) throw new Error(`ESUEViewer container${this._domOrDomId} error!`);\n return c;\n })();\n get container() { return this._container; }\n\n private _pixelStream = (() => {\n const config = new Config({\n initialSettings: {\n AutoPlayVideo: true,\n AutoConnect: true,\n StartVideoMuted: true,\n WaitForStreamer: true,\n SuppressBrowserKeys: false,\n [TextParameters.SignallingServerUrl]: this._url,\n }\n })\n config.setFlagEnabled(Flags.BrowserSendOffer, false);\n config.setFlagEnabled(Flags.HoveringMouseMode, true);\n config.setFlagEnabled(Flags.MatchViewportResolution, true);\n //这个重复次数,有可能服务端的streamer还未连接\n // config.setNumericSetting(NumericParameters.MaxReconnectAttempts, 100);\n config.setNumericSetting(NumericParameters.MaxReconnectAttempts, 0);\n // Create a stream and UI\n //const stream = new PixelStreaming(config, { videoElementParent: this.container });\n const stream = new PixelStreaming(config, { videoElementParent: this._options.createUI ? undefined : this.container });\n // stream.connect();\n // stream.setSignallingUrlBuilder\n\n this.d(() => { stream.disconnect(); });\n\n return stream;\n })();\n get pixelStream() { return this._pixelStream; }\n\n private _esMsgWsWrapper?: ESMsgWebSocketWrapper;\n private _esMsgWsWrapperInit = (() => {\n if (!this._options.esmsgWsUri) return;\n this._esMsgWsWrapper = this.disposeVar(new ESMsgWebSocketWrapper(this, this._options.esmsgWsUri));\n // this._esMsgWsWrapper = undefined;\n })();\n get esMsgWsWrapper() { return this._esMsgWsWrapper; }\n\n get esWebSocketReady() {\n return this.esMsgWsWrapper?.inner.readyState === 1;\n }\n\n constructor(\n private _domOrDomId: HTMLDivElement | string,\n private _options: { url: string, esmsgWsUri?: string | undefined, createUI?: boolean | undefined }) {\n super();\n const esueViewer = this;\n if (esueViewer.esMsgWsWrapper) {\n // @ts-ignore\n const originSendData = this.webRtcController.sendMessageController.dataChannelSender.sendData;\n this.webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData = function (data: ArrayBuffer) {\n\n if (esueViewer.esMsgWsWrapper) {\n esueViewer.esMsgWsWrapper.sendInputData(data);\n } else {\n originSendData.call(this, data);\n }\n\n };\n }\n\n //视频初始化成功\n this.pixelStream.addEventListener(\"videoInitialized\", () => {\n\n //发送视频加载成功事件\n console.log(\"%c[EarthSDK webrtc videoInitialized]\", \"background: #a6ec99; color: black\", `videoInitialized`);\n this.dispatchEvent(new CustomEvent('videoinited', { detail: 'videoinited' }))\n });\n\n //监控webrtc连接失败事件\n this.pixelStream.addEventListener(\"webRtcFailed\", () => {\n if (!this.isDestroyed()) {\n console.log(\"%c[EarthSDK webRtc webRtcFailed]\", \"background: red; color: black\", `webRtcFailed`);\n this.dispatchEvent(new CustomEvent('error', { detail: 'webRtcFailed' }));\n this.pixelStream.disconnect();\n }\n // console.log(\"earthsdk esviewer webRtcFailed\");\n });\n //监控信令连接失败事件\n this.pixelStream.addEventListener(\"webRtcDisconnected\", () => {\n if (!this.isDestroyed()) {\n console.log(\"%c[EarthSDK webRtc webRtcDisconnected]\", \"background: red; color: black\", `webRtcDisconnected`);\n this.dispatchEvent(new CustomEvent('error', { detail: 'webRtcDisconnected' }));\n this.pixelStream.disconnect();\n }\n // console.log(\"earthsdk esviewer webRtcDisconnected\");\n });\n\n //监控信令连接成功事件\n this.pixelStream.addEventListener(\"webRtcConnected\", () => {\n if (!this.isDestroyed()) {\n console.log(\"%c[EarthSDK webrtc webRtcConnected]\", \"background: #a6ec99; color: black\", `webRtcConnected`);\n this.dispatchEvent(new CustomEvent('webRtcConnected', { detail: 'webRtcConnected' }));\n }\n // console.log(\"earthsdk esviewer webRtcConnected\");\n });\n\n\n //处理ue事件\n this.pixelStream.addResponseEventListener('esueviewer', (response: string) => {\n this.processResponse(response);\n });\n this.dispose(() => {\n //关闭连接\n if (!this._options.createUI)\n this.container.removeChild(this.webRtcController.videoPlayer.getVideoElement());\n this.pixelStream.disconnect();\n this.pixelStream.removeResponseEventListener('esueviewer');\n });\n }\n\n //处理回调函数\n resolveCallback(text: string) {\n //1, 解析text失败,直接返回\n let retObj = {}\n try {\n retObj = JSON.parse(text)\n } catch (error) {\n return false\n }\n\n //2, 获取 调用id\n // TODO\n // @ts-ignore\n let callid = retObj.callid as string;\n if (typeof callid !== 'string') {\n return false\n }\n\n //3,寻找resolve方法,如果没有,那么也返回false\n if (!this.uiInteractionCallbacks.has(callid)) return false\n\n //类型不对,返回false\n let callback = this.uiInteractionCallbacks.get(callid)\n if (typeof callback !== 'function') {\n return false\n }\n\n // 成功调用,返回true\n callback(retObj)\n this.uiInteractionCallbacks.delete(callid)\n return true\n }\n\n //处理ue发送过来的事件\n processResponse(text: string) {\n\n // vtxf add 20230322\n if (this.debug ?? false) {\n\n try {\n const json = JSON.parse(text);\n // @ts-ignore\n json.ers = json.ers && json.ers.filter(e => e.et !== 'mouseMoveEvent');\n if (!((json.ers && json.ers.length > 0) || (json.frs && json.frs.length > 0))) return;\n\n console.group(\n \"%cUE => JS\",\n \" background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(json, undefined, '')}`,\n \" border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;\"\n );\n console.groupEnd();\n\n } catch (error) {\n console.error(`processResponse(${text}) error: ${error}`, error);\n }\n }\n\n // 如果成功处理调用回调\n if (this.resolveCallback(text)) return;\n // 没有处理成功,直接发送普通的response 事件\n this.dispatchEvent(new CustomEvent('ueevent', { detail: text }))\n\n }\n\n // 发送UI interface\n emitUIInteraction(descriptor: any, callback: any) {\n if (typeof callback == 'function') {\n //生成调用id\n descriptor.callid = createGuid()\n\n //记录回调函数\n this.uiInteractionCallbacks.set(descriptor.callid, callback)\n }\n // this.emitDescriptor(SEND.UIInteraction, descriptor)\n this.pixelStream.emitUIInteraction(descriptor)\n }\n\n private get webRtcController() {\n // @ts-ignore\n const rtcController = this.pixelStream._webRtcController;\n return rtcController;\n }\n\n private _pixelStreamEmitUIInteractionAsString(str: string) {\n // @ts-ignore\n this.webRtcController.streamMessageController.toStreamerHandlers.get(\n 'UIInteraction'\n )([str]);\n }\n\n // 发送UI interface\n emitUIInteractionForBigData(descriptor: any, callback: any) {\n if (typeof callback == 'function') {\n // 生成调用id\n descriptor.callid = createGuid();\n // 记录回调函数\n this.uiInteractionCallbacks.set(descriptor.callid, callback);\n }\n\n // json对象转字符串\n const descriptorAsString = JSON.stringify(descriptor)\n // @ts-ignore\n const maxBytes = window.g_emitDescriptor_maxBytes as number;\n const l = descriptorAsString.length\n\n const currentSendId = ++lastSendId;\n\n //不管是不是独立通信,都使用emitDescriptorWithString发送消息,但是最大截断为maxBytes 30000\n if (this.esMsgWsWrapper) {\n if (l < maxBytes) {\n this.esMsgWsWrapper.emitDescriptorWithString(SEND.UIInteraction, `${currentSendId}-0/1-` + descriptorAsString);\n return\n }\n // 否则就分拆后再发送\n const n = Math.ceil(l / maxBytes) | 0\n const ds = [...new Array(n).keys()].map(i => descriptorAsString.slice(i * maxBytes, (i + 1) * maxBytes))\n ds.forEach((e, i) => {\n this.esMsgWsWrapper && this.esMsgWsWrapper.emitDescriptorWithString(SEND.UIInteraction, `${currentSendId}-${i}/${n}-` + e)\n })\n }\n\n // if (this.esMsgWsWrapper && this.esMsgWsWrapper.inner &&\n // this.esMsgWsWrapper.inner.readyState === WebSocket.OPEN) { // 如果存在独立的ws消息,那么就不分拆消息\n // this.esMsgWsWrapper.emitDescriptorWithString(SEND.UIInteraction, `${currentSendId}-0/1-` + descriptorAsString);\n // return;\n // }\n\n // // 不超过30000走一次搞定\n // // if (l < maxBytes) {\n // if (l < maxBytes) {\n // this._pixelStreamEmitUIInteractionAsString(`${currentSendId}-0/1-` + descriptorAsString)\n // return\n // }\n // // 否则就分拆后再发送\n // const n = Math.ceil(l / maxBytes) | 0\n // const ds = [...new Array(n).keys()].map(i => descriptorAsString.slice(i * maxBytes, (i + 1) * maxBytes))\n // ds.forEach((e, i) => this._pixelStreamEmitUIInteractionAsString(`${currentSendId}-${i}/${n}-` + e))\n }\n\n // UE4 内置命令 目前支持两种\n // 1. 控制台命令:\n // \"{ ConsoleCommand: <string> }\"\n //\n // 2. 设置分辨率.\n // \"{ Resolution.Width: <value>, Resolution.Height: <value> } }\"\n //\n emitCommand(descriptor: object) {\n // this.emitDescriptor(SEND.Command, descriptor)\n this.pixelStream.emitCommand(descriptor);\n }\n\n getVideoSize() {\n const ve = this.webRtcController.videoPlayer.getVideoElement();\n return { width: ve.videoWidth, height: ve.videoHeight };\n }\n\n resizeUEVideo(x: number, y: number) {\n let descriptor = {\n Resolution: {\n Width: x,\n Height: y\n }\n };\n console.log(`resizeUEVideo emitCommand ${x} ${y} begin`);\n this.emitCommand(descriptor);\n }\n}\n","//@ts-nocheck\n//TODO 重写确保ts不报错\nimport { Destroyable, Event as XrEvent } from \"xbsj-base\";\nimport { PSUEViewer } from \"./PSUEViewer\";\n\nexport class PSUEViewerWrapper extends Destroyable {\n private _instance = this.dv(new PSUEViewer(this._container, { url: this._wsuri, esmsgWsUri: this._esmsgWsUri }));\n\n get webSocketReady() {\n return this._instance.esWebSocketReady;\n }\n\n private _event = this.dv(new XrEvent<[eventName: string, eventDetailStr: string]>());\n\n get event() { return this._event; }\n\n get debug() { return this._instance.debug; }\n set debug(value: boolean) { this._instance.debug = value; }\n\n constructor(private _container: HTMLDivElement, private _wsuri: string, private _esmsgWsUri: string | undefined) {\n\n super();\n if ('addEventListener' in this._instance) {\n // const eventNames = [\n // 'error',\n // 'wserror',\n // 'wsclose',\n // 'videoinited',\n // 'ueevent',\n // 'esmsgwsopen',\n // 'esmsgwsclose',\n // 'esmsgwserror',\n // 'disconnected',//ESUEPlayer 断开连接\n // 'webRtcConnected',\n // ];\n\n const eventNames = [\n \"esmsgwsopen\",\n 'error',\n 'videoinited',\n 'ueevent',\n 'webRtcConnected',\n ];\n eventNames.forEach(eventName => {\n const eventFunc = (event: Event) => {\n // @ts-ignore\n this._event.emit(eventName, event.detail as string);\n }\n // @ts-ignore\n this._instance.addEventListener(eventName, eventFunc);\n // @ts-ignore\n this.dispose(() => this._instance.removeEventListener(eventName, eventFunc));\n });\n\n return;\n }\n\n // @ts-ignore\n this.dispose(this._instance.errorEvent.disposableOn(e => {\n // @ts-ignore\n this._event.emit('error', e.detail);\n }));\n // @ts-ignore\n this.dispose(this._instance.webRtcConnectedEvent.disposableOn(e => {\n // @ts-ignore\n this._event.emit('webRtcConnected', e.detail);\n }));\n\n // @ts-ignore\n this.dispose(this._instance.videoinitedEvent.disposableOn(e => {\n // @ts-ignore\n this._event.emit('videoinited', e.detail);\n }));\n // @ts-ignore\n this.dispose(this._instance.ueevent.disposableOn(e => {\n // @ts-ignore\n this._event.emit('ueevent', e.detail);\n }));\n\n // // @ts-ignore\n // this.dispose(this._instance.closeEvent.disposableOn(e => {\n // // @ts-ignore\n // this._event.emit('wsclose', e.detail);\n // }));\n // // @ts-ignore\n // this.dispose(this._instance.esmsgwsopenEvent.disposableOn(e => {\n // // @ts-ignore\n // this._event.emit('esmsgwsopen', e.detail);\n // }));\n // // @ts-ignore\n // this.dispose(this._instance.esmsgwserrorEvent.disposableOn(e => {\n // // @ts-ignore\n // this._event.emit('esmsgwserror', e.detail);\n // }));\n // // @ts-ignore\n // this.dispose(this._instance.esmsgwscloseEvent.disposableOn(e => {\n // // @ts-ignore\n // this._event.emit('esmsgwsclose', e.detail);\n // }));\n // // @ts-ignore\n // this.dispose(this._instance.disconnectedEvent.disposableOn(e => {\n // // @ts-ignore\n // this._event.emit('disconnected', e.detail);\n // }));\n }\n\n emitUIInteractionForBigData(params: any, callback?: (...params: any[]) => void) {\n return new Promise<any[]>((resolve, reject) => {\n const callbackWrapper = (...params: any[]) => {\n resolve(params);\n callback && callback(...params);\n };\n try {\n this._instance.emitUIInteractionForBigData(params, callbackWrapper);\n } catch (error) {\n console.warn(`emitUIInteraction发生错误:${error}`);\n reject(error);\n }\n });\n }\n\n getVideoSize() {\n return this._instance.getVideoSize();\n }\n\n resize(width: number, height: number) {\n // this._instance.resize(width, height);\n this._instance.resizeUEVideo(width, height);\n }\n}\n","\nimport { AttachedPickedInfo, ESJVector2D, ESJVector2DArray, ESJVector3D, ESSceneObject, PickedInfo, PickedResult } from \"@u-gis/core\";\nimport { UeCloudViewerBase } from \"./UeCloudViewerBase\";\nimport { ESFlyToParam, NavigationModeCallFuncParam, UeFuncsType, UePickedInfo } from \"./UeFuncsType\";\n\nconst flyToCallFunc = async (viewer: UeCloudViewerBase, id?: string, duration?: number, flyToParam?: ESFlyToParam, position?: ESJVector3D, flyMode: \"default\" | \"uniform\" = 'default') => {\n const res = await viewer.callUeFunc<UeFuncsType['flyTo']['result']>({\n f: 'flyTo',\n p: { id, duration, flyToParam, position, flyMode }\n })\n if (res.error) {\n console.error(res.error);\n return undefined;\n }\n return res.re;\n}\nconst destroyCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['destroy']['result']>({ f: 'destroy', p: { id } });\n res.error && console.error(res.error);\n return res;\n}\n\nconst calcFlyToParamCallFunc = (viewer: UeCloudViewerBase, id: string) => {\n viewer.callUeFunc<UeFuncsType['calcFlyToParam']['result']>({\n f: 'calcFlyToParam',\n p: { id }\n }).then(res => {\n if (res.error) {\n console.error(`calcFlyToParam:`, res.error)\n }\n }).catch(err => {\n console.error(`calcFlyToParam:`, err)\n })\n}\nconst refreshTilesetCallFunc = (viewer: UeCloudViewerBase, id: string) => {\n viewer.callUeFunc<UeFuncsType['refreshTileset']['result']>({\n f: 'refreshTileset',\n p: { id }\n }).then(res => {\n if (res.error) {\n console.error(`refreshTileset:`, res.error)\n }\n }).catch(err => {\n console.error(`refreshTileset:`, err)\n })\n}\nconst flyInCallFunc = async (viewer: UeCloudViewerBase, id?: string, position?: ESJVector3D, rotation?: ESJVector3D, duration?: number, flyMode: \"default\" | \"uniform\" = 'default') => {\n const res = await viewer.callUeFunc<UeFuncsType['flyIn']['result']>({\n f: 'flyIn',\n p: { id, position, rotation, duration, flyMode }\n })\n if (res.error) {\n console.error(res.error);\n return undefined;\n }\n return res.re;\n}\nconst flyInDefaultCameraCallFunc = async (viewer: UeCloudViewerBase, Duration?: number) => {\n if (!viewer) {\n console.warn('DefaultCameraFlyIn: viewer is undefined')\n return;\n }\n const res = await viewer.callUeFunc<UeFuncsType['DefaultCameraFlyIn']['result']>({\n f: 'DefaultCameraFlyIn',\n p: { Duration: Duration ?? 1 }\n })\n if (res.error) {\n console.error(`DefaultCameraFlyIn:`, res.error)\n return undefined;\n }\n return res;\n}\nconst startVoiceCallFunc = async (viewer: UeCloudViewerBase) => {\n if (!viewer) {\n console.warn('StartVoice:viewer is undefined');\n return;\n }\n const res = await viewer.callUeFunc<UeFuncsType['StartVoice']['result']>({\n f: 'StartVoice',\n p: {}\n })\n if (res.error) {\n console.error(`StartVoice:`, res.error);\n return undefined;\n }\n return res;\n}\nconst stopVoiceCallFunc = async (viewer: UeCloudViewerBase) => {\n if (!viewer) {\n console.warn('StopVoice:viewer is undefined');\n return;\n }\n const res = await viewer.callUeFunc<UeFuncsType['StopVoice']['result']>({\n f: 'StopVoice',\n p: {}\n })\n if (res.error) {\n console.error(`StopVoice:`, res.error);\n return undefined;\n }\n return res;\n}\nconst mountPakFiles = async (viewer: UeCloudViewerBase, pakArr: any[]) => {\n if (!viewer) {\n console.warn('mountPakFiles:viewer is undefined');\n return;\n }\n const res = await viewer.callUeFunc<UeFuncsType['MountPakFiles']['result']>({\n f: 'MountPakFiles',\n p: { json: pakArr }\n })\n if (res.error) {\n console.error(`mountPakFiles:`, res.error);\n return undefined;\n }\n return res;\n}\nconst generateMemReportCallFunc = async (viewer: UeCloudViewerBase) => {\n if (!viewer) {\n console.warn('generateMemReport:viewer is undefined');\n return;\n }\n const res = await viewer.callUeFunc<UeFuncsType['GenerateMemReport']['result']>({\n f: 'GenerateMemReport',\n p: {}\n })\n if (res.error) {\n console.error(`generateMemReport:`, res.error);\n return undefined;\n }\n return res;\n}\nconst resetWithCurrentCameraCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['resetWithCurrentCamera']['result']>({\n f: 'resetWithCurrentCamera',\n p: { id }\n })\n if (res.error) {\n console.error(`resetWithCurrentCamera:`, res.error);\n }\n return res;\n}\nconst smoothMoveWithRotationCallFunc = (viewer: UeCloudViewerBase, id: string, Destination: ESJVector3D, NewRotation: ESJVector3D, Time: number) => {\n viewer.callUeFunc<UeFuncsType['smoothMoveWithRotation']['result']>({\n f: 'smoothMoveWithRotation',\n p: {\n id,\n Destination,\n NewRotation,\n Time\n }\n }).then(res => {\n if (res.error) {\n console.error(`smoothMoveWithRotation:`, res.error)\n }\n }).catch(err => {\n console.error(`smoothMoveWithRotation:`, err)\n })\n}\nconst smoothMoveOnGroundCallFunc = (viewer: UeCloudViewerBase, id: string, Lon: number, Lat: number, Ground: string, Time: number) => {\n viewer.callUeFunc<UeFuncsType['smoothMoveOnGround']['result']>({\n f: 'smoothMoveOnGround',\n p: { id, Lon, Lat, Ground, Time }\n }).then(res => {\n if (res.error) {\n console.error(`smoothMoveOnGround:`, res.error)\n }\n }).catch(err => {\n console.error(`smoothMoveOnGround:`, err)\n })\n}\nconst smoothMoveWithRotationOnGroundCallFunc = (viewer: UeCloudViewerBase, id: string, NewRotation: ESJVector3D, Lon: number, Lat: number, Time: number, Ground: string) => {\n viewer.callUeFunc<UeFuncsType['smoothMoveWithRotationOnGround']['result']>({\n f: 'smoothMoveWithRotationOnGround',\n p: {\n id,\n NewRotation, Lon, Lat, Time, Ground\n }\n }).then(res => {\n if (res.error) {\n console.error(`smoothMoveWithRotationOnGround:`, res.error)\n }\n }).catch(err => {\n console.error(`smoothMoveWithRotationOnGround:`, err)\n })\n}\nconst HighlightFeatureCallFunc = (viewer: UeCloudViewerBase, id: string, HlId: string) => {\n viewer.callUeFunc<UeFuncsType['HighlightFeature']['result']>({\n f: 'HighlightFeature',\n p: { id, HlId }\n }).then(res => {\n if (res.error) {\n console.error(`HighlightFeature:`, res.error)\n }\n }).catch(err => {\n console.error(`HighlightFeature:`, err)\n })\n}\nconst HighlightFeatureAndFlyToCallFunc = (viewer: UeCloudViewerBase, id: string, HlId: string, Duration: number) => {\n viewer.callUeFunc<UeFuncsType['HighlightFeatureAndFlyTo']['result']>({\n f: 'HighlightFeatureAndFlyTo',\n p: { id, HlId, Duration }\n }).then(res => {\n if (res.error) {\n console.error(`HighlightFeatureAndFlyTo:`, res.error)\n }\n }).catch(err => {\n console.error(`HighlightFeatureAndFlyTo:`, err)\n })\n}\nconst SetLayerVisibleCallFunc = (viewer: UeCloudViewerBase, id: string, LayerJson: string) => {\n viewer.callUeFunc<UeFuncsType['SetLayerVisible']['result']>({\n f: 'SetLayerVisible',\n p: { id, LayerJson }\n }).then(res => {\n if (res.error) {\n console.error(`SetLayerVisible:`, res.error)\n }\n }).catch(err => {\n console.error(`SetLayerVisible:`, err)\n })\n}\nconst SetLayerColorCallFunc = (viewer: UeCloudViewerBase, id: string, LayerJson: string) => {\n viewer.callUeFunc<UeFuncsType['SetLayerColor']['result']>({\n f: 'SetLayerColor',\n p: { id, LayerJson }\n }).then(res => {\n if (res.error) {\n console.error(`SetLayerColor:`, res.error)\n }\n }).catch(err => {\n console.error(`SetLayerColor:`, err)\n })\n}\nconst smoothMoveCallFunc = (viewer: UeCloudViewerBase, id: string, Destination: ESJVector3D, Time: number) => {\n viewer.callUeFunc<UeFuncsType['smoothMove']['result']>({\n f: 'smoothMove',\n p: {\n id,\n Destination,\n Time\n }\n }).then(res => {\n if (res.error) {\n console.error(`smoothMove:`, res.error)\n }\n }).catch(err => {\n console.error(`smoothMove:`, err)\n })\n}\nconst callFunctionCallFunc = (viewer: UeCloudViewerBase, id: string, fn: string, p: { [k: string]: any; }) => {\n viewer.callUeFunc<UeFuncsType['callFunction']['result']>({\n f: 'callFunction',\n p: {\n id,\n fn, p\n }\n }).then(res => {\n if (res.error) {\n console.error(`callFunction:`, res.error);\n console.error(`id: ${id} fn: ${fn} param: ${p}`);\n }\n }).catch(err => {\n console.error(`callFunction:`, err)\n console.error(`id: ${id} fn: ${fn} param: ${p}`);\n })\n}\nconst setNodePositionCallFunc = (viewer: UeCloudViewerBase, id: string, NodeName: string, NodePosition: ESJVector3D) => {\n viewer.callUeFunc<UeFuncsType['SetNodePosition']['result']>({\n f: 'SetNodePosition',\n p: {\n id, NodeName, NodePosition\n }\n }).then(res => {\n if (res.error) {\n console.error(`SetNodePosition:`, res.error);\n }\n }).catch(err => {\n console.error(`SetNodePosition:`, err)\n })\n\n}\nconst setNodeRotationCallFunc = (viewer: UeCloudViewerBase, id: string, NodeName: string, NodeRotation: ESJVector3D) => {\n viewer.callUeFunc<UeFuncsType['SetNodeRotation']['result']>({\n f: 'SetNodeRotation',\n p: {\n id, NodeName, NodeRotation\n }\n }).then(res => {\n if (res.error) {\n console.error(`SetNodeRotation:`, res.error);\n }\n }).catch(err => {\n console.error(`SetNodeRotation:`, err)\n })\n\n}\nconst setNodeScaleCallFunc = (viewer: UeCloudViewerBase, id: string, NodeName: string, NodeScale: ESJVector3D) => {\n viewer.callUeFunc<UeFuncsType['SetNodeScale']['result']>({\n f: 'SetNodeScale',\n p: {\n id, NodeName, NodeScale\n }\n }).then(res => {\n if (res.error) {\n console.error(`SetNodeScale:`, res.error);\n }\n }).catch(err => {\n console.error(`SetNodeScale:`, err)\n })\n\n}\nconst changeNavigationModeCallFunc = async (viewer: UeCloudViewerBase, parms: NavigationModeCallFuncParam) => {\n const res = await viewer.callUeFunc<UeFuncsType['ChangeNavigationMode']['result']>({\n f: 'ChangeNavigationMode',\n p: parms\n })\n if (res.error) {\n console.error(`ChangeNavigationMode:`, res.error)\n return undefined;\n }\n return res;\n}\nconst setGlobalPropertyCallFunc = async (viewer: UeCloudViewerBase, params: { [k: string]: any; }) => {\n const res = await viewer.callUeFunc<UeFuncsType['setGlobalProperty']['result']>({\n f: 'setGlobalProperty',\n p: params\n })\n if (res.error) {\n console.error(`setGlobalProperty:`, res.error)\n return undefined;\n }\n return res;\n}\nconst quitCallFunc = async (viewer: UeCloudViewerBase) => {\n const res = await viewer.callUeFunc<UeFuncsType['Quit']['result']>({\n f: 'Quit',\n p: undefined\n })\n if (res.error) {\n console.error(`Quit:`, res.error)\n return undefined;\n }\n return res;\n}\n\nconst pickCallFunc = async (viewer: UeCloudViewerBase, screenPosition_?: [number, number], attachedInfo?: any, parentInfo_?: boolean) => {\n console.log('pickCallFunc', screenPosition_, attachedInfo, parentInfo_);\n const res = await viewer.callUeFunc<UeFuncsType['pick']['result']>({\n f: 'pick',\n p: { screenPosition: screenPosition_, parentInfo: parentInfo_ }\n })\n if (!res.re && (res.error || res.error == \"\")) {\n console.error(`pick:`, res.error == \"\" ? \"未获取到结果\" : res.error);\n return undefined;\n }\n // const pickedInfo = new UePickedInfo(res.re, new AttachedPickedInfo(attachedInfo), res.re.features);\n let id = res.re.id;\n const sceneObject = (id ? ESSceneObject.getSceneObject(id) : undefined) as ESSceneObject | undefined;\n if (sceneObject && Reflect.has(sceneObject, 'allowPicking') && Reflect.has(sceneObject, 'pickedEvent')) {\n //@ts-ignore\n if (sceneObject.allowPicking ?? false) {\n //@ts-ignore\n sceneObject.pickedEvent.emit({ attachedInfo });\n }\n }\n //@ts-ignore\n if (sceneObject && Reflect.has(sceneObject, 'allowPicking') && !sceneObject.allowPicking) {\n return new PickedResult();\n }\n return new PickedResult(res.re, sceneObject, res.re.features, res.re.add, attachedInfo);\n}\n\nconst pickPositionCallFunc = async (viewer: UeCloudViewerBase, screenPosition_?: [number, number]) => {\n const res = await viewer.callUeFunc<UeFuncsType['pickPosition']['result']>({\n f: 'pickPosition',\n p: { screenPosition: screenPosition_ }\n })\n if (!res.re && (res.error || res.error == \"\")) {\n console.error(`pickPosition`, res.error == \"\" ? \"未获取到结果\" : res.error);\n return undefined;\n }\n const { position } = res.re;\n return position;\n}\n\nexport const getHeightByLonLatCallFunc = async (viewer: UeCloudViewerBase, Lon: number, Lat: number, Channel: string = \"ECC_Visibility\") => {\n const res = await viewer.callUeFunc<UeFuncsType['GetHeightByLonLat']['result']>({\n f: 'GetHeightByLonLat',\n p: { Lon, Lat, Channel }\n })\n if (res.error) {\n console.warn(`GetHeightByLonLat:${res.error}`);\n return undefined;\n }\n return res.re;\n}\nexport const getHeightByLonLatsCallFunc = async (viewer: UeCloudViewerBase, LonLats: ESJVector2DArray, Channel: string = \"ECC_Visibility\") => {\n const res = await viewer.callUeFunc<UeFuncsType['GetHeightsByLonLats']['result']>({\n f: 'GetHeightsByLonLats',\n p: { LonLats, Channel }\n })\n if (res.error) {\n console.warn(`GetHeightsByLonLats:${res.error}`);\n return undefined;\n }\n if (res.re.heights.includes(null)) {\n console.warn('注意! GetHeightsByLonLats: 存在高度为null的点. there are points with a height of null');\n }\n try {\n return res.re.heights;\n } catch (error) {\n return undefined;\n }\n}\n\nexport const captureCallFunc = async (viewer: UeCloudViewerBase, resx: number = 64, resy: number = 64) => {\n const res = await viewer.callUeFunc<UeFuncsType['capture']['result']>({\n f: 'capture',\n p: { resx, resy }\n });\n if (res.error) {\n console.warn(res.error);\n return undefined;\n }\n return res.re.image;\n}\nexport const partialCaptureCallFunc = async (viewer: UeCloudViewerBase, startPos: ESJVector2D, size: ESJVector2D = [64, 64]) => {\n const res = await viewer.callUeFunc<UeFuncsType['partialCapture']['result']>({\n f: 'partialCapture',\n p: {\n startPos, size\n }\n });\n if (res.error) {\n console.warn(res.error);\n return undefined;\n }\n return res.re.image;\n}\n\n\nexport const getLonLatAltToScreenPositionCallFunc = async (viewer: UeCloudViewerBase, position: ESJVector3D) => {\n const res = await viewer.callUeFunc<UeFuncsType['LonLatAltToScreenPosition']['result']>({\n f: 'LonLatAltToScreenPosition',\n p: { LonLatAlt: position }\n });\n if (res.error) console.warn(res.error);\n\n return res.re\n}\n\nexport const uePositionToLonLatAltCallFunc = async (viewer: UeCloudViewerBase, UEPosition: ESJVector3D) => {\n const res = await viewer.callUeFunc<UeFuncsType['UEPositionToLonLatAlt']['result']>({\n f: 'UEPositionToLonLatAlt',\n p: { UEPosition }\n });\n if (res.error) {\n console.warn(res.error);\n return undefined;\n }\n return [...res.re.LonLatAlt] as ESJVector3D;\n}\n\nexport const getAllSocketNamesByActorTagCallFunc = async (viewer: UeCloudViewerBase, ActorTag: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetAllSocketNamesByActorTag']['result']>({\n f: 'GetAllSocketNamesByActorTag',\n p: { ActorTag }\n });\n if (res.error) {\n console.warn(res.error);\n return undefined;\n }\n return [...res.re.socketNames] as string[];\n\n}\n\nexport const getVersionCallFunc = async (viewer: UeCloudViewerBase) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetVersion']['result']>({\n f: 'GetVersion',\n p: undefined\n });\n if (res.error) {\n console.warn(`GetVersion:`, res.error);\n return undefined;\n }\n return res.re.version;\n}\n\nexport const getBoundSphereCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetBoundSphere']['result']>({\n f: 'GetBoundSphere',\n p: { id }\n });\n if (res.error) {\n console.warn(res.error);\n return undefined;\n }\n return res.re;\n}\n\nexport const getBoundSphereWithChildrenCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetBoundSphereWithChildren']['result']>({\n f: 'GetBoundSphereWithChildren',\n p: { id }\n });\n if (res.error) {\n console.warn(`GetBoundSphereWithChildren:${res.error}`);\n return undefined;\n }\n return res.re;\n}\n\nexport const getStrokeMaterialParamInfoCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetStrokeMaterialParamInfo']['result']>({\n f: 'GetStrokeMaterialParamInfo',\n p: { id }\n });\n if (res.error) {\n console.warn(`GetStrokeMaterialParamInfo:${res.error}`);\n return undefined;\n }\n return res.re;\n}\nexport const getFillMaterialParamInfoCallFunc = async (viewer: UeCloudViewerBase, id: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetFillMaterialParamInfo']['result']>({\n f: 'GetFillMaterialParamInfo',\n p: { id }\n });\n if (res.error) {\n console.warn(`GetFillMaterialParamInfo:${res.error}`);\n return undefined;\n }\n return res.re;\n}\n\nexport const getGlobalPropertyCallFunc = async (viewer: UeCloudViewerBase, props: string[]) => {\n const res = await viewer.callUeFunc<UeFuncsType['getGlobalProperty']['result']>({\n f: 'getGlobalProperty',\n p: { props }\n })\n if (res.error) {\n console.warn(`getGlobalProperty:${res.error}`);\n return undefined;\n }\n return res.re;\n}\n\nexport const getObjectByInfoCallFunc = async (viewer: UeCloudViewerBase, info: { actorTag: string, componentTag?: string }) => {\n const res = await viewer.callUeFunc<UeFuncsType['GetObjectByInfo']['result']>({\n f: 'GetObjectByInfo',\n p: { info }\n })\n if (res.error) {\n console.warn(`GetObjectByInfo:${res.error}`);\n return undefined;\n }\n return res.re;\n}\n\nexport const bindActorByTagCallFunc = async (viewer: UeCloudViewerBase, ID: string, ActorTag: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['BindActorByTag']['result']>({\n f: 'BindActorByTag',\n p: { ID, ActorTag }\n });\n return res;\n}\n\nexport const restoreOriginalSceneCallFunc = async (viewer: UeCloudViewerBase) => {\n const res = await viewer.callUeFunc<UeFuncsType['RestoreOriginalScene']['result']>({\n f: 'RestoreOriginalScene',\n p: undefined\n });\n return res;\n}\n\nexport const unBindActorByIDCallFunc = async (viewer: UeCloudViewerBase, ID: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['UnBindActorByID']['result']>({\n f: 'UnBindActorByID',\n p: { ID }\n });\n return res;\n}\n\nexport const unBindActorByTagCallFunc = async (viewer: UeCloudViewerBase, ActorTag: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['UnBindActorByTag']['result']>({\n f: 'UnBindActorByTag',\n p: { ActorTag }\n });\n return res;\n}\n\nexport const createActorByClassCallFunc = async (viewer: UeCloudViewerBase, ID: string, ActorClass: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['CreateActorByClass']['result']>({\n f: 'CreateActorByClass',\n p: { ID, ActorClass }\n });\n return res;\n}\n\nexport const bind3DTilesetByTagCallFunc = async function (viewer: UeCloudViewerBase, ID: string, ActorTag: string) {\n const res = await viewer.callUeFunc<UeFuncsType['Bind3DTilesetByTag']['result']>({\n f: 'Bind3DTilesetByTag',\n p: { ID, ActorTag }\n });\n return res;\n}\n\nexport const unBind3DTilesetByTagCallFunc = async function (viewer: UeCloudViewerBase, ActorTag: string) {\n const res = await viewer.callUeFunc<UeFuncsType['UnBind3DTilesetByTag']['result']>({\n f: 'UnBind3DTilesetByTag',\n p: { ActorTag }\n });\n return res;\n}\n\nexport const unBind3DTilesetByIdCallFunc = async function (viewer: UeCloudViewerBase, ID: string) {\n const res = await viewer.callUeFunc<UeFuncsType['UnBind3DTilesetById']['result']>({\n f: 'UnBind3DTilesetById',\n p: { ID }\n });\n return res;\n}\n\nexport const bindImageryByTagCallFunc = async function (viewer: UeCloudViewerBase, ID: string, ActorTag: string, ComponentTag: string) {\n const res = await viewer.callUeFunc<UeFuncsType['BindImageryByTag']['result']>({\n f: 'BindImageryByTag',\n p: { ID, ActorTag, ComponentTag }\n });\n return res;\n}\nexport const unBindImageryByTagCallFunc = async function (viewer: UeCloudViewerBase, ActorTag: string, ComponentTag: string) {\n const res = await viewer.callUeFunc<UeFuncsType['UnBindImageryByTag']['result']>({\n f: 'UnBindImageryByTag',\n p: { ActorTag, ComponentTag }\n });\n return res;\n}\nexport const unBindImageryByIdCallFunc = async function (viewer: UeCloudViewerBase, ID: string) {\n const res = await viewer.callUeFunc<UeFuncsType['UnBindImageryById']['result']>({\n f: 'UnBindImageryById',\n p: { ID }\n });\n return res;\n}\nexport const getIdByComponentNameAndHitItemCallFunc = async function (viewer: UeCloudViewerBase, id: string, ComponentName: string, HitItem: number) {\n const res = await viewer.callUeFunc<UeFuncsType['GetIdByComponentNameAndHitItem']['result']>({\n f: 'GetIdByComponentNameAndHitItem',\n p: { id, ComponentName, HitItem }\n })\n return res;\n}\n\nexport const getCameraRelativeHeightCallFunc = async function (viewer: UeCloudViewerBase, Channel: string = 'ECC_Visibility') {\n const res = await viewer.callUeFunc<UeFuncsType['GetCameraRelativeHeight']['result']>({\n f: 'GetCameraRelativeHeight',\n p: { Channel }\n })\n return res;\n}\n\nexport const saveStringToFileCallFunc = async function (viewer: UeCloudViewerBase, str: string, Path?: string, File?: string) {\n const res = await viewer.callUeFunc<UeFuncsType['SaveStringToFile']['result']>({\n f: 'SaveStringToFile',\n p: {\n String: str,\n Path: Path ?? \"undefine\",\n File: File ?? \"data.txt\"\n }\n })\n if (res.error !== \"\") {\n console.warn('SaveStringToFile: ', res.error);\n }\n return res;\n}\n\nexport const highlightActorByTagCallFunc = async function (viewer: UeCloudViewerBase, actorTag: string, isHighlight: boolean = true) {\n const res = await viewer.callUeFunc<UeFuncsType['HighlightActorByTag']['result']>({\n f: 'HighlightActorByTag',\n p: {\n ActorTag: actorTag,\n Highlight: isHighlight\n }\n })\n if (res.error !== \"\") {\n console.warn('HighlightActorByTag: ', res.error);\n }\n return res;\n}\n\nexport const sendCustomMessageCallFunc = async function (viewer: UeCloudViewerBase, Message: string) {\n const res = await viewer.callUeFunc<UeFuncsType['SendCustomMessage']['result']>({\n f: 'SendCustomMessage',\n p: { Message }\n })\n if (res.error !== \"\") {\n console.warn('SendCustomMessage: ', res.error);\n }\n return res;\n}\n\n\nexport const getStatusCallFunc = async function (viewer: UeCloudViewerBase) {\n const res = await viewer.callUeFunc<UeFuncsType['GetStatus']['result']>({\n f: 'GetStatus',\n p: undefined\n });\n if (res.error) {\n console.warn(`GetStatus:${res.error}`);\n return undefined;\n }\n return res.re;\n}\nexport const startEditingCallFunc = async (viewer: UeCloudViewerBase, sceneObjectID: string, editingID: string, modes: string[] | string, useKeyToSwitch: boolean = true) => {\n const res = await viewer.callUeFunc<UeFuncsType['startEditing']['result']>({\n f: 'startEditing',\n p: {\n sceneObjectID,\n editingID,\n modes,\n useKeyToSwitch\n }\n })\n if (res.error) {\n console.error(`startEditing:`, res.error)\n return undefined;\n }\n return res;\n}\nexport const stopEditingCallFunc = async (viewer: UeCloudViewerBase) => {\n const res = await viewer.callUeFunc<UeFuncsType['stopEditing']['result']>({\n f: 'stopEditing',\n p: undefined\n })\n if (res.error) {\n console.error(`stopEditing:`, res.error)\n return undefined;\n }\n return res;\n}\nexport const moveObjectsCallFunc = async (viewer: UeCloudViewerBase, sceneObjectIDs: string[], editingID: string) => {\n const res = await viewer.callUeFunc<UeFuncsType['moveObjects']['result']>({\n f: 'moveObjects',\n p: {\n sceneObjectIDs,\n editingID\n }\n })\n if (res.error) {\n console.error(`moveObjects:`, res.error)\n return undefined;\n }\n return res;\n}\n\nconst getTilesetMaterialIDListCallFunc = async (viewer: UeCloudViewerBase) => {\n const res = await viewer.callUeFunc<UeFuncsType['getTilesetMaterialIDList']['result']>({\n f: 'GetTilesetMaterialIDList',\n p: undefined\n })\n if (res.error) {\n console.error(`GetTilesetMaterialIDList:`, res.error)\n return undefined;\n }\n return res.re.materialIDList;\n}\n\nexport {\n generateMemReportCallFunc, startVoiceCallFunc, pickCallFunc, stopVoiceCallFunc, HighlightFeatureAndFlyToCallFunc,\n HighlightFeatureCallFunc, SetLayerColorCallFunc, SetLayerVisibleCallFunc, calcFlyToParamCallFunc,\n callFunctionCallFunc, changeNavigationModeCallFunc, destroyCallFunc, flyInCallFunc, flyInDefaultCameraCallFunc,\n flyToCallFunc, pickPositionCallFunc, quitCallFunc, refreshTilesetCallFunc, resetWithCurrentCameraCallFunc,\n setGlobalPropertyCallFunc, setNodePositionCallFunc, setNodeRotationCallFunc, setNodeScaleCallFunc, smoothMoveCallFunc,\n smoothMoveOnGroundCallFunc, smoothMoveWithRotationCallFunc, smoothMoveWithRotationOnGroundCallFunc, mountPakFiles, getTilesetMaterialIDListCallFunc\n};\n\n","import { Destroyable } from \"xbsj-base\";\nimport { UeEventsType } from \"./UeEventsType\";\nimport { UeFuncType } from \"./UeMessage\";\n\nexport abstract class UeCloudViewerBase extends Destroyable {\n abstract callUeFunc<ResultType>(ueFunc: UeFuncType): Promise<ResultType>;\n abstract disposableOnUeEvent<EventType extends keyof UeEventsType>(type: EventType, callback: (params: UeEventsType[EventType]) => void): () => void;\n}\n","import { JsonValue } from \"xbsj-base\";\nimport { UeEventsType } from \"./UeEventsType\";\nimport { ESJVector2D, PickedInfo } from \"@u-gis/core\";\nexport type Vector2D = [number, number]\nexport type ESTreeType = { name: string, mesh: string, cullingDistance: number, scale: number }\nexport type ESXiaoBanWidget = { class: string, pivot: Vector2D, space: number }\nexport type ESPoiType = { type: string, povit: Vector2D, widget: string, worldScale: number, hiddenDistance: number }\nexport type WidthType = \"world\" | \"screen\";\nexport type ESPointStyle = { size: number; sizeType: WidthType; color: [number, number, number, number]; material: string; materialParams: JsonValue; }\nexport type ESStrokeStyle = { width: number; widthType: WidthType; color: [number, number, number, number]; material: string, materialParams: JsonValue }\nexport type ESFillStyle = { color: [number, number, number, number], material: string; materialParams: JsonValue; }\nexport type ESFlyToParam = { distance: number, heading: number, pitch: number, flyDuration: number, hDelta: number, pDelta: number };\n\nexport type NavigationModeCallFuncParam = { mode: 'Map' } |\n{ mode: 'Walk', position: [number, number, number], jumpZVelocity: number } |\n{ mode: 'Line', geoLineStringId: string, speed: number, heightOffset: number, loop: boolean, turnRateDPS: number, lineMode: \"auto\" | \"manual\" } |\n{ mode: 'UserDefined', userDefinedPawn: string } |\n{ mode: 'RotateGlobe', latitude: number, height: number, cycleTime: number } |\n{ mode: 'RotatePoint', position: [number, number, number], distance: number, orbitPeriod: number, heading: number, pitch: number } |\n{ mode: 'Follow', objectId: string, distance: number, heading: number, pitch: number, relativeRotation: boolean }\n\nexport type UeVisualObject = {\n show: boolean;\n flyToParam: ESFlyToParam;\n name: string\n};\n\nexport type UeGeoVector = {\n pointStyle: ESPointStyle;\n pointed: boolean;\n strokeStyle: ESStrokeStyle\n stroked: boolean;\n fillStyle: ESFillStyle\n filled: boolean;\n} & UeVisualObject;\n\nexport type UeObjectWithLocation = {\n rotation: [number, number, number];\n position: [number, number, number];\n} & UeVisualObject;\n\nexport type UeLabel = {\n screenRender: boolean;\n size: [number, number];\n anchor: [number, number];\n sizeByContent: boolean;\n} & UeObjectWithLocation;\n\nexport type UeCreateFuncParams = (Partial<UeVisualObject> & {\n type: 'ESTerrainLayer';\n id: string;\n url?: string;\n actorTag?: string;\n}) | (Partial<UeVisualObject> & {\n type: 'ESImageryLayer';\n id: string;\n url?: string;\n}) | (Partial<UeVisualObject> & {\n type: 'ES3DTileset';\n id: string;\n url?: string;\n}) | (Partial<UeVisualObject> & {\n type: 'ESForestTileset';\n id: string;\n url?: string;\n treeTypes?: ESTreeType[];\n xiaoBanWidget?: ESXiaoBanWidget;\n youShiSZ?: string;\n diLei?: string;\n senLinLB?: string;\n labelMaterial?: string;\n heightOffset?: number\n}) | (Partial<UeVisualObject> & {\n type: 'ESPoiTileset';\n id: string;\n url?: string;\n poiTypes?: ESPoiType[]\n heightOffset?: number\n}) | (Partial<UeVisualObject> & {\n type: 'ESPolygonFence';\n id: string;\n materialPath?: string;\n height?: number;\n points?: [number, number, number][];\n}) | (Partial<UeVisualObject> & {\n type: 'ESPipeFence';\n id: string;\n materialPath?: string;\n height?: number;\n width?: number;\n points?: [number, number, number][];\n}) | (Partial<UeVisualObject> & {\n type: 'ESUEWidget';\n id: string;\n}) | (Partial<UeGeoVector> & {\n type: 'ESGeoLineString';\n id: string;\n points?: [number, number, number][]\n}) | (Partial<UeGeoVector> & {\n type: 'ESPath';\n id: string;\n points?: [number, number, number][]\n}) | (Partial<UeGeoVector> & {\n type: 'ESSpline';\n id: string;\n points?: [number, number, number][],\n strokeMaterialPath?: string;\n}) | (Partial<UeGeoVector> & {\n type: 'ESGeoPolygon';\n id: string;\n points?: [number, number, number][]\n}) | (Partial<UeObjectWithLocation> & {\n type: 'ESCameraView';\n id: string;\n}) | (Partial<UeObjectWithLocation> & {\n type: 'ESGltfModel';\n id: string;\n url?: string\n}) | (Partial<UeObjectWithLocation> & {\n type: \"ESUnrealActor\",\n id: string;\n actorTag?: string;\n opacity?: number;\n actorClass?: string;\n highlight?: boolean;\n collision?: boolean;\n allowPicking?: boolean;\n}) | (Partial<UeLabel> & {\n type: 'ESTextLabel';\n id: string;\n text?: string;\n color?: [number, number, number, number];\n}) | (Partial<UeLabel> & {\n type: 'ESImageLabel';\n id: string;\n url?: string;\n}) | (Partial<UeObjectWithLocation> & {\n type: 'ESLocalPolygonZ';\n id: string;\n color?: [number, number, number, number];\n outline?: boolean;\n outlineColor?: [number, number, number, number];\n outlineWidth?: number;\n}) | (Partial<UeObjectWithLocation> & {\n type: 'ESLocalPolygon';\n id: string;\n points?: [number, number][]\n}) | (Partial<UeObjectWithLocation> & {\n type: 'ESLocalCircle';\n id: string;\n radius?: number;\n}) | {\n type: 'ESPipeserTileset';\n id: string;\n} | { type: string, id: string };\n\nexport type UeFuncsType = {\n create: {\n params: UeCreateFuncParams;\n result: { error: string | undefined; }\n };\n SendCustomMessage: {\n params: { Message: string; };\n result: { error: string | undefined; }\n };\n BindActorByTag: {\n params: {\n ID: string,\n ActorTag: string\n },\n result: {\n re: { type: number },\n error: string | undefined;\n }\n };\n UnBindActorByID: {\n params: { ID: string },\n result: { error: string | undefined; }\n };\n UnBindActorByTag: {\n params: { ActorTag: string },\n result: { error: string | undefined; }\n };\n CreateActorByClass: {\n params: {\n ID: string,\n ActorClass: string\n },\n result: {\n re: { type: number },\n error: string | undefined;\n }\n };\n destroy: {\n params: { id: string; };\n result: { error: string | undefined; };\n };\n update: {\n params: { id: string;[k: string]: any; };\n result: { error: string | undefined; };\n };\n addEventListener: {\n params: { eid: string; et: keyof UeEventsType };\n result: { error: string | undefined; };\n };\n removeEventListener: {\n params: { eid: string; };\n result: { error: string | undefined };\n };\n RestoreOriginalScene: {\n params: undefined,\n result: {\n error: string | undefined;\n }\n };\n GetIdByComponentNameAndHitItem: {\n params: {\n id: string,\n ComponentName: string,\n HitItem: number\n },\n result: {\n re: { TreeId: string },\n error: string | undefined;\n }\n },\n flyTo: {\n params: {\n id?: string,\n duration?: number,\n flyToParam?: ESFlyToParam;\n position?: [number, number, number]\n };\n result: {\n error: string | undefined;\n re: { endType: 0 | 1 }\n }\n };\n flyIn: {\n params: {\n id?: string\n position?: [number, number, number],\n rotation?: [number, number, number],\n duration?: number\n };\n result: {\n error: string | undefined;\n re: { endType: 0 | 1 }\n }\n };\n GetObjectByInfo: {\n params: { info: { actorTag: string, componentTag?: string } };\n result: {\n re: {\n object?: { type: string, [k: string]: any; }\n },\n error: string | undefined;\n }\n };\n GetHeightByLonLat: {\n params: { Lon: number, Lat: number, Channel: string };\n result: {\n re: {\n height?: number\n },\n error: string | undefined;\n }\n };\n getCurrentCameraInfo: {\n params: undefined,\n result: {\n re: {\n position: [number, number, number],\n rotation: [number, number, number],\n },\n error: string | undefined;\n }\n };\n GetFPS: {\n params: undefined,\n result: {\n re: {\n FPS: number\n },\n error: string | undefined;\n }\n };\n GetStatus: {\n params: undefined,\n result: {\n re: {\n FPS: number,\n position: [number, number, number],\n rotation: [number, number, number],\n length: number\n },\n error: string | undefined;\n }\n }\n LonLatAltToScreenPosition: {\n params: {\n LonLatAlt: [number, number, number];\n },\n result: {\n re: {\n X: number\n Y: number\n },\n error: string | undefined;\n }\n };\n ChangeNavigationMode: {\n params: NavigationModeCallFuncParam,\n result: {\n error: string | undefined;\n }\n };\n resetWithCurrentCamera: {\n params: { id: string },\n result: { error: string | undefined; }\n };\n capture: {//截图\n params: { resx: number, resy: number },\n result: {\n re: {\n image: string\n }\n error: string | undefined;\n }\n };\n partialCapture: {//截图\n params: { startPos: ESJVector2D, size: ESJVector2D },\n result: {\n re: {\n image: string\n }\n error: string | undefined;\n }\n };\n setGlobalProperty: {\n params: { [k: string]: any; },\n result: { error: string | undefined; }\n },\n getGlobalProperty: {\n params: { props: string[] },\n result: {\n re: {\n [k: string]: any;\n }\n error: string | undefined;\n }\n },\n calcFlyToParam: {\n params: { id: string },\n result: { error: string | undefined; }\n },\n pick: {\n params: { screenPosition?: [number, number], parentInfo?: boolean },\n result: {\n re: {\n id?: string;//拾取到的对象id,没拾取到为 ''\n position?: [number, number, number];//经纬高\n screenPosition?: [number, number];\n actorTags?: string[],\n className?: string,\n parentInfo?: { name?: string, className?: string, actorTags?: string[] }[],\n features?: { [k: string]: any; }\n hitItem?: number;\n componentName?: string;\n add?: { [key: string]: any };\n [key: string]: any,\n },\n error: string | undefined;\n }\n },\n pickPosition: {\n params: { screenPosition?: [number, number], parentInfo?: boolean },\n result: {\n re: {\n position: [number, number, number];//经纬高\n },\n error: string | undefined;\n }\n }\n callFunction: {\n params: {\n id: string,\n fn: string,\n p: {\n [k: string]: any;\n }\n },\n result: { error: string | undefined; }\n },\n\n smoothMove: {\n params: { id: string, Destination: [number, number, number], Time: number },\n result: {\n error: string | undefined;\n }\n },\n smoothMoveWithRotation: {\n params: { id: string, Destination: [number, number, number], NewRotation: [number, number, number], Time: number },\n result: { error: string | undefined; }\n },\n\n smoothMoveOnGround: {\n params: { id: string, Lon: number, Lat: number, Time: number, Ground: string },\n result: { error: string | undefined; }\n },\n smoothMoveWithRotationOnGround: {\n params: { id: string, NewRotation: [number, number, number], Lon: number, Lat: number, Time: number, Ground: string },\n result: { error: string | undefined; }\n },\n UEPositionToLonLatAlt: {\n params: {\n UEPosition: [number, number, number] //ue坐标,\n },\n result: {\n re: {\n LonLatAlt: [number, number, number];//经纬高\n },\n error: string | undefined;\n }\n },\n GetAllSocketNamesByActorTag: {\n params: {\n ActorTag: string,\n },\n result: {\n re: {\n socketNames: string[];//插槽名集合\n },\n error: string | undefined;\n }\n },\n refreshTileset: {\n params: { id: string },\n result: {\n error: string | undefined;\n }\n },\n HighlightFeature: {\n params: { id: string, HlId: string },\n result: {\n error: string | undefined;\n }\n },\n HighlightFeatureAndFlyTo: {\n params: { id: string, HlId: string, Duration: number },\n result: {\n error: string | undefined;\n }\n },\n SetLayerVisible: {\n params: { id: string, LayerJson: string },\n result: {\n error: string | undefined;\n }\n },\n SetLayerColor: {\n params: { id: string, LayerJson: string },\n result: {\n error: string | undefined;\n }\n },\n DefaultCameraFlyIn: {\n params: { Duration: number },\n result: {\n error: string | undefined;\n }\n },\n GetBoundSphere: {\n params: { id: string },\n result: {\n re: {\n center?: [number, number, number],\n radius?: number,\n tips?: string,\n }\n error: string | undefined;\n }\n },\n GetBoundSphereWithChildren: {\n params: { id: string },\n result: {\n re: {\n center?: [number, number, number],\n radius?: number,\n tips?: string,\n }\n error: string | undefined;\n }\n },\n Quit: {\n params: undefined,\n result: {\n error: string | undefined;\n }\n },\n GetStrokeMaterialParamInfo: {\n params: { id: string },\n result: {\n re: {\n params?: { name: string, type: string, value: number | [number, number, number, number] }[]\n },\n error: string | undefined;\n }\n },\n GetFillMaterialParamInfo: {\n params: { id: string },\n result: {\n re: {\n params?: { name: string, type: string, value: number | [number, number, number, number] }[]\n },\n error: string | undefined;\n }\n },\n GetVersion: {\n params: undefined,\n result: {\n re: { version: string },\n error: string | undefined;\n }\n },\n Bind3DTilesetByTag: {\n params: {\n ID: string,\n ActorTag: string\n },\n result: {\n re: { type: number },\n error: string | undefined;\n }\n },\n UnBind3DTilesetByTag: {\n params: {\n ActorTag: string\n },\n result: {\n error: string | undefined;\n }\n },\n UnBind3DTilesetById: {\n params: {\n ID: string\n },\n result: {\n error: string | undefined;\n }\n },\n BindImageryByTag: {\n params: {\n ID: string,\n ActorTag: string,\n ComponentTag: string\n },\n result: {\n re: { type: number },\n error: string | undefined;\n }\n },\n UnBindImageryByTag: {\n params: {\n ActorTag: string,\n ComponentTag: string\n },\n result: {\n error: string | undefined;\n }\n },\n UnBindImageryById: {\n params: {\n ID: string\n },\n result: {\n error: string | undefined;\n }\n },\n GetHeightsByLonLats: {\n params: {\n LonLats: [number, number][],\n Channel: string\n },\n result: {\n re: {\n heights: (number | null)[]\n },\n error: string | undefined;\n }\n },\n // SetSpeechRecognitionKeys: {\n // params: {\n // APIKey: string\n // SecretKey: string\n // },\n // result: {\n // error: string | undefined;\n // }\n // },\n //获取当前相机相对高度\n GetCameraRelativeHeight: {\n params: {\n Channel: string\n },\n result: {\n re: {\n height: number\n },\n error: string | undefined;\n }\n },\n SaveStringToFile: {\n params: {\n String: string,\n Path?: string,//WindowNoEditor\\ProjectName\\\n File?: string\n },\n result: {\n error: string | undefined;\n }\n },\n SetNodePosition: {\n params: {\n id: string,\n NodeName: string,\n NodePosition: [number, number, number]\n },\n result: {\n error: string | undefined;\n }\n },\n SetNodeRotation: {\n params: {\n id: string,\n NodeName: string,\n NodeRotation: [number, number, number]\n },\n result: {\n error: string | undefined;\n }\n },\n SetNodeScale: {\n params: {\n id: string,\n NodeName: string,\n NodeScale: [number, number, number]\n },\n result: {\n error: string | undefined;\n }\n },\n HighlightActorByTag: {\n params: {\n ActorTag: string\n Highlight: boolean\n },\n result: {\n error: string | undefined;\n }\n },\n GetLengthInPixel: {\n params: undefined,\n result: {\n re: {\n length: number\n },\n error: string | undefined;\n }\n },\n startEditing: {\n params: {\n sceneObjectID: string,\n editingID: string,\n modes: string[] | string,\n useKeyToSwitch?: boolean\n },\n result: {\n error: string | undefined;\n }\n },\n stopEditing: {\n params: undefined,\n result: {\n error: string | undefined;\n }\n },\n moveObjects: {\n params: {\n sceneObjectIDs: string[],\n editingID: string,\n },\n result: {\n error: string | undefined;\n }\n },\n getTilesetMaterialIDList: {\n params: undefined,\n result: {\n re: {\n materialIDList: string[]\n }\n error: string | undefined;\n }\n },\n [k: string]: {\n params: { [k: string]: any } | undefined;\n result: { [k: string]: any }\n }\n\n}\n\n\nexport class UePickedInfo extends PickedInfo {\n constructor(\n public uePickResult?: UeFuncsType['pick']['result']['re'],\n childPickedInfo?: PickedInfo,\n public tilesetPickInfo?: any\n ) {\n super(childPickedInfo);\n }\n}\n","/** \n * custom PixelStream 自定义像素流\n * ESSS v3.0.0 版本以后,返回信息中会附带 instanceId 属性,默认开启独立通信+官方像素流\n * 1. 已有连接server 后 new PixelStreaming(...server) , 创建官方像素流\n * 2. esmsg会用来新建一个 new WebSocket(esmsg) 简称 esMsgWsWrapper;\n * 3. 利用 esMsgWsWrapper来覆盖官方像素流服务中的消息发送this.pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData\n * 4. viewer的鼠标事件来自于UE消息\n * \n * {\n \"server\": \"ws://localhost:9105\",\n \"instanceId\": \"c8806df8-7f39-4df2-bb35-b473c9063ec2\",\n \"esmsg\": \"ws://localhost:9107/esmsg\",\n \"status\": \"ok\"\n}\n */\n\nimport { createGuid, createNextAnimateFrameEvent, Event, react, createAnimateFrame, createInterval } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../index\";\nimport { PSUEViewerWrapper } from \"./PSUEViewerWrapper\";\nimport { UeCloudViewerBase, UeEventsType, UeCallResultType, UeCallType, UeEventResultType, UeFuncResultWithIdType, UeFuncType, UeFuncWithIdType } from \"../../uemsg\";\n\nexport class CSTMPSViewer extends UeCloudViewerBase {\n private _esueViewerWrapper: PSUEViewerWrapper;\n get esueViewerWrapper() { return this._esueViewerWrapper; }\n\n private _ueFuncResultWithIdsEvent = this.dv(new Event<[ueFuncResultWithIds: UeFuncResultWithIdType[]]>());\n\n private _ueFuncWithIdAndResultCallbacks: [ueFuncWithId: UeFuncWithIdType, rresultCallbackAndUeFunc: { timeStamp: number, ueFunc: UeFuncType, resultCallback: (result: any) => void }][] = [];\n private _waitingUeFuncIdAndResultCallbacks: Map<string, { timeStamp: number, ueFunc: UeFuncType, resultCallback: (result: any) => void }> = new Map();\n\n private _waitingUeCalls: Set<UeCallType> = new Set();\n\n private _ueEvent = this.dv(new Event<[ueEvent: UeEventResultType]>());\n\n private _errorEvent = this.dv(new Event<[string]>());\n get errorEvent() { return this._errorEvent; }\n\n // private _closeEvent = this.dv(new Event<[string]>());\n // get closeEvent() { return this._closeEvent; }\n\n private _readyEvent = this.dv(new Event());\n get readyEvent() { return this._readyEvent; }\n\n private _esmsgwsopen = this.dv(react<boolean>(false));\n get esmsgwsopen() { return this._esmsgwsopen.value; }\n set esmsgwsopen(value: boolean) { this._esmsgwsopen.value = value; }\n get esmsgwsopenChanged() { return this._esmsgwsopen.changed; }\n\n private _videoinited = this.dv(react<boolean>(false));\n get videoinited() { return this._videoinited.value; }\n set videoinited(value: boolean) { this._videoinited.value = value; }\n get videoinitedChanged() { return this._videoinited.changed; }\n\n private _webRtcConnected = this.dv(react(false));\n get webRtcConnected() { return this._webRtcConnected.value; }\n set webRtcConnected(value: boolean) { this._webRtcConnected.value = value; }\n get webRtcConnectedChanged() { return this._webRtcConnected.changed; }\n\n resize(width: number, height: number) {\n this.esueViewerWrapper.resize(width, height);\n }\n\n constructor(container: HTMLDivElement, wsUri: string, esmsgWsUri: string | undefined, private _ueViewer: ESUeViewer) {\n super();\n console.log(`CSTMPSViewer init ! 以官方像素流 + 独立通信的模式启动!`);\n const ueViewer = this._ueViewer;\n this._esueViewerWrapper = this.dv(new PSUEViewerWrapper(container, wsUri, esmsgWsUri));\n\n const esueViewerWrapper = this._esueViewerWrapper;\n\n {\n const update = () => esueViewerWrapper.debug = ueViewer.debug ?? false;\n update();\n this.d(ueViewer.debugChanged.don(update));\n }\n\n let ready = false;\n\n {\n const init = () => {\n if (ready) return;\n const wsReady = esueViewerWrapper.webSocketReady;\n if (this.videoinited && this.webRtcConnected && wsReady) {\n console.log(\"%c[EarthSDK: esmsgWebSocket && videoinited && webRtcConnected]\", \"background: #a6ec99; color: black\");\n const param = { eventType: 'init', params: {} };\n esueViewerWrapper.emitUIInteractionForBigData(param);\n this._readyEvent.emit();\n ready = true;\n }\n }\n\n this.d(this.videoinitedChanged.don(() => { init() }));\n this.d(this.webRtcConnectedChanged.don(() => { init() }));\n this.d(this.esmsgwsopenChanged.don(() => { init() }));\n\n }\n\n this.d(esueViewerWrapper.event.don((eventName, eventDetailStr) => {\n if (eventName === 'error') {\n this._errorEvent.emit(eventDetailStr);\n } else if (eventName === 'ueevent') {\n const detailJson = JSON.parse(eventDetailStr);\n if (detailJson.t === 'cr') {\n const ueCallResult = detailJson as UeCallResultType;\n ueCallResult.frs && this._ueFuncResultWithIdsEvent.emit(ueCallResult.frs);\n if (ueCallResult.ers) {\n for (let er of ueCallResult.ers) {\n this._ueEvent.emit(er);\n }\n }\n }\n\n } else if (eventName === 'webRtcConnected') {\n this.webRtcConnected = true;\n } else if (eventName === 'videoinited') {\n this.videoinited = true;\n } else if (eventName === 'esmsgwsopen') {\n this.esmsgwsopen = true;\n }\n }));\n\n {\n const animate = this.dv(createAnimateFrame());\n let lastWidth: number | undefined;\n let lastHeight: number | undefined;\n\n animate.start(() => {\n if (!(lastWidth !== container.offsetWidth || lastHeight !== container.offsetHeight)) {\n return;\n }\n lastWidth = container.offsetWidth;\n lastHeight = container.offsetHeight;\n if (lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0) {\n console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${lastWidth} ${lastHeight}`);\n return;\n }\n esueViewerWrapper.resize(lastWidth, lastHeight);\n console.log(`resize: ${lastWidth} ${lastHeight}`);\n });\n }\n\n this.d(this._ueFuncResultWithIdsEvent.don(ueFuncResultWithIds => {\n for (const ueFuncResultWithId of ueFuncResultWithIds) {\n const resultCallbackAndUeFunc = this._waitingUeFuncIdAndResultCallbacks.get(ueFuncResultWithId.fid);\n if (!resultCallbackAndUeFunc) {\n continue;\n }\n this._waitingUeFuncIdAndResultCallbacks.delete(ueFuncResultWithId.fid);\n resultCallbackAndUeFunc.resultCallback(ueFuncResultWithId.r);\n }\n }));\n\n let ueCallLastNum = 0;\n const processUnitMessage = (fs: UeFuncWithIdType[]) => {\n const ueCall: UeCallType = {\n n: ueCallLastNum++,\n tt: Date.now(),\n t: 'c',\n fs,\n };\n\n this._waitingUeCalls.add(ueCall);\n if (ueViewer.debug) {\n console.group(\n \"%cxe2 => ue\",\n \" background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(ueCall, undefined, '')}`,\n \" border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;\"\n );\n console.groupEnd();\n\n // console.log(`xe2期待的返回结果类似:\\n${JSON.stringify({\n // \"t\": \"cr\",\n // \"frs\": ueCall.fs.map(e => ({\n // fid: e.fid,\n // r: {\n // error: '',\n // }\n // })),\n // \"ers\": [{\n // et: 'click',\n // eid: 'abcedf(当前事件的id)',\n // objId: 'eeccsd(点击的对象ID)',\n // cartesianIn3D: [100, 145, 324],\n // screenPosition: [100, 200],\n // }, {\n // et: 'dbclick',\n // eid: 'abcedf(当前事件的id)',\n // objId: 'eeccsd(点击的对象ID)',\n // cartesianIn3D: [100, 145, 324],\n // screenPosition: [100, 200],\n // }]\n // }, undefined, ' ')}\n // `)\n // console.log('');\n }\n // this._esueViewerWrapper.emitUIInteractionForBigData(ueCall);\n this._esueViewerWrapper.emitUIInteractionForBigData(ueCall, () => {\n this._waitingUeCalls.delete(ueCall);\n });\n }\n\n const processMessage = () => {\n if (!ready) return;\n if (this._ueFuncWithIdAndResultCallbacks.length === 0) return;\n\n const fs = this._ueFuncWithIdAndResultCallbacks.map((([e]) => e));\n\n for (const [ueFuncWithId, resultCallbackAndUeFunc] of this._ueFuncWithIdAndResultCallbacks) {\n this._waitingUeFuncIdAndResultCallbacks.set(ueFuncWithId.fid, resultCallbackAndUeFunc);\n }\n this._ueFuncWithIdAndResultCallbacks.length = 0;\n\n // 每十个消息一起发送。。\n // const fsl = fs.length;\n // for (let i = 0; i < fsl; i += 10) {\n // const end = i + 10 < fsl ? i + 10 : fsl; \n // const fss = fs.slice(i, end);\n // processUnitMessage(fss);\n // }\n\n {\n // 消息发送机制改进,每个消息块不超过30000字节!\n // 64501\n // const maxBytes = 30000;\n // @ts-ignore;\n const maxBytes = window.g_emitDescriptor_maxBytes;\n const fsWithSize = fs.map(e => ({ f: e, s: JSON.stringify(e).length }));\n\n let l = fsWithSize.length;\n let i = 0;\n let currentSize = 0;\n let currentFs: UeFuncWithIdType[] = [];\n do {\n do {\n const { f, s } = fsWithSize[i];\n // if (s > maxBytes) {\n // console.error(`消息体过大,无法传送!s > maxBytes error!, 此处直接跳过!!`, f);\n // ++i;\n // } else if (currentSize + s < maxBytes && currentFs.length < 20) {\n // currentFs.push(f);\n // ++i;\n // } else {\n // break;\n // }\n // 消息体超大也要加\n currentFs.push(f);\n ++i;\n if (currentSize + s > maxBytes || currentFs.length >= 20) {\n break;\n }\n } while (i < l);\n\n if (currentFs.length > 0) {\n ueViewer.debug && console.log(`传送${currentFs.length}条消息...`)\n // console.log(`传送${currentFs.length}条消息...`)\n processUnitMessage([...currentFs]);\n currentFs.length = 0;\n currentSize = 0;\n }\n } while (i < l);\n }\n };\n\n const interalProcessing = this.dv(createInterval());\n interalProcessing.start(processMessage, 50);\n\n this.d(() => console.log(`UeCloudViewer正在销毁...`));\n }\n\n callUeFunc<ResultType>(ueFunc: UeFuncType) {\n // if (this._ueViewer.debug ?? false) {\n // console.log(`callUeFunc from UeCloudViewer: ${JSON.stringify(ueFunc)}`);\n // }\n return new Promise<ResultType>(resolve => {\n const fid = createGuid();\n const ueFuncWithId: UeFuncWithIdType = { fid, ...ueFunc };\n this._ueFuncWithIdAndResultCallbacks.push([ueFuncWithId, { timeStamp: Date.now(), ueFunc, resultCallback: resolve }]);\n });\n }\n\n disposableOnUeEvent<EventType extends keyof UeEventsType>(type: EventType, callback: (params: UeEventsType[EventType]) => void) {\n if (this._ueViewer.debug ?? false) {\n console.log(`disposableOnUeEvent from UeCloudViewer, type:${type}`);\n }\n\n const eid = createGuid();\n this.callUeFunc({\n f: 'addEventListener',\n p: {\n et: type,\n eid,\n }\n });\n\n const remove = () => {\n this.callUeFunc({\n f: 'removeEventListener',\n p: {\n eid,\n }\n });\n };\n\n const d = this._ueEvent.don(ueEvent => {\n if (ueEvent.et === type && ueEvent.eid === eid) {\n callback(ueEvent as UeEventsType[EventType]);\n }\n });\n\n return () => {\n d();\n remove();\n };\n }\n}\n","export function arrayBufferToBase64(buffer: ArrayBuffer): string {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.length;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n\nexport const createMsgInput = (inputdata: ArrayBuffer) => {\n const data = {\n type: \"input\",\n inputdata: arrayBufferToBase64(inputdata)\n }\n return JSON.stringify(data);\n}\n\nexport function getContainer(container: string | HTMLDivElement | HTMLElement): HTMLDivElement {\n if (typeof container === 'string') {\n return document.getElementById(container) as HTMLDivElement;\n } else {\n return container as HTMLDivElement;\n }\n}\n\n","import {\n Config, Flags, Logger, NumericParameters, PixelStreaming,\n PixelStreamingEvent\n} from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.2';\n\nimport { createGuid, Destroyable, Event } from \"xbsj-base\";\nimport { createMsgInput, getContainer } from './createMsgInput';\nimport { MessageDirection } from '@epicgames-ps/lib-pixelstreamingfrontend-ue5.2/types/UeInstanceMessage/StreamMessageController';\n\n// @ts-ignore\nwindow.g_emitDescriptor_maxBytes = 30000;\nconsole.log('全局可设置消息体最大字节, window.g_emitDescriptor_maxBytes 默认 30000 。');\nlet lastSendId = -1;\n//越小,输出的信息越少\nLogger.SetLoggerVerbosity(1);\n\nexport class WebRtcManager extends Destroyable {\n public debug = false;\n\n private _error = this.dv(new Event<['webRtcDisconnected' | 'webRtcFailed' | 'webSocketClose' | 'webSocketError']>());\n get error() { return this._error; }\n\n private _connected = this.dv(new Event<['videoInitialized' | 'webRtcConnected' | 'webSocketOpen']>());\n get connected() { return this._connected; }\n\n private _ueevent = this.dv(new Event<[string]>());\n get ueevent() { return this._ueevent; }\n\n get container() { return getContainer(this._container) }\n\n private _pixelStream: PixelStreaming;\n get pixelStream() { return this._pixelStream; }\n\n get webSocketReady() { return this.pixelStream.webSocketController.webSocket.readyState === 1; }\n //处理ue返回的数据\n processResponse(text: string) {\n if (this.debug ?? false) {\n try {\n const json = JSON.parse(text);\n console.group(\n \"%cUE => JS\",\n \" background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(json, undefined, '')}`,\n \" border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;\"\n );\n console.groupEnd();\n } catch (error) {\n console.error(`processResponse(${text}) error: ${error}`, error);\n }\n }\n\n // 如果成功处理调用回调\n if (this.resolveCallback(text)) return;\n // 没有处理成功,直接发送普通的response 事件\n this.ueevent.emit(text)\n }\n\n //大数据拆分\n emitUIInteractionForBigData(descriptor: { [k: string]: any }, callback: any) {\n if (typeof callback == 'function') {\n descriptor.callid = createGuid();\n this.uiInteractionCallbacks.set(descriptor.callid, callback);\n }\n const descriptorAsString = JSON.stringify(descriptor);\n // @ts-ignore\n const maxBytes = (window.g_emitDescriptor_maxBytes ?? 30000) as number;\n const l = descriptorAsString.length\n const currentSendId = ++lastSendId;\n /**\n *`${currentSendId}-${i}/${n}-` 解释\n * currentSendId: 当前发送的消息序号, 从 0 开始\n * i: 当前发送的包的序号是第几份,从 0 开始,配合n可以知道当前是第几份\n * n: 消息拆分为几份,为 1 时表示没拆分\n */\n if (l < maxBytes) {\n const info = {\n type: \"earthsdk\", time: new Date().getTime(), params: `${currentSendId}-0/1-` + descriptorAsString\n };\n this.sendData(JSON.stringify(info));\n return\n }\n // 否则就分拆后再发送\n const n = Math.ceil(l / maxBytes) | 0\n const ds = [...new Array(n).keys()].map(i => descriptorAsString.slice(i * maxBytes, (i + 1) * maxBytes))\n ds.forEach((e, i) => {\n const info = { type: \"earthsdk\", time: new Date().getTime(), params: `${currentSendId}-${i}/${n}-` + e };\n this.sendData(JSON.stringify(info));\n })\n }\n\n sendData(descriptorAsString: string) {\n this.pixelStream.webSocketController.webSocket.send(descriptorAsString);\n }\n\n constructor(\n private _container: HTMLDivElement | string,\n private _option: { ws: string, esmsg?: string }) {\n super();\n\n const config = new Config({\n initialSettings: {\n HoveringMouse: true,\n AutoPlayVideo: true,\n AutoConnect: true,\n StartVideoMuted: false,\n // WaitForStreamer: true,\n SuppressBrowserKeys: false,\n ss: this._option.ws,\n },\n useUrlParams: true,\n })\n config.setFlagEnabled(Flags.BrowserSendOffer, false);\n config.setFlagEnabled(Flags.HoveringMouseMode, true);\n config.setFlagEnabled(Flags.MatchViewportResolution, true);\n //这个重复次数,有可能服务端的streamer还未连接\n config.setNumericSetting(NumericParameters.MaxReconnectAttempts, 0);\n this._pixelStream = new PixelStreaming(config, { videoElementParent: this.container });\n\n //销毁时断开连接\n this.d(() => { this._pixelStream.disconnect(); });\n\n //input事件覆盖\n {\n // const setSendData = () => {\n const webSocket = this.pixelStream.webSocketController.webSocket;\n //@ts-ignore\n const originSendData = this._pixelStream._webRtcController.sendMessageController.dataChannelSender.sendData;\n //@ts-ignore\n this._pixelStream._webRtcController.sendMessageController.dataChannelSender.constructor.prototype.sendData = function (data: ArrayBuffer) {\n // try {\n if (webSocket) {\n webSocket.send(createMsgInput(data));\n } else {\n originSendData.call(this, data);\n }\n // webSocket && webSocket.send(createMsgInput(data));\n // } catch (error) {\n // // 如果需要,调用原始的sendData方法\n // originSendData.call(this, data);\n // console.error('Error in sendData:', error);\n // }\n };\n // }\n }\n\n {\n //https://github.com/EpicGamesExt/PixelStreamingInfrastructure/issues/10\n //TODO:'解决ue像素流双击鼠标会锁定鼠标视角跟随的问题,关注后续官方如果解决再同步'\n const handleMouseUp = (mouseEvent: MouseEvent) => {\n //@ts-ignore\n const mouseController = this._pixelStream._webRtcController.mouseController;\n setTimeout(() => {\n const coord = mouseController.coordinateConverter.normalizeAndQuantizeUnsigned(mouseEvent.offsetX, mouseEvent.offsetY);\n const toStreamerHandlers = mouseController.toStreamerMessagesProvider.toStreamerHandlers;\n const mouseUp = toStreamerHandlers.get('MouseUp');\n mouseUp && mouseUp([mouseEvent.button, coord.x, coord.y]);\n mouseEvent.preventDefault();\n });\n };\n this.container.addEventListener('dblclick', handleMouseUp);\n this.d(() => { this.container.removeEventListener('dblclick', handleMouseUp); });\n\n }\n\n {\n const events = ['error', 'close', 'open'] as const;\n events.forEach((eventName) => {\n const func = () => {\n if (this.isDestroyed()) return;\n if (eventName === 'open') {\n this.connected.emit('webSocketOpen')\n } else if (eventName === 'close') {\n this.error.emit('webSocketClose')\n } else if (eventName === 'error') {\n this.error.emit('webSocketError')\n }\n }\n this.pixelStream.webSocketController.webSocket.addEventListener(eventName, func);\n this.d(() => { this.pixelStream.webSocketController.webSocket.removeEventListener(eventName, func) })\n })\n }\n //基础事件监听\n {\n const eventNames = ['videoInitialized', 'webRtcConnected', 'webRtcDisconnected', 'webRtcFailed'] as PixelStreamingEvent['type'][];\n eventNames.forEach((eventName) => {\n const func = () => {\n if (this.isDestroyed()) return;\n if (eventName === 'webRtcConnected' || eventName === 'videoInitialized') {\n this.connected.emit(eventName)\n } else if (eventName === 'webRtcDisconnected' || eventName === 'webRtcFailed') {\n this.error.emit(eventName);\n this.pixelStream.disconnect();\n }\n }\n this.pixelStream.addEventListener(eventName, func)\n this.d(() => { this.pixelStream.removeEventListener(eventName, func) })\n })\n }\n\n //处理ue事件\n {\n this.pixelStream.addResponseEventListener(\"handle_responses\", (decodedString) => {\n this.processResponse(decodedString);\n });\n this.d(() => { this.pixelStream.removeResponseEventListener('handle_responses'); });\n\n // //处理ue事件\n // this.pixelStream.addResponseEventListener('esueviewer', (response) => {\n // console.warn(\"接收到消息 esueviewer\", response);\n // });\n // this.pixelStream.addResponseEventListener(\"RecivedVueData\", (val) => {\n // console.log('接收到消息 RecivedVueData', val);\n // });\n }\n }\n\n //发送时记录消息,回调函数中对应消息后再删除\n private uiInteractionCallbacks = new Map<string, any>();\n //处理回调函数\n resolveCallback(text: string) {\n //1, 解析text失败,直接返回\n let retObj = {}\n try {\n retObj = JSON.parse(text)\n } catch (error) {\n return false\n }\n //2, 获取 调用id\n // @ts-ignore\n let callid = retObj.callid as string;\n if (typeof callid !== 'string') return false;\n //3,寻找resolve方法,如果没有,那么也返回false\n if (!this.uiInteractionCallbacks.has(callid)) return false;\n //类型不对,返回false\n let callback = this.uiInteractionCallbacks.get(callid);\n if (typeof callback !== 'function') return false;\n // 成功调用,返回true\n callback(retObj);\n this.uiInteractionCallbacks.delete(callid);\n return true\n }\n\n getVideoSize() {\n //@ts-ignore\n const ve = this._pixelStream._webRtcController.videoPlayer.getVideoElement();\n return { width: ve.videoWidth, height: ve.videoHeight };\n }\n //像素流命令\n emitCommand(descriptor: object) {\n this.pixelStream.emitCommand(descriptor);\n }\n emitUIInteraction() {\n console.log('emitUIInteraction 像素流初始化');\n this.pixelStream.emitUIInteraction('像素流初始化');\n }\n resizeUEVideo(x: number, y: number) {\n const descriptor = {\n Resolution: {\n Width: x,\n Height: y\n }\n };\n console.log(`resizeUEVideo emitCommand ${x} ${y} begin`);\n this.emitCommand(descriptor);\n }\n}\n","import { Destroyable, Event } from \"xbsj-base\";\nimport { WebRtcManager } from \"./WebRtcManager\";\n\nexport class WebRtcManagerWrapper extends Destroyable {\n private _instance: WebRtcManager;\n get instance() { return this._instance; }\n\n private _event = this.dv(new Event<[eventName: string, eventDetailStr: string]>());\n get event() { return this._event; }\n\n get debug() { return this._instance.debug; }\n set debug(value: boolean) { this._instance.debug = value; }\n constructor(private _container: HTMLDivElement, private _wsuri: string, private _esmsgWsUri?: string) {\n super();\n\n this._instance = this.dv(new WebRtcManager(this._container, { ws: this._wsuri }));\n {\n this.d(this._instance.connected.don((str) => {\n this._event.emit(str, str);\n console.log(`%c[EarthSDK] ${str}`, \"background: #a6ec99; color: black\");\n }));\n this.d(this._instance.error.don((str) => {\n this._event.emit('errorEvent', str);\n console.log(`%c[EarthSDK] ${str}`, \"background: red; color: black\");\n\n }));\n this.d(this._instance.ueevent.don((str) => {\n this._event.emit('ueevent', str)\n }));\n }\n\n }\n\n emitUIInteractionForBigData(params: any, callback?: (...params: any[]) => void) {\n return new Promise<any[]>((resolve, reject) => {\n const callbackWrapper = (...params: any[]) => {\n resolve(params);\n callback && callback(...params);\n };\n try {\n this._instance.emitUIInteractionForBigData(params, callbackWrapper);\n } catch (error) {\n console.warn(`emitUIInteraction发生错误:${error}`);\n reject(error);\n }\n });\n }\n\n getVideoSize() {\n return this._instance.getVideoSize();\n }\n\n resize(width: number, height: number) {\n this._instance.resizeUEVideo(width, height);\n }\n}\n","/** \n * inner PixelStream 内置像素流\n * ESSS V3.0.12 版本以后会附带 uselnternalSignallingServer 信息提供判断是否是内置信令服务器使用官方像素流\n * 1. 已有连接server 后 new PixelStreaming(...server)\n * 2. esmsg属性闲置\n * 3. 鼠标事件js自行收集\n * \n * {\n \"server\": \"ws://localhost:9105\",\n \"instanceId\": \"c8806df8-7f39-4df2-bb35-b473c9063ec2\",\n \"esmsg\": \"ws://localhost:9107/esmsg\",\n \"status\": \"ok\",\n \"uselnternalSignallingServer\":true\n}\n */\n\nimport { createAnimateFrame, createGuid, createInterval, createNextAnimateFrameEvent, Event, react } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../index\";\nimport { UeCallResultType, UeCallType, UeCloudViewerBase, UeEventResultType, UeEventsType, UeFuncResultWithIdType, UeFuncType, UeFuncWithIdType } from \"../../uemsg\";\nimport { WebRtcManagerWrapper } from \"./WebRtcManagerWrapper\";\n\nexport class INNPSViewer extends UeCloudViewerBase {\n\n private _videoInitialized = this.dv(react(false));\n get videoInitialized() { return this._videoInitialized.value; }\n private _webRtcConnected = this.dv(react(false));\n get webRtcConnected() { return this._webRtcConnected.value; }\n private _webSocketOpen = this.dv(react(false));\n get webSocketOpen() { return this._webSocketOpen.value; }\n\n private _ue5ViewerWrapper: WebRtcManagerWrapper;\n get ue5ViewerWrapper() { return this._ue5ViewerWrapper; }\n\n private _ueFuncResultWithIdsEvent = this.dv(new Event<[ueFuncResultWithIds: UeFuncResultWithIdType[]]>());\n\n private _ueFuncWithIdAndResultCallbacks: [ueFuncWithId: UeFuncWithIdType, resultCallbackAndUeFunc: { timeStamp: number, ueFunc: UeFuncType, resultCallback: (result: any) => void }][] = [];\n private _waitingUeFuncIdAndResultCallbacks: Map<string, { timeStamp: number, ueFunc: UeFuncType, resultCallback: (result: any) => void }> = new Map();\n\n private _waitingUeCalls: Set<UeCallType> = new Set();\n\n private _ueEvent = this.dv(new Event<[ueEvent: UeEventResultType]>());\n\n private _errorEvent = this.dv(new Event<[string]>());\n get errorEvent() { return this._errorEvent; }\n\n private _readyEvent = this.dv(new Event());\n get readyEvent() { return this._readyEvent; }\n resize(width: number, height: number) {\n this.ue5ViewerWrapper.resize(width, height);\n }\n\n constructor(container: HTMLDivElement, wsUri: string, esmsgWsUri: string, private _ueViewer: ESUeViewer) {\n super();\n console.log(`INNPSViewer init ! 以内置信令服务器模式启动!`);\n const ueViewer = this._ueViewer;\n const ue5ViewerWrapper = this.dv(new WebRtcManagerWrapper(container, wsUri, esmsgWsUri));\n\n this._ue5ViewerWrapper = ue5ViewerWrapper;\n\n {\n const update = () => ue5ViewerWrapper.debug = ueViewer.debug ?? false;\n update();\n this.d(ueViewer.debugChanged.don(update));\n }\n {\n let ready = false;\n const allReadyEvent = this.dv(createNextAnimateFrameEvent(\n this._videoInitialized.changed,\n this._webRtcConnected.changed,\n this._webSocketOpen.changed\n ));\n this.d(allReadyEvent.don(() => {\n if (ready) return;\n const webSocketReady = this._ue5ViewerWrapper.instance.webSocketReady;\n if (this.videoInitialized && this.webRtcConnected && webSocketReady) {\n this._ue5ViewerWrapper.instance.emitUIInteraction();\n this._readyEvent.emit();\n ready = true;\n console.log(`%c[EarthSDK videoInitialized && webRtcConnected && webSocketReady]`, \"background: #a6ec99; color: black\");\n const param = { eventType: 'init', params: {} };\n this._ue5ViewerWrapper.emitUIInteractionForBigData(param);\n } else {\n console.warn('webSocketReady', webSocketReady);\n ready = false;\n }\n }));\n }\n\n //'videoInitialized', 'webRtcConnected', 'webRtcDisconnected', \n //'webRtcFailed', 'webSocketError', 'webSocketClose', 'ueevent'\n this.d(ue5ViewerWrapper.event.don((eventName, eventDetailStr) => {\n if (eventName === 'errorEvent') {\n this._errorEvent.emit(eventDetailStr);\n } else if (eventName === 'videoInitialized') {\n this._videoInitialized.value = true;\n } else if (eventName === 'webRtcConnected') {\n this._webRtcConnected.value = true;\n } else if (eventName === 'webSocketOpen') {\n this._webSocketOpen.value = true;\n } else if (eventName === 'ueevent') {\n const detailJson = JSON.parse(eventDetailStr);\n if (detailJson.t === 'cr') {\n const ueCallResult = detailJson as UeCallResultType;\n ueCallResult.frs && this._ueFuncResultWithIdsEvent.emit(ueCallResult.frs);\n if (ueCallResult.ers) {\n for (let er of ueCallResult.ers) {\n this._ueEvent.emit(er);\n }\n }\n }\n }\n }));\n\n {\n const animate = this.dv(createAnimateFrame());\n let lastWidth: number | undefined;\n let lastHeight: number | undefined;\n let ratio: number | undefined;\n animate.start(() => {\n if (!(lastWidth !== container.offsetWidth || lastHeight !== container.offsetHeight || ratio !== ueViewer.resolutionScale)) return;\n lastWidth = container.offsetWidth;\n lastHeight = container.offsetHeight;\n if (lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0) {\n console.warn(`lastWidth === undefined || lastHeight === undefined || !Number.isFinite(lastWidth) || !Number.isFinite(lastHeight) || lastWidth < 0 || lastHeight < 0 ${lastWidth} ${lastHeight}`);\n return;\n }\n ratio = ueViewer.resolutionScale;\n //分辨率缩放比例\n ue5ViewerWrapper.resize(lastWidth / ratio, lastHeight / ratio);\n });\n }\n\n this.d(this._ueFuncResultWithIdsEvent.don(ueFuncResultWithIds => {\n for (const ueFuncResultWithId of ueFuncResultWithIds) {\n const resultCallbackAndUeFunc = this._waitingUeFuncIdAndResultCallbacks.get(ueFuncResultWithId.fid);\n if (!resultCallbackAndUeFunc) {\n continue;\n }\n this._waitingUeFuncIdAndResultCallbacks.delete(ueFuncResultWithId.fid);\n resultCallbackAndUeFunc.resultCallback(ueFuncResultWithId.r);\n }\n }));\n\n let ueCallLastNum = 0;\n const processUnitMessage = (fs: UeFuncWithIdType[]) => {\n const ueCall: UeCallType = {\n n: ueCallLastNum++,\n tt: Date.now(),\n t: 'c',\n fs,\n };\n this._waitingUeCalls.add(ueCall);\n if (ueViewer.debug) {\n console.group(\n \"%cxe2 => ue\",\n \" background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(ueCall, undefined, '')}`,\n \" border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;\"\n );\n console.groupEnd();\n }\n this._ue5ViewerWrapper.emitUIInteractionForBigData(ueCall, () => { this._waitingUeCalls.delete(ueCall); });\n }\n\n const processMessage = () => {\n const webSocketReady = this._ue5ViewerWrapper.instance.webSocketReady;\n if (!webSocketReady) return;\n if (this._ueFuncWithIdAndResultCallbacks.length === 0) return;\n const fs = this._ueFuncWithIdAndResultCallbacks.map((([e]) => e));\n for (const [ueFuncWithId, resultCallbackAndUeFunc] of this._ueFuncWithIdAndResultCallbacks) {\n this._waitingUeFuncIdAndResultCallbacks.set(ueFuncWithId.fid, resultCallbackAndUeFunc);\n }\n this._ueFuncWithIdAndResultCallbacks.length = 0;\n {\n // 消息发送机制改进,每个消息块不超过30000字节!\n // 64501\n // const maxBytes = 30000;\n // @ts-ignore;\n const maxBytes = window.g_emitDescriptor_maxBytes;\n const fsWithSize = fs.map(e => ({ f: e, s: JSON.stringify(e).length }));\n\n let l = fsWithSize.length;\n let i = 0;\n let currentSize = 0;\n let currentFs: UeFuncWithIdType[] = [];\n do {\n do {\n const { f, s } = fsWithSize[i];\n // 消息体超大也要加\n currentFs.push(f);\n ++i;\n if (currentSize + s > maxBytes || currentFs.length >= 20) {\n break;\n }\n } while (i < l);\n\n if (currentFs.length > 0) {\n ueViewer.debug && console.log(`传送${currentFs.length}条消息...`)\n processUnitMessage([...currentFs]);\n currentFs.length = 0;\n currentSize = 0;\n }\n } while (i < l);\n }\n };\n\n const interalProcessing = this.dv(createInterval());\n interalProcessing.start(processMessage, 50);\n\n this.d(() => console.log(`UeCloudViewer正在销毁...`));\n }\n\n callUeFunc<ResultType>(ueFunc: UeFuncType) {\n return new Promise<ResultType>(resolve => {\n const fid = createGuid();\n const ueFuncWithId: UeFuncWithIdType = { fid, ...ueFunc };\n this._ueFuncWithIdAndResultCallbacks.push([ueFuncWithId, { timeStamp: Date.now(), ueFunc, resultCallback: resolve }]);\n });\n }\n\n disposableOnUeEvent<EventType extends keyof UeEventsType>(type: EventType, callback: (params: UeEventsType[EventType]) => void) {\n const eid = createGuid();\n this.callUeFunc({\n f: 'addEventListener',\n p: {\n et: type,\n eid,\n }\n });\n\n const remove = () => {\n this.callUeFunc({\n f: 'removeEventListener',\n p: {\n eid,\n }\n });\n };\n\n const d = this._ueEvent.don(ueEvent => {\n if (ueEvent.et === type && ueEvent.eid === eid) {\n callback(ueEvent as UeEventsType[EventType]);\n }\n });\n\n return () => {\n d();\n remove();\n };\n }\n}\n","// 使用html5的viewer\nimport { ESSceneObject } from \"@u-gis/core\";\nimport { Destroyable, Event } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../ESUeViewer\";\n/**\n * H5 容器\n * @export\n * @class DLViewer\n * @extends {Destroyable}\n */\nexport class DLViewer extends Destroyable {\n private _onRuntimeInitialized = this.dv(new Event());\n get onRuntimeInitialized() { return this._onRuntimeInitialized; }\n private _vIframe: HTMLIFrameElement | null = null;\n get vIframe() { return this._vIframe; }\n /**\n * Creates an instance of DLViewer.\n * @param {HTMLDivElement} container\n * @param {string} project\n * @param {string} baseUrl\n * @param {ESUeViewer} _ueViewer\n * @memberof DLViewer\n */\n constructor(container: HTMLDivElement, project: string, baseUrl: string, private _ueViewer: ESUeViewer) {\n super();\n const ueViewer = this._ueViewer;\n {\n const vIframe = document.createElement('iframe');\n this._vIframe = vIframe;\n vIframe.style.cssText = 'width: 100%; height: 100%; margin: 0; padding: 0; border: none; outline: none;';\n\n container.appendChild(vIframe);\n this.d(() => { vIframe && container.removeChild(vIframe); });\n const baseSrc = ESSceneObject.getStrFromEnv(baseUrl + `/web/${project}.html`);\n vIframe.src = baseSrc;\n vIframe.onload = () => {\n const iframeWindow = vIframe.contentWindow;\n if (!iframeWindow) {\n console.error('iframeWindow is null');\n return;\n }\n //@ts-ignore\n console.log('iwindow.Module', iframeWindow.Module);\n //@ts-ignore\n iframeWindow.Module.onRuntimeInitialized = () => {\n this._onRuntimeInitialized.emit();\n ueViewer.setStatus('Created');\n ueViewer.setStatusLog(`创建成功`);\n //@ts-ignore\n iframeWindow.Module['UE4_resizeCanvas']();\n //@ts-ignore\n iframeWindow.console.log('创建成功__________________________________________')\n\n\n }\n }\n }\n }\n}\n","\n\nexport function resourcesDownload(url: string, responseType: XMLHttpRequestResponseType = 'blob', dlprogress?: (url: string, loaded: number, total: number, isDone: boolean) => void) {\n return new Promise(function (resolve, reject) {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.setRequestHeader('Cache-Control', 'max-age=86400');\n xhr.responseType = responseType;\n dlprogress && dlprogress(url, 0, 1, false);\n xhr.onload = function () {\n if (xhr.status == 0 || (xhr.status >= 200 && xhr.status < 300)) {\n var len = xhr.response.size || xhr.response.byteLength;\n dlprogress && dlprogress(url, len, len, true);\n resolve(xhr.response);\n } else {\n reject({ status: xhr.status, statusText: xhr.statusText });\n }\n };\n let contentLength = 1;\n xhr.onprogress = function (p) {\n dlprogress && dlprogress(url, p.loaded, (p.lengthComputable ? p.total : contentLength), false);\n };\n xhr.onerror = function (e) {\n reject({ status: xhr.status || 404, statusText: xhr.statusText });\n };\n xhr.onreadystatechange = function () {\n if (xhr.readyState == xhr.HEADERS_RECEIVED) {\n contentLength = Number(xhr.getResponseHeader('Content-Length')) || 1;\n }\n }\n xhr.send(null);\n });\n}\n\n\nexport function addScriptToDom(scriptCode: Blob) {\n return new Promise(function (resolve, reject) {\n const script = document.createElement('script');\n const blob = (scriptCode instanceof Blob) ? scriptCode : new Blob([scriptCode], { type: 'text/javascript' });\n const objectUrl = URL.createObjectURL(blob);\n script.src = objectUrl;\n script.onload = function () {\n script.onload = script.onerror = null; // 删除这些 onload 和 onerror 处理程序,因为这些捕获 Promise 的输入和输入函数,这会泄漏大量内存!\n URL.revokeObjectURL(objectUrl); // 释放 blob。请注意,出于调试目的,可以注释掉以便能够在调试器中读取源。\n resolve(script);\n }\n script.onerror = function (e) {\n script.onload = script.onerror = null; // 删除这些 onload 和 onerror 处理程序,因为这些捕获 Promise 的输入和输入函数,这会泄漏大量内存!\n URL.revokeObjectURL(objectUrl);\n console.error('脚本未能添加到 DOM:' + e);\n console.error(scriptCode);\n console.error(e);\n reject(objectUrl);\n }\n document.body.appendChild(script);\n });\n}\n\nexport function formatBytes(bytes: number) {\n if (bytes >= 1024 * 1024 * 1024) return (bytes / (1024 * 1024 * 1024)).toFixed(1) + ' GB';\n if (bytes >= 1024 * 1024) return (bytes / (1024 * 1024)).toFixed(0) + ' MB';\n if (bytes >= 1024) return (bytes / 1024).toFixed(1) + ' KB';\n return bytes + ' B';\n}\n\n\nconst UTF8Decoder = typeof TextDecoder != 'undefined' ? new TextDecoder() : undefined;\n\n\nexport const UTF8ArrayToString = (heapOrArray: any, idx = 0, maxBytesToRead = NaN) => {\n const endIdx = idx + maxBytesToRead;\n let endPtr = idx;\n while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n let str = '';\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 0x80)) { str += String.fromCharCode(u0); continue; }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 0xE0) == 0xC0) { str += String.fromCharCode(((u0 & 31) << 6) | u1); continue; }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 0xF0) == 0xE0) {\n u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;\n } else {\n if ((u0 & 0xF8) != 0xF0) {\n console.warn('Invalid UTF-8 leading byte ' + ' encountered when deserializing a UTF-8 string in wasm memory to a JS string!');\n }\n u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63);\n }\n\n if (u0 < 0x10000) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 0x10000;\n str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));\n }\n }\n return str;\n};\n\n\nexport const UTF8ToString = (ptr: any, maxBytesToRead?: any) => {\n //@ts-ignore\n return (ptr && window.HEAPU8) ? UTF8ArrayToString(window.HEAPU8, ptr, maxBytesToRead) : '';\n};\n","import { ViewerCustomInteraction } from \"@u-gis/core\";\nimport { createNextAnimateFrameEvent, Destroyable, ObjResettingWithEvent } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../index\";\nimport { getGlobalPropsKey, getGlobalPropsValue } from \"../../inner/ReactProps\";\nimport { UeCloudViewerBase } from \"../../uemsg\";\nexport class ViewerH5Instance extends Destroyable {\n constructor(container: HTMLDivElement, ueViewer: ESUeViewer, cloudViewer: UeCloudViewerBase) {\n super();\n\n {\n //全局属性设置监听,自动更新\n const update = () => {\n const params = getGlobalPropsValue(ueViewer);\n ueViewer.setGlobalProperty(params)\n }\n update();\n const reactPropsKeys = getGlobalPropsKey()\n const createNextAnimateFrameList: any[] = []\n reactPropsKeys.forEach(key => {\n //@ts-ignore\n const event = ueViewer[key + 'Changed']\n createNextAnimateFrameList.push(event)\n })\n const updateEvent = this.dv(createNextAnimateFrameEvent(...createNextAnimateFrameList));\n this.d(updateEvent.don(update));\n }\n\n {\n //UE更新JS的属性\n this.d(ueViewer.propChanged.don(params => {\n if (params.objId !== \"\") return;\n try {\n Object.keys(params.props).forEach(key => {\n const prop = (params.props[key] === null) ? undefined : params.props[key]\n //@ts-ignore\n ueViewer[key] = prop\n });\n } catch (error) {\n console.error('ueViewer propChanged:' + error)\n }\n }));\n }\n\n\n //重写div事件监听 click,dblclick,mousemove,mouseout,mouseover,mousedown,mouseup\n {\n //禁用ESViewer上的ViewerCustomInteraction的默认事件\n ueViewer.useCustomInteraction = false;\n //收集masker上的鼠标事件\n this.dv(new ViewerCustomInteraction(ueViewer, container));\n }\n //自定义事件监听 statusUpdateEvent,propChangedEvent,objectEvent,widgetEvent,speechRecognition,customMessage\n {\n // statusUpdateInterval为0时,ue就不返回事件,移除监听\n this.dv(new ObjResettingWithEvent(ueViewer.statusUpdateIntervalChanged, ((newVal) => {\n const statusUpdateInterval = ueViewer.statusUpdateInterval ?? 0.5;\n if (statusUpdateInterval === 0) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('statusUpdate', (statusUpdate) => {\n ueViewer.statusUpdateEvent.emit(statusUpdate);\n }))\n return disposer;\n })));\n\n this.dv(new ObjResettingWithEvent(ueViewer.propChangedListeningChanged, () => {\n const propChangedListening = ueViewer.propChangedListening ?? true;\n if (!propChangedListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('propChanged', (changedEvent) => {\n ueViewer.propChanged.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.objectEventListeningChanged, () => {\n const objectEventListening = ueViewer.objectEventListening ?? true;\n if (!objectEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('objectEvent', (changedEvent) => {\n ueViewer.objectEvent.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.widgetEventListeningChanged, () => {\n const widgetEventListening = ueViewer.widgetEventListening ?? true;\n if (!widgetEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('widgetEvent', (widgetEvent) => {\n ueViewer.widgetEvent.emit(widgetEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.speechRecognitionListeningChanged, () => {\n const speechRecognitionListening = ueViewer.speechRecognitionListening ?? true;\n if (!speechRecognitionListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('speechRecognition', (info) => {\n ueViewer.speechRecognition.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.customMessageListeningChanged, () => {\n const customMessageListening = ueViewer.customMessageListening ?? true;\n if (!customMessageListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('customMessage', (info) => {\n ueViewer.customMessage.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.editingEventListeningChanged, () => {\n const editStatusListening = ueViewer.editingEventListening ?? true;\n if (!editStatusListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('editingEvent', (info) => {\n info.objectIDs = info.objectIDs.map((id: string) => {\n return id.split(\"_\")[0];\n })\n ueViewer.editingEvent.emit(info);\n }));\n return disposer;\n }));\n\n }\n }\n}\n","import { createGuid, createInterval, Event } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../index\";\nimport { UeCallResultType, UeCloudViewerBase, UeEventResultType, UeEventsType, UeFuncResultWithIdType, UeFuncType, UeFuncWithIdType } from \"../../uemsg\";\nimport { DLViewer } from \"./DLViewer\";\nimport { UTF8ArrayToString } from \"./utils\";\nimport { ViewerH5Instance } from \"./ViewerH5Instance\";\nlet lastSendId = -1;\n\nexport type UeH5CallType = {\n t: 'c';\n n: number;\n tt: number;\n fs: UeFuncWithIdType[];\n} & {\n callid: string;\n}\n\n/**\n * H5 UEViewer\n * 1.所有js发的消息通过callUeFunc存储在 数组_ueFuncWithIdAndResultCallbacks中等待轮询调用\n * 2._waitingUeFuncIdAndResultCallbacks 存储等待回调的函数,即发送了未收到回调的函数\n * 3.通过 window.ue.es.oncommand发送消息,多个消息可以拼接在一起发,一起发的消息存在_waitingUeCalls中,回调后移除\n * 4.通过 window.calljs 接收消息,收到消息_waitingUeFuncIdAndResultCallbacks对比,回调后移除\n * 5.区分对象和事件\n * @export\n * @class H5Viewer\n * @extends {UeCloudViewerBase}\n */\nexport class H5Viewer extends UeCloudViewerBase {\n private _ueFuncResultWithIdsEvent = this.dv(new Event<[ueFuncResultWithIds: UeFuncResultWithIdType[]]>());\n\n private _ueFuncWithIdAndResultCallbacks: [ueFuncWithId: UeFuncWithIdType, resultCallback: (result: any) => void][] = [];\n private _waitingUeFuncIdAndResultCallbacks: Map<string, (result: any) => void> = new Map();\n\n //发送时记录消息,回调函数中对应消息后再删除\n private _waitingUeCalls = new Map<string, UeH5CallType>();\n\n private _ueEvent = this.dv(new Event<[ueEvent: UeEventResultType]>());\n /**\n * Creates an instance of H5Viewer.\n * @param {HTMLDivElement} container\n * @param {string} project\n * @param {string} [baseUrl= \"${earthsdk3-ue-h5-assets-script-dir}\" ]\n * @param {ESUeViewer} _ueViewer\n * @memberof H5Viewer\n */\n constructor(container: HTMLDivElement, project: string, baseUrl: string = \"${earthsdk3-ue-h5-assets-script-dir}\", private _ueViewer: ESUeViewer) {\n super();\n const ueViewer = this._ueViewer;\n const dlViewer = this.dv(new DLViewer(container, project, baseUrl, ueViewer));\n\n let ready = false;\n let iframeWindow: Window | null = null;\n\n this.d(dlViewer.onRuntimeInitialized.don(() => {\n ready = true;\n if (dlViewer?.vIframe?.contentWindow) {\n iframeWindow = dlViewer.vIframe.contentWindow;\n //因为iframe是独立文档流,无法向上传递div上的鼠标事件,所以需要收集鼠标事件到iframe内的大div上,然后绑定事件 ViewerH5Instance\n const h5Container = dlViewer.vIframe.contentWindow.document.getElementById('mainarea') as HTMLDivElement | null;\n if (h5Container) {\n this.dv(new ViewerH5Instance(h5Container, ueViewer, this));\n } else {\n console.error(\"h5Container is null\");\n }\n } else {\n console.error(\"iframeWindow is null\");\n return;\n }\n\n // @ts-ignore\n if (iframeWindow.UE_JSHTML5Communication) {\n //@ts-ignore\n iframeWindow.UE_JSHTML5Communication.UESendMessageToJS = (str: any) => {\n try {\n //@ts-ignore\n const jsonStr = UTF8ArrayToString(iframeWindow.HEAPU8, str)\n const detailJson = JSON.parse(jsonStr);\n if (ueViewer.debug) {\n console.group(\n \"%cUE => JS\",\n \" background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(detailJson, undefined, '')}`,\n \" border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;\"\n );\n console.groupEnd();\n }\n if (detailJson.t === 'cr') {\n const ueCallResult = detailJson as UeCallResultType;\n ueCallResult.frs && this._ueFuncResultWithIdsEvent.emit(ueCallResult.frs);\n if (ueCallResult.ers) {\n for (let er of ueCallResult.ers) {\n this._ueEvent.emit(er);\n }\n }\n }\n if (detailJson.callid && this._waitingUeCalls.has(detailJson.callid)) {\n this._waitingUeCalls.delete(detailJson.callid);\n console.log(`waitingUeCalls.delete:${detailJson.callid} end`);\n }\n\n } catch (error) {\n console.error('UE_JSHTML5Communication.UESendMessageToJS error:', error);\n }\n }\n } else {\n console.error('UE_JSHTML5Communication UESendMessageToJS not found');\n }\n }));\n\n this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(ueFuncResultWithIds => {\n for (const ueFuncResultWithId of ueFuncResultWithIds) {\n const resultCallback = this._waitingUeFuncIdAndResultCallbacks.get(ueFuncResultWithId.fid);\n if (!resultCallback) {\n continue;\n }\n this._waitingUeFuncIdAndResultCallbacks.delete(ueFuncResultWithId.fid);\n resultCallback(ueFuncResultWithId.r);\n }\n }));\n\n let ueCallLastNum = 0;\n const processMessage = () => {\n if (!ready) return;\n if (!iframeWindow) return;\n //@ts-ignore\n if (!iframeWindow.UE_JSHTML5Communication || !iframeWindow.UE_JSHTML5Communication.JSSendMessageToUE) return;\n if (this._ueFuncWithIdAndResultCallbacks.length === 0) return;\n const fs = this._ueFuncWithIdAndResultCallbacks.map((([e]) => e));\n const ueCall: UeH5CallType = { n: ueCallLastNum++, tt: Date.now(), t: 'c', fs, callid: createGuid() };\n for (const [ueFuncWithId, resultCallback] of this._ueFuncWithIdAndResultCallbacks) {\n this._waitingUeFuncIdAndResultCallbacks.set(ueFuncWithId.fid, resultCallback);\n }\n this._ueFuncWithIdAndResultCallbacks.length = 0;\n this._waitingUeCalls.set(ueCall.callid, ueCall);\n if (ueViewer.debug) {\n console.group(\n \"%cxe2 => ue\",\n \" background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(ueCall, undefined, '')}`,\n \" border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;\"\n );\n console.groupEnd();\n }\n const descriptorAsString = JSON.stringify(ueCall);\n // @ts-ignore\n const maxBytes = (window.g_emitDescriptor_maxBytes ?? 30000) as number;\n const l = descriptorAsString.length\n const currentSendId = ++lastSendId;\n /**\n *`${currentSendId}-${i}/${n}-` 解释\n * currentSendId: 当前发送的消息序号, 从 0 开始\n * i: 当前发送的包的序号是第几份,从 0 开始,配合n可以知道当前是第几份\n * n: 消息拆分为几份,为 1 时表示没拆分\n */\n if (l < maxBytes) {\n const infoStr = `${currentSendId}-0/1-` + descriptorAsString;\n //@ts-ignore\n iframeWindow.UE_JSHTML5Communication.JSSendMessageToUE(infoStr);\n return\n }\n // 否则就分拆后再发送\n const n = Math.ceil(l / maxBytes) | 0\n const ds = [...new Array(n).keys()].map(i => descriptorAsString.slice(i * maxBytes, (i + 1) * maxBytes))\n ds.forEach((e, i) => {\n const infoStr = `${currentSendId}-${i}/${n}-` + e;\n //@ts-ignore\n iframeWindow.UE_JSHTML5Communication.JSSendMessageToUE(infoStr);\n })\n };\n\n const interalProcessing = this.dv(createInterval());\n interalProcessing.start(processMessage, 50);\n\n\n }\n\n processResponse(text: string) {\n if (this._ueViewer.debug ?? false) {\n try {\n const json = JSON.parse(text);\n console.group(\n \"%cUE => JS\",\n \" background-color:#006EFF;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(json, undefined, '')}`,\n \" border:1px dashed #006EFF;border-radius:5px;padding:10px;line-height:25px;color:#006EFF;\"\n );\n console.groupEnd();\n } catch (error) {\n console.error(`processResponse(${text}) error: ${error}`, error);\n }\n }\n }\n\n callUeFunc<ResultType>(ueFunc: UeFuncType) {\n return new Promise<ResultType>(resolve => {\n const fid = createGuid();\n const ueFuncWithId: UeFuncWithIdType = { fid, ...ueFunc };\n this._ueFuncWithIdAndResultCallbacks.push([ueFuncWithId, resolve]);\n });\n }\n\n disposableOnUeEvent<EventType extends keyof UeEventsType>(type: EventType, callback: (params: UeEventsType[EventType]) => void) {\n const eid = createGuid();\n this.callUeFunc({\n f: 'addEventListener',\n p: {\n et: type,\n eid,\n }\n });\n\n const remove = () => {\n this.callUeFunc({\n f: 'removeEventListener',\n p: {\n eid,\n }\n });\n };\n\n const d = this._ueEvent.disposableOn(ueEvent => {\n if (ueEvent.et === type && ueEvent.eid === eid) {\n if (this._ueViewer.debug ?? false) {\n console.log(`callback, type:${type} eid:${eid} ueEvent:${JSON.stringify(ueEvent)}`);\n }\n callback(ueEvent as UeEventsType[EventType]);\n }\n });\n\n return () => {\n d();\n remove();\n };\n }\n}\n","import { createGuid, createInterval, Event } from \"xbsj-base\";\nimport { UeCloudViewerBase } from \"../uemsg/UeCloudViewerBase\";\nimport { UeCallResultType, UeCallType, UeEventResultType, UeFuncResultWithIdType, UeFuncType, UeFuncWithIdType } from \"../uemsg/UeMessage\";\nimport { ESUeViewer } from \"../index\";\nimport { UeEventsType } from \"../uemsg/UeEventsType\";\nlet lastSendId = -1;\n\n/**\n * 本地UEViewer\n */\nexport class UeLocalViewer extends UeCloudViewerBase {\n private _ueFuncResultWithIdsEvent = this.dv(new Event<[ueFuncResultWithIds: UeFuncResultWithIdType[]]>());\n\n private _ueFuncWithIdAndResultCallbacks: [ueFuncWithId: UeFuncWithIdType, resultCallback: (result: any) => void][] = [];\n private _waitingUeFuncIdAndResultCallbacks: Map<string, (result: any) => void> = new Map();\n\n private _waitingUeCalls: Set<UeCallType> = new Set();\n\n private _ueEvent = this.dv(new Event<[ueEvent: UeEventResultType]>());\n\n constructor(container: HTMLDivElement, private _ueViewer: ESUeViewer) {\n super();\n\n const ueViewer = this._ueViewer;\n\n let ready = false;\n\n const param = {\n eventType: 'init',\n params: {},\n }\n\n // @ts-ignore\n window.ue.es.oncommand(JSON.stringify(param));\n ready = true;\n\n // @ts-ignore\n window.calljs = (eventName: string, eventDetailStr: string) => {\n if (ueViewer.debug) {\n console.log(`calljs eventName:${eventName} eventDetailStr:${eventDetailStr}`);\n }\n if (eventName === 'ueevent' || eventName === 'commanFinish') {\n try {\n // @ts-ignore\n const detailJson = JSON.parse(eventDetailStr);\n if (detailJson.t === 'cr') {\n const ueCallResult = detailJson as UeCallResultType;\n ueCallResult.frs && this._ueFuncResultWithIdsEvent.emit(ueCallResult.frs);\n if (ueCallResult.ers) {\n for (let er of ueCallResult.ers) {\n this._ueEvent.emit(er);\n }\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n };\n\n this.dispose(this._ueFuncResultWithIdsEvent.disposableOn(ueFuncResultWithIds => {\n for (const ueFuncResultWithId of ueFuncResultWithIds) {\n const resultCallback = this._waitingUeFuncIdAndResultCallbacks.get(ueFuncResultWithId.fid);\n if (!resultCallback) {\n continue;\n }\n this._waitingUeFuncIdAndResultCallbacks.delete(ueFuncResultWithId.fid);\n resultCallback(ueFuncResultWithId.r);\n }\n }));\n\n let ueCallLastNum = 0;\n const processMessage = () => {\n if (!ready) return;\n if (this._ueFuncWithIdAndResultCallbacks.length === 0) return;\n\n const fs = this._ueFuncWithIdAndResultCallbacks.map((([e]) => e));\n const ueCall: UeCallType = {\n n: ueCallLastNum++,\n tt: Date.now(),\n t: 'c',\n fs,\n };\n\n for (const [ueFuncWithId, resultCallback] of this._ueFuncWithIdAndResultCallbacks) {\n this._waitingUeFuncIdAndResultCallbacks.set(ueFuncWithId.fid, resultCallback);\n }\n this._ueFuncWithIdAndResultCallbacks.length = 0;\n\n this._waitingUeCalls.add(ueCall);\n if (ueViewer.debug) {\n\n console.group(\n \"%cxe2 => ue\",\n \" background-color:green;color:#ffffff;font-weight:bold;padding:4px;border-radius:5px;\"\n );\n console.log(\n `%c${JSON.stringify(ueCall, undefined, '')}`,\n \" border:1px dashed green;border-radius:5px;padding:10px;line-height:25px;color:green;\"\n );\n console.groupEnd();\n }\n const currentSendId = ++lastSendId;\n\n // @ts-ignore\n window.ue.es.oncommand(`${currentSendId}-0/1-` + JSON.stringify(ueCall)).then(() => {\n this._waitingUeCalls.delete(ueCall);\n });\n };\n\n const interalProcessing = this.dv(createInterval());\n interalProcessing.start(processMessage, 50);\n }\n\n callUeFunc<ResultType>(ueFunc: UeFuncType) {\n return new Promise<ResultType>(resolve => {\n const fid = createGuid();\n const ueFuncWithId: UeFuncWithIdType = { fid, ...ueFunc };\n this._ueFuncWithIdAndResultCallbacks.push([ueFuncWithId, resolve]);\n });\n }\n\n disposableOnUeEvent<EventType extends keyof UeEventsType>(type: EventType, callback: (params: UeEventsType[EventType]) => void) {\n const eid = createGuid();\n this.callUeFunc({\n f: 'addEventListener',\n p: {\n et: type,\n eid,\n }\n });\n\n const remove = () => {\n this.callUeFunc({\n f: 'removeEventListener',\n p: {\n eid,\n }\n });\n };\n\n const d = this._ueEvent.disposableOn(ueEvent => {\n if (ueEvent.et === type && ueEvent.eid === eid) {\n if (this._ueViewer.debug ?? false) {\n console.log(`callback, type:${type} eid:${eid} ueEvent:${JSON.stringify(ueEvent)}`);\n }\n callback(ueEvent as UeEventsType[EventType]);\n }\n });\n\n return () => {\n d();\n remove();\n };\n }\n}\n","\nimport { createNextAnimateFrameEvent, Destroyable, ObjResettingWithEvent } from \"xbsj-base\";\nimport { ESUeViewer } from \"../index\";\nimport { UeCloudViewerBase } from \"../uemsg/UeCloudViewerBase\";\nimport { getGlobalPropsKey, getGlobalPropsValue } from \"./ReactProps\";\nexport class ViewerInstance extends Destroyable {\n constructor(ueViewer: ESUeViewer, cloudViewer: UeCloudViewerBase) {\n super();\n //全局属性设置监听,自动更新\n {\n\n const update = () => {\n const params = getGlobalPropsValue(ueViewer);\n ueViewer.setGlobalProperty(params)\n }\n update();\n const reactPropsKeys = getGlobalPropsKey()\n const createNextAnimateFrameList: any[] = []\n reactPropsKeys.forEach(key => {\n //@ts-ignore\n const event = ueViewer[key + 'Changed']\n createNextAnimateFrameList.push(event)\n })\n const updateEvent = this.dv(createNextAnimateFrameEvent(...createNextAnimateFrameList));\n this.d(updateEvent.don(update));\n }\n\n //UE更新JS的属性\n {\n\n this.d(ueViewer.propChanged.don(params => {\n if (params.objId !== \"\") return;\n try {\n Object.keys(params.props).forEach(key => {\n const prop = (params.props[key] === null) ? undefined : params.props[key]\n //@ts-ignore\n ueViewer[key] = prop\n });\n } catch (error) {\n console.error('ueViewer propChanged:' + error)\n }\n }));\n }\n\n //自定义事件监听 statusUpdateEvent,propChangedEvent,objectEvent,widgetEvent,speechRecognition,customMessage\n {\n // statusUpdateInterval为0时,ue就不返回事件,移除监听\n this.dv(new ObjResettingWithEvent(ueViewer.statusUpdateIntervalChanged, ((newVal) => {\n const statusUpdateInterval = ueViewer.statusUpdateInterval ?? 0.5;\n if (statusUpdateInterval === 0) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('statusUpdate', (statusUpdate) => {\n ueViewer.statusUpdateEvent.emit(statusUpdate);\n }))\n return disposer;\n })));\n\n\n this.dv(new ObjResettingWithEvent(ueViewer.propChangedListeningChanged, () => {\n const propChangedListening = ueViewer.propChangedListening ?? true;\n if (!propChangedListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('propChanged', (changedEvent) => {\n ueViewer.propChanged.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.objectEventListeningChanged, () => {\n const objectEventListening = ueViewer.objectEventListening ?? true;\n if (!objectEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('objectEvent', (changedEvent) => {\n ueViewer.objectEvent.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.widgetEventListeningChanged, () => {\n const widgetEventListening = ueViewer.widgetEventListening ?? true;\n if (!widgetEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('widgetEvent', (widgetEvent) => {\n ueViewer.widgetEvent.emit(widgetEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.speechRecognitionListeningChanged, () => {\n const speechRecognitionListening = ueViewer.speechRecognitionListening ?? true;\n if (!speechRecognitionListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('speechRecognition', (info) => {\n ueViewer.speechRecognition.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.customMessageListeningChanged, () => {\n const customMessageListening = ueViewer.customMessageListening ?? true;\n if (!customMessageListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('customMessage', (info) => {\n ueViewer.customMessage.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.editingEventListeningChanged, () => {\n const editStatusListening = ueViewer.editingEventListening ?? true;\n if (!editStatusListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('editingEvent', (info) => {\n info.objectIDs = info.objectIDs.map((id: string) => {\n return id.split(\"_\")[0];\n })\n ueViewer.editingEvent.emit(info);\n }));\n return disposer;\n }));\n\n }\n }\n}\n","\nimport { ViewerCustomInteraction } from \"@u-gis/core\";\nimport { createNextAnimateFrameEvent, Destroyable, ObjResettingWithEvent } from \"xbsj-base\";\nimport { ESUeViewer } from \"../index\";\nimport { UeCloudViewerBase } from \"../uemsg/UeCloudViewerBase\";\nimport { getGlobalPropsKey, getGlobalPropsValue } from \"./ReactProps\";\nexport class ViewerLocalInstance extends Destroyable {\n constructor(container: HTMLDivElement, ueViewer: ESUeViewer, cloudViewer: UeCloudViewerBase) {\n super();\n\n {\n //全局属性设置监听,自动更新\n const update = () => {\n const params = getGlobalPropsValue(ueViewer);\n ueViewer.setGlobalProperty(params)\n }\n update();\n const reactPropsKeys = getGlobalPropsKey()\n const createNextAnimateFrameList: any[] = []\n reactPropsKeys.forEach(key => {\n //@ts-ignore\n const event = ueViewer[key + 'Changed']\n createNextAnimateFrameList.push(event)\n })\n const updateEvent = this.dv(createNextAnimateFrameEvent(...createNextAnimateFrameList));\n this.d(updateEvent.don(update));\n }\n\n {\n //UE更新JS的属性\n this.d(ueViewer.propChanged.don(params => {\n if (params.objId !== \"\") return;\n try {\n Object.keys(params.props).forEach(key => {\n const prop = (params.props[key] === null) ? undefined : params.props[key]\n //@ts-ignore\n ueViewer[key] = prop\n });\n } catch (error) {\n console.error('ueViewer propChanged:' + error)\n }\n }));\n }\n\n const masker = document.createElement('div');\n masker.style.width = '100%';\n masker.style.height = '100%';\n masker.style.position = 'absolute';\n masker.style.overflow = 'hidden';\n masker.style.top = '0';\n masker.style.left = '0';\n masker.style.zIndex = '0';\n masker.style.backgroundColor = 'rgba(255,0,0,0)';\n masker.setAttribute('masker', '大屏顶层div,用于模拟鼠标事件和控制UE鼠标事件是否生效');\n\n container.appendChild(masker);\n this.d(() => { masker && container && container.removeChild(masker); })\n // document.body.insertBefore(masker, document.body.firstChild);\n\n // {//测试\n // const box = document.createElement('div');\n // box.style.width = '300px';\n // box.style.height = '300px';\n // box.style.position = 'absolute';\n // box.style.overflow = 'hidden';\n // box.style.top = '100px';\n // box.style.left = '100px';\n // box.style.zIndex = '1';\n // box.style.backgroundColor = 'rgba(0,255,0,1)';\n // document.body.appendChild(box);\n // //测试中文输入\n // box.innerHTML = `<input type=\"text\" value=\"是的哈是的\" />`\n // }\n\n //遮罩层鼠标事件控制ue鼠标事件是否生效\n {\n const eventFunc = (event: MouseEvent, flag: boolean) => {\n //@ts-ignore\n window.ue.esinput.setinterceptevent(flag);\n event.preventDefault();\n }\n\n const mouseenterFunc = (event: MouseEvent) => { eventFunc(event, false) };\n const mouseleaveFunc = (event: MouseEvent) => { eventFunc(event, true) };\n const mousemoveFunc = (event: MouseEvent) => { eventFunc(event, false) };\n\n //鼠标进入监听\n masker.addEventListener('mouseenter', mouseenterFunc);\n //鼠标离开监听\n masker.addEventListener('mouseleave', mouseleaveFunc);\n // 鼠标移动监听\n masker.addEventListener('mousemove', mousemoveFunc);\n this.d(() => {\n masker.removeEventListener('mouseenter', mouseenterFunc);\n masker.removeEventListener('mouseleave', mouseleaveFunc);\n masker.removeEventListener('mousemove', mousemoveFunc);\n })\n }\n\n //重写div事件监听 click,dblclick,mousemove,mouseout,mouseover,mousedown,mouseup\n {\n //禁用ESViewer上的ViewerCustomInteraction的默认事件\n ueViewer.useCustomInteraction = false;\n //收集masker上的鼠标事件\n this.dv(new ViewerCustomInteraction(ueViewer, masker, undefined, true));\n }\n //自定义事件监听 statusUpdateEvent,propChangedEvent,objectEvent,widgetEvent,speechRecognition,customMessage\n {\n // statusUpdateInterval为0时,ue就不返回事件,移除监听\n this.dv(new ObjResettingWithEvent(ueViewer.statusUpdateIntervalChanged, ((newVal) => {\n const statusUpdateInterval = ueViewer.statusUpdateInterval ?? 0.5;\n if (statusUpdateInterval === 0) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('statusUpdate', (statusUpdate) => {\n ueViewer.statusUpdateEvent.emit(statusUpdate);\n }))\n return disposer;\n })));\n\n this.dv(new ObjResettingWithEvent(ueViewer.propChangedListeningChanged, () => {\n const propChangedListening = ueViewer.propChangedListening ?? true;\n if (!propChangedListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('propChanged', (changedEvent) => {\n ueViewer.propChanged.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.objectEventListeningChanged, () => {\n const objectEventListening = ueViewer.objectEventListening ?? true;\n if (!objectEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('objectEvent', (changedEvent) => {\n ueViewer.objectEvent.emit(changedEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.widgetEventListeningChanged, () => {\n const widgetEventListening = ueViewer.widgetEventListening ?? true;\n if (!widgetEventListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('widgetEvent', (widgetEvent) => {\n ueViewer.widgetEvent.emit(widgetEvent);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.speechRecognitionListeningChanged, () => {\n const speechRecognitionListening = ueViewer.speechRecognitionListening ?? true;\n if (!speechRecognitionListening) return undefined;\n\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('speechRecognition', (info) => {\n ueViewer.speechRecognition.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.customMessageListeningChanged, () => {\n const customMessageListening = ueViewer.customMessageListening ?? true;\n if (!customMessageListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('customMessage', (info) => {\n ueViewer.customMessage.emit(info);\n }));\n return disposer;\n }));\n\n this.dv(new ObjResettingWithEvent(ueViewer.editingEventListeningChanged, () => {\n const editStatusListening = ueViewer.editingEventListening ?? true;\n if (!editStatusListening) return undefined;\n const disposer = new Destroyable();\n disposer.d(cloudViewer.disposableOnUeEvent('editingEvent', (info) => {\n info.objectIDs = info.objectIDs.map((id: string) => {\n return id.split(\"_\")[0];\n })\n ueViewer.editingEvent.emit(info);\n }));\n return disposer;\n }));\n }\n\n }\n}\n","import { ESVOptionUe, ESVOptionUeHTML5, ESVOptionUeUri, ESVOptionUeWs } from \"@u-gis/core\";\nimport { createProcessingFromAsyncFunc, Destroyable, Event, sleep } from \"xbsj-base\";\nimport { ESUeViewer, UeCloudViewerBase } from \"../index\";\nimport { CSTMPSViewer, H5Viewer, INNPSViewer } from \"../Viewers\";\nimport { UeLocalViewer } from \"./UeLocalViewer\";\nimport { ViewerInstance } from \"./ViewerInstance\";\nimport { ViewerLocalInstance } from \"./ViewerLocalInstance\";\nexport class ViewerCreating extends Destroyable {\n private _reconnectEvent = this.dv(new Event<[UeCloudViewerBase | undefined]>());\n\n constructor(container: HTMLDivElement, params: ESVOptionUe, ueViewer: ESUeViewer) {\n super();\n const hasPorp = (obj: Object, str: string) => { return obj.hasOwnProperty(str); }\n\n //重连时间间隔\n let intervalTime = 0;\n //定时器\n let timer: number | undefined;\n this.d(() => { timer && clearTimeout(timer) })\n\n //大屏模式\n // @ts-ignore \n if (window.ue && window.ue.es) {\n //@ts-ignore\n if (window.ue.esinput) {\n //新版ESWebView\n ueViewer.setStatus('Creating');\n console.log(`存在(window.ue && window.ue.es && window.ue.esinput 需要适配新版ESWebView 鼠标穿透), 开始创建UeFalseCloudViewer...`);\n ueViewer.setStatusLog(`开始创建本地视口...`);\n\n const viewer = this.dv(new UeLocalViewer(container, ueViewer));\n this.d(() => ueViewer.viewer = undefined);\n ueViewer.viewer = viewer;\n ueViewer.setStatus('Created');\n ueViewer.setStatusLog('本地视口创建成功!');\n this.dv(new ViewerLocalInstance(container, ueViewer, viewer));\n\n } else {\n //旧版ESWebView 不再兼容\n // ueViewer.setStatus('Creating');\n // console.log(`存在(window.ue && window.ue.es), 开始创建UeFalseCloudViewer...`);\n // ueViewer.setStatusLog(`开始创建本地视口...`);\n // const viewer = this.dv(new UeLocalViewer(container, ueViewer));\n // this.d(() => ueViewer.viewer = undefined);\n // ueViewer.viewer = viewer;\n // ueViewer.setStatus('Created');\n // ueViewer.setStatusLog('本地视口创建成功!');\n // this.dv(new ViewerInstance(ueViewer, viewer));\n\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog('请升级 ESWebView !');\n }\n\n } else if (hasPorp(params.options, 'ws') || ((hasPorp(params.options, 'uri') && hasPorp(params.options, 'app')))) {\n ueViewer.setStatus('Creating');\n ueViewer.setStatusLog(`开始创建云渲染视口...`);\n //为了重连时清空容器\n let videoContainer: HTMLDivElement | undefined;\n this.d(() => {\n ueViewer.setStatus('Raw');\n ueViewer.setStatusLog('');\n (container && videoContainer) && container.removeChild(videoContainer) && (videoContainer = undefined);\n });\n\n const createViewerProcessing = this.dv(createProcessingFromAsyncFunc<void>(async (cancelsManager) => {\n {\n ueViewer.viewer && (!ueViewer.viewer.isDestroyed()) && ueViewer.viewer.destroy();\n ueViewer.viewer = undefined;\n videoContainer && container.removeChild(videoContainer) && (videoContainer = undefined);\n\n videoContainer = document.createElement('div');\n videoContainer.setAttribute('earthsdk3-ue', 'earthsdk3-ue-videoContainer');\n videoContainer.style.cssText = `position:relative; height: 100%;width:100%;`;\n container.appendChild(videoContainer);\n }\n\n let wsserver, wsesmsg, isInner;\n if (hasPorp(params.options, 'ws')) {\n const { ws, esmsg, uselnternalSignallingServer } = (params as ESVOptionUeWs).options;\n wsserver = ws;\n wsesmsg = esmsg;\n isInner = uselnternalSignallingServer ?? false;\n }\n if (hasPorp(params.options, 'uri') && hasPorp(params.options, 'app')) {\n //通过信令服务器获取ws地址\n const { offsetWidth, offsetHeight } = videoContainer;\n let { uri, app, token } = (params as ESVOptionUeUri).options;\n if (!uri.endsWith('/')) uri += '/';\n const tokenStr = token ? `?essstoken=${token}` : '';\n const resParam = `/${app}/${offsetWidth ?? 1920}/${offsetHeight ?? 1080}` + tokenStr;\n console.log(`请求信令服务器: ${uri}instance${resParam}`);\n const response = await cancelsManager.promise(fetch(`${uri}instance${resParam}`, { method: \"GET\", }));\n const resultJson = await cancelsManager.promise(response.json());\n if (resultJson && resultJson.status !== \"ok\") {\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog(`信令服务器请求失败 ${resultJson.status}`);\n this._reconnectEvent.emit(undefined);\n return;\n } else {\n //ESSS第一次永远连不上,直接在这睡一会再走下个流程\n console.log(`信令服务器请求成功! ${JSON.stringify(resultJson, undefined, ' ')}`);\n // console.log(`sleep 5s...`);\n await sleep(2000);\n // console.log(`sleep 5s...done!`);\n const { server, esmsg, instanceId, useInternalSignallingServer } = resultJson;\n if (!instanceId) {\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog(`检查信令服务器版本,返回数据错误! `);\n console.log(`信令服务器返回数据错误!不包含instanceId!请升级到 ESSS V3.0+ 版本!`);\n this._reconnectEvent.emit(undefined);\n return;\n }\n\n wsserver = server;\n wsesmsg = esmsg;\n isInner = useInternalSignallingServer ?? false;\n\n //保存信令服务器返回的数据\n ueViewer.esssResponse = resultJson;\n }\n }\n\n const cloudViewer = this.dv(isInner ? new INNPSViewer(videoContainer, wsserver, wsesmsg, ueViewer) : new CSTMPSViewer(videoContainer, wsserver, wsesmsg, ueViewer));\n this.d(() => ueViewer.viewer = undefined);\n //监听cloudViewer事件\n this.d(cloudViewer.errorEvent.don((str) => {\n const errorStr = `[${str}]:像素流连接错误!`;\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog(errorStr);\n this._reconnectEvent.emit(cloudViewer);\n }));\n\n await cancelsManager.promise(new Promise<void>(resolve => this.d(cloudViewer.readyEvent.donce(resolve))));\n\n ueViewer.setStatus('Created');\n ueViewer.setStatusLog('云渲染视口创建成功!');\n //连接成功时间间隔归零\n intervalTime = 0;\n timer && clearTimeout(timer);\n timer = undefined;\n\n //尺寸初始化\n const { offsetWidth, offsetHeight, } = videoContainer;\n cloudViewer.resize(offsetWidth * window.devicePixelRatio, offsetHeight * window.devicePixelRatio);\n\n ueViewer.viewer = cloudViewer;\n this.d(() => ueViewer.viewer = undefined);\n this.dv(new ViewerInstance(ueViewer, cloudViewer));\n }));\n\n createViewerProcessing.start();\n\n this.d(this._reconnectEvent.don((cviewer) => {\n if (timer !== undefined) return;\n cviewer && (!cviewer.isDestroyed()) && cviewer.destroy();\n ueViewer.viewer && (!ueViewer.viewer.isDestroyed()) && ueViewer.viewer.destroy();\n ueViewer.viewer = undefined;\n\n if (ueViewer.autoReconnect) {\n ueViewer.setStatus('Reconnecting');\n ueViewer.setStatusLog(`正在尝试重新连接...`);\n intervalTime = (intervalTime + 5000) > 30000 ? 30000 : (intervalTime + 5000);\n console.warn(`间隔:${intervalTime / 1000}s,正在尝试重新连接...`);\n\n timer = window.setTimeout(() => {\n createViewerProcessing.restart();\n }, intervalTime);\n }\n }))\n\n this.d(createViewerProcessing.errorEvent.don(error => {\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog(`云渲染视口创建失败!`);\n console.warn(`云渲染视口创建失败!`, error);\n this._reconnectEvent.emit(undefined);\n }));\n\n } else if (hasPorp(params.options, 'project')) {\n const item = params as ESVOptionUeHTML5;\n const project = item.options.project;\n const baseUrl = item.options.baseUrl;\n ueViewer.setStatus('Creating');\n ueViewer.setStatusLog(`下载编译中...`);\n const h5Viewer = this.dv(new H5Viewer(container, project, baseUrl, ueViewer));\n ueViewer.viewer = h5Viewer;\n this.d(() => ueViewer.viewer = undefined);\n } else {\n ueViewer.setStatus('Error');\n ueViewer.setStatusLog(`视口创建失败!`);\n console.warn(`视口创建失败: 参数错误!`);\n }\n }\n}\n","import { ESJFlyToParam, ESJsonObjectType, ESJVector2D, ESJVector2DArray, ESJVector3D, ESJVector3DArray, ESJVector4D, ESSceneObject, ESViewer, ESVisualObject, ESVOption, ESVOptionUe, getGeoBoundingSphereFromPositions } from \"@u-gis/core\";\nimport { createGuid, Event, extendClassProps, ObjResettingWithEvent, react, UniteChanged } from 'xbsj-base';\nimport { createReactProps, reactPropDefaults } from './inner/ReactProps';\nimport { ViewerCreating } from './inner/ViewerCreating';\nimport { bind3DTilesetByTagCallFunc, bindActorByTagCallFunc, bindImageryByTagCallFunc, captureCallFunc, changeNavigationModeCallFunc, createActorByClassCallFunc, flyInCallFunc, flyInDefaultCameraCallFunc, flyToCallFunc, generateMemReportCallFunc, getAllSocketNamesByActorTagCallFunc, getBoundSphereCallFunc, getBoundSphereWithChildrenCallFunc, getCameraRelativeHeightCallFunc, getFillMaterialParamInfoCallFunc, getGlobalPropertyCallFunc, getHeightByLonLatCallFunc, getHeightByLonLatsCallFunc, getIdByComponentNameAndHitItemCallFunc, getLonLatAltToScreenPositionCallFunc, getObjectByInfoCallFunc, getStatusCallFunc, getStrokeMaterialParamInfoCallFunc, getTilesetMaterialIDListCallFunc, getVersionCallFunc, highlightActorByTagCallFunc, mountPakFiles, moveObjectsCallFunc, partialCaptureCallFunc, pickCallFunc, pickPositionCallFunc, quitCallFunc, resetWithCurrentCameraCallFunc, restoreOriginalSceneCallFunc, saveStringToFileCallFunc, sendCustomMessageCallFunc, setGlobalPropertyCallFunc, startEditingCallFunc, startVoiceCallFunc, stopEditingCallFunc, stopVoiceCallFunc, uePositionToLonLatAltCallFunc, unBind3DTilesetByIdCallFunc, unBind3DTilesetByTagCallFunc, unBindActorByIDCallFunc, unBindActorByTagCallFunc, unBindImageryByIdCallFunc, unBindImageryByTagCallFunc } from './uemsg/CallUeFuncs';\nimport { UeCloudViewerBase } from './uemsg/UeCloudViewerBase';\nimport { UeEventsType } from './uemsg/UeEventsType';\nimport { NavigationModeCallFuncParam } from './uemsg/UeFuncsType';\n/**\n * https://c0yh9tnn0na.feishu.cn/wiki/RvpywAxsXiP4j8kWMhKce8tannc\n */\nexport class ESUeViewer extends ESViewer {\n static readonly type = this.register('ESUeViewer', this);\n override get defaultProps() { return ESUeViewer.createDefaultProps(); }\n\n private _viewer = this.dv(react<UeCloudViewerBase | undefined>(undefined));\n set viewer(value: UeCloudViewerBase | undefined) { this._viewer.value = value; }\n get viewer() { return this._viewer.value; }\n\n private _esssResponse: { [key: string]: any } | undefined; // 保存esss返回的值\n get esssResponse() { return this._esssResponse; }\n set esssResponse(value: { [key: string]: any } | undefined) { this._esssResponse = value; }\n\n private _speechRecognition = this.dv(new Event<[UeEventsType['speechRecognition']]>());\n get speechRecognition() { return this._speechRecognition; }\n\n private _propChanged = this.dv(new Event<[UeEventsType['propChanged']]>());\n get propChanged() { return this._propChanged; }\n\n private _objectEvent = this.dv(new Event<[UeEventsType['objectEvent']]>());\n get objectEvent() { return this._objectEvent; }\n\n private _widgetEvent = this.dv(new Event<[UeEventsType['widgetEvent']]>());\n get widgetEvent() { return this._widgetEvent; }\n\n private _customMessage = this.dv(new Event<[UeEventsType['customMessage']]>());\n get customMessage() { return this._customMessage; }\n\n private _statusUpdateEvent = this.dv(new Event<[UeEventsType['statusUpdate']]>());\n get statusUpdateEvent() { return this._statusUpdateEvent; }\n\n private _statusUpdateEventdon = (() => {\n this.d(this.statusUpdateEvent.don((data) => {\n this._statusInfo.fps = data.FPS ?? 0;\n this._statusInfo.length = data.length ?? 0;\n this._statusInfo.position = data.position ?? [0, 0, 0];\n this._statusInfo.rotation = data.rotation ?? [0, 0, 0];\n }))\n })()\n\n //自身函数----------------------------------\n async uePositionToLonLatAlt(UEPosition: ESJVector3D) {\n if (!this.viewer) {\n console.warn('UEPositionToLonLatAlt: viewer is undefined')\n return undefined;\n }\n const res = await uePositionToLonLatAltCallFunc(this.viewer, UEPosition);\n return res;\n }\n async changeNavigationMode(parms: NavigationModeCallFuncParam) {//修改相机漫游模式\n if (!this.viewer) {\n console.warn('ChangeNavigationMode: viewer is undefined')\n return undefined;\n }\n const res = await changeNavigationModeCallFunc(this.viewer, parms);\n (res && !res.error) && ((this._navigationMode.value = parms.mode))\n return res;\n }\n\n async resetWithCurrentCamera(id: string) {\n if (!this.viewer) {\n console.warn('resetWithCurrentCamera: viewer is undefined')\n return undefined;\n }\n const res = await resetWithCurrentCameraCallFunc(this.viewer, id);\n return res;\n }\n\n async getAllSocketNamesByActorTag(ActorTag: string) {\n if (!this.viewer) {\n console.warn('GetAllSocketNamesByActorTag: viewer is undefined')\n return undefined;\n }\n const res = await getAllSocketNamesByActorTagCallFunc(this.viewer, ActorTag);\n return res;\n }\n\n async getBoundSphere(id: string) {\n if (!this.viewer) {\n console.warn('getBoundSphere: viewer is undefined')\n return undefined;\n }\n const res = await getBoundSphereCallFunc(this.viewer, id);\n return res;\n }\n async getBoundSphereWithChildren(id: string) {\n if (!this.viewer) {\n console.warn('getBoundSphereWithChildren: viewer is undefined')\n return undefined;\n }\n const res = await getBoundSphereWithChildrenCallFunc(this.viewer, id);\n return res;\n }\n async getStrokeMaterialParamInfo(id: string) {\n if (!this.viewer) {\n console.warn('GetStrokeMaterialParamInfo: viewer is undefined')\n return undefined;\n }\n const res = await getStrokeMaterialParamInfoCallFunc(this.viewer, id);\n return res;\n }\n async getFillMaterialParamInfo(id: string) {\n if (!this.viewer) {\n console.warn('getFillMaterialParamInfo: viewer is undefined')\n return undefined;\n }\n const res = await getFillMaterialParamInfoCallFunc(this.viewer, id);\n return res;\n }\n async getGlobalProperty(props: string[]) {//获取全局属性信息\n if (!this.viewer) {\n console.warn('getGlobalProperty: viewer is undefined')\n return undefined;\n }\n const res = await getGlobalPropertyCallFunc(this.viewer, props);\n return res;\n }\n async getObjectByInfo(info: { actorTag: string, componentTag?: string }) {\n if (!this.viewer) {\n console.warn('GetObjectByInfo: viewer is undefined')\n return undefined;\n }\n const res = await getObjectByInfoCallFunc(this.viewer, info);\n return res;\n }\n\n async defaultCameraFlyIn(duration: number = 1) {//恢复默认视角\n if (!this.viewer) {\n console.warn('DefaultCameraFlyIn: viewer is undefined')\n return undefined;\n }\n const res = await flyInDefaultCameraCallFunc(this.viewer, duration)\n return res;\n }\n\n async startVoice() {\n if (!this.viewer) {\n console.warn('startVoice:viewer is undefined');\n return undefined;\n }\n const res = await startVoiceCallFunc(this.viewer);\n return res;\n }\n async stopVoice() {\n if (!this.viewer) {\n console.warn('startVoice:viewer is undefined');\n return undefined;\n }\n const res = await stopVoiceCallFunc(this.viewer);\n return res;\n }\n async mountPakFiles(pakArr: any[]) {\n if (!this.viewer) {\n console.warn('mountPakFiles:viewer is undefined');\n return undefined;\n }\n const res = await mountPakFiles(this.viewer, pakArr);\n return res;\n }\n async generateMemReport() {\n if (!this.viewer) {\n console.warn('generateMemReport:viewer is undefined');\n return undefined;\n }\n const res = await generateMemReportCallFunc(this.viewer);\n return res;\n }\n async quit() {//退出ue程序\n if (!this.viewer) {\n console.warn('Quit: viewer is undefined')\n return;\n }\n const res = await quitCallFunc(this.viewer)\n return res;\n }\n\n async bindActorByTag(id: string, actorTag: string) {\n if (!this.viewer) {\n console.warn('BindActorByTag: viewer is undefined')\n return undefined;\n }\n const res = await bindActorByTagCallFunc(this.viewer, id, actorTag)\n return res;\n }\n async restoreOriginalScene() {\n if (!this.viewer) {\n console.warn('RestoreOriginalScene: viewer is undefined')\n return undefined;\n }\n const res = await restoreOriginalSceneCallFunc(this.viewer)\n return res;\n }\n async unBindActorByID(ID: string) {\n if (!this.viewer) {\n console.warn('UnBindActorByID: viewer is undefined')\n return undefined;\n }\n const res = await unBindActorByIDCallFunc(this.viewer, ID)\n return res;\n }\n async unBindActorByTag(ActorTag: string) {\n if (!this.viewer) {\n console.warn('UnBindActorByTag: viewer is undefined')\n return undefined;\n }\n const res = await unBindActorByTagCallFunc(this.viewer, ActorTag)\n return res;\n }\n\n async createActorByClass(ID: string, ActorClass: string) {\n if (!this.viewer) {\n console.warn('CreateActorByClass: viewer is undefined')\n return undefined;\n }\n const res = await createActorByClassCallFunc(this.viewer, ID, ActorClass)\n return res;\n }\n\n async bind3DTilesetByTag(ID: string, ActorTag: string) {\n if (!this.viewer) {\n console.warn('Bind3DTilesetByTag: viewer is undefined')\n return undefined;\n }\n const res = await bind3DTilesetByTagCallFunc(this.viewer, ID, ActorTag)\n return res;\n }\n async unBind3DTilesetByTag(ActorTag: string) {\n if (!this.viewer) {\n console.warn('UnBind3DTilesetByTag: viewer is undefined')\n return undefined;\n }\n const res = await unBind3DTilesetByTagCallFunc(this.viewer, ActorTag)\n return res;\n }\n async unBind3DTilesetById(ID: string) {\n if (!this.viewer) {\n console.warn('UnBind3DTilesetById: viewer is undefined')\n return undefined;\n }\n const res = await unBind3DTilesetByIdCallFunc(this.viewer, ID)\n return res;\n }\n async bindImageryByTag(ID: string, ActorTag: string, ComponentTag: string) {\n if (!this.viewer) {\n console.warn('BindImageryByTag: viewer is undefined')\n return undefined;\n }\n const res = await bindImageryByTagCallFunc(this.viewer, ID, ActorTag, ComponentTag)\n return res;\n }\n async unBindImageryByTag(ActorTag: string, ComponentTag: string) {\n if (!this.viewer) {\n console.warn('UnBindImageryByTag: viewer is undefined')\n return undefined;\n }\n const res = await unBindImageryByTagCallFunc(this.viewer, ActorTag, ComponentTag)\n return res;\n }\n async unBindImageryById(ID: string) {\n if (!this.viewer) {\n console.warn('UnBindImageryById: viewer is undefined')\n return undefined;\n }\n const res = await unBindImageryByIdCallFunc(this.viewer, ID)\n return res;\n }\n async getIdByComponentNameAndHitItem(id: string, ComponentName: string, HitItem: number) {\n if (!this.viewer) {\n console.warn('GetIdByComponentNameAndHitItem: viewer is undefined')\n return undefined;\n }\n const res = await getIdByComponentNameAndHitItemCallFunc(this.viewer, id, ComponentName, HitItem)\n return res;\n }\n\n /**\n * @returns Promise(高度)\n * @deprecated 获取当前视角相机相对地面的高度\n * Channels ?? 'ECC_Visibility'\n */\n async getCameraRelativeHeight(Channel: string = 'ECC_Visibility') {\n if (!this.viewer) {\n console.warn('GetCameraRelativeHeight: viewer is undefined')\n return undefined;\n }\n const res = await getCameraRelativeHeightCallFunc(this.viewer, Channel)\n return res;\n }\n /**\n * 保存str到指定目录下\n * Path ?? \"WindowNoEditor\\\\ProjectName\\\\\"\n * File ?? \"data.txt\"\n */\n async saveStringToFile(str: string, Path?: string, File?: string) {\n if (!this.viewer) {\n console.warn('SaveStringToFile: viewer is undefined')\n return undefined;\n }\n const res = await saveStringToFileCallFunc(this.viewer, str, Path, File)\n return res;\n }\n\n async highlightActorByTag(actorTag: string, isHighlight: boolean = true) {\n if (!this.viewer) {\n console.warn('HighlightActorByTag: viewer is undefined')\n return undefined;\n }\n const res = await highlightActorByTagCallFunc(this.viewer, actorTag, isHighlight)\n return res;\n }\n\n async sendCustomMessage(Message: string) {\n if (!this.viewer) {\n console.warn('SendCustomMessage: viewer is undefined')\n return undefined;\n }\n const res = await sendCustomMessageCallFunc(this.viewer, Message)\n return res;\n }\n\n async getStatus() {\n if (!this.viewer) {\n console.warn('GetStatus:viewer is undefined');\n return;\n }\n return await getStatusCallFunc(this.viewer)\n\n }\n /**\n * 获取场景中可替换的材质列表\n */\n async getTilesetMaterialIDList() {\n if (!this.viewer) {\n console.warn('GetTilesetMaterialIDList:viewer is undefined');\n return;\n }\n const res = await getTilesetMaterialIDListCallFunc(this.viewer);\n return res;\n }\n //——————————————————————————————————————————\n\n //抽象函数实现------------------------------\n async pick(screenPosition?: ESJVector2D, attachedInfo?: any, parentInfo?: boolean) {\n if (!this.viewer) return undefined;\n let newScreenPosition = screenPosition;\n //ue大屏模式视口默认全屏,需要计算容器的偏移量\n //@ts-ignore\n if (screenPosition && window.ue && this.container) {\n const [offsetX, offsetY] = screenPosition;\n const { left, top } = this.container.getBoundingClientRect();\n newScreenPosition = [left + offsetX, top + offsetY];\n }\n return await pickCallFunc(this.viewer, newScreenPosition, attachedInfo, parentInfo);\n };\n\n async pickPosition(screenPosition: ESJVector2D) {\n if (!this.viewer) return undefined;\n let newScreenPosition = screenPosition;\n //ue大屏模式视口默认全屏,需要计算容器的偏移量\n //@ts-ignore\n if (screenPosition && window.ue && this.container) {\n const [offsetX, offsetY] = screenPosition;\n const { left, top } = this.container.getBoundingClientRect();\n newScreenPosition = [left + offsetX, top + offsetY];\n }\n return await pickPositionCallFunc(this.viewer, newScreenPosition);\n }\n\n async flyIn(position: ESJVector3D, rotation: ESJVector3D = [0, 0, 0], duration: number = 1, flyMode: \"default\" | \"uniform\" = \"default\") {\n if (!this.viewer) return undefined;\n const res = await flyInCallFunc(this.viewer, undefined, position, rotation, duration, flyMode);\n if (!res) return undefined\n if (res.endType === 0) console.warn(`flyTo:flyTo is end! endType:${res.endType}`);\n if (res.endType === 1) console.warn(`flyTo:飞行中断! endType:${res.endType}`);\n return res;\n }\n async flyTo(flyToParam: ESJFlyToParam, position: ESJVector3D, flyMode: \"default\" | \"uniform\" = \"default\") {\n if (!this.viewer) return undefined;\n const res = await flyToCallFunc(this.viewer, undefined, undefined, flyToParam, position, flyMode);\n if (!res) return undefined\n if (res.endType === 0) console.warn(`flyTo:flyTo is end! endType:${res.endType}`);\n if (res.endType === 1) console.warn(`flyTo:飞行中断! endType:${res.endType}`);\n return res;\n }\n\n flyToBoundingSphere(rectangle: ESJVector4D, distance?: number, duration: number = 1) {\n const positions: ESJVector3DArray = [\n [rectangle[0], rectangle[1], 0],\n [rectangle[0], rectangle[3], 0],\n [rectangle[2], rectangle[3], 0],\n [rectangle[2], rectangle[1], 0]\n ]\n const options = getGeoBoundingSphereFromPositions(positions);\n if (!options) return;\n const { center, radius } = options\n const flyToParam = {\n distance: distance ?? radius,\n heading: 0,\n pitch: -90,\n flyDuration: duration,\n hDelta: 0,\n pDelta: 0\n } as const;\n this.flyTo(flyToParam, center)\n };\n\n /**\n * @description 获取当前相机信息\n * @returns @type {position:ESJVector3D, rotation:ESJVector3D}\n */\n getCurrentCameraInfo() {\n const { position, rotation } = this._statusInfo;\n return { position, rotation }\n }\n /**\n * @description 获取当前比例尺\n * @returns 比例尺\n */\n getLengthInPixel() {\n return this._statusInfo.length;\n };\n\n /**\n * @description 切换为第一人称漫游模式 w a s d可以控制相机移动\n * @param position 相机位置\n * @returns \n */\n async changeToWalk(position: ESJVector3D, jumpZVelocity: number = 4.2) {\n if (!this.viewer) return undefined;\n const opt = { mode: 'Walk', position, jumpZVelocity } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n };\n\n /**\n * 切换导航模式为“地图”模式。\n * 此模式允许用户在地图上自由导航。\n */\n async changeToMap() {\n if (!this.viewer) return undefined;\n const opt = { mode: 'Map' } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n }\n\n /**\n * 切换到“旋转地球”导航模式。\n * 此模式允许用户在连续循环中旋转地球。\n * @param latitude - 地球旋转的纬度。默认为 38 度。\n * @param height - 地球旋转的高度。默认为 10,000,000 米。\n * @param cycleTime - 一个完整循环所需的秒数。默认为 60 秒。\n */\n async changeToRotateGlobe(latitude: number = 38, height: number = 10000000, cycleTime: number = 60) {\n if (!this.viewer) return undefined;\n const opt = { mode: 'RotateGlobe', latitude, height, cycleTime } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n }\n\n /**\n * 切换导航模式为“Line”(线路)沿线漫游。\n * 此模式允许用户沿指定的地理线路导航。\n * @param geoLineStringId - 要导航的地理线路的唯一标识符。\n * @param speed - 用户在线路上导航的速度 默认10m/s。\n * @param heightOffset - 用户在线路上导航的垂直偏移量 默认 10米。\n * @param loop - 一个布尔值,表示在到达线路末尾后是否导航回到起点循环。默认开启\n * @param turnRateDPS - 用户在线路上导航的转弯速度 度/秒。\n * @param lineMode - 路径漫游模式 auto/manual 默认 auto。\n */\n async changeToLine(geoLineStringId: string, speed: number = 10, heightOffset: number = 10, loop: boolean = true, turnRateDPS: number = 10, lineMode: \"auto\" | \"manual\" = \"auto\") {\n if (!this.viewer) return undefined;\n const opt = { mode: 'Line', geoLineStringId, speed, heightOffset, loop, turnRateDPS, lineMode } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n }\n\n /**\n * 切换导航模式为“UserDefined” 仅UE支持。\n * 此模式允许用户自定义交互方式。\n * @param userDefinedPawn ue支持,用户自定义交互方式\n */\n async changeToUserDefined(userDefinedPawn: string) {\n if (!this.viewer) return undefined;\n const opt = { mode: 'UserDefined', userDefinedPawn } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n };\n\n /**\n * 切换导航模式为“RotatePoint”(绕点)绕点旋转。此模式允许用户绕点旋转。\n * @param position - 要环绕的点位置(经纬度)。\n * @param heading - 初始的环绕角度,默认0。\n * @param pitch - 初始的环绕俯仰角,默认-30。\n * @param distance - 距离点的距离,默认50000米 ,单位米\n * @param orbitPeriod - 默认环绕一周的时间 单位S,默认60S。\n */\n async changeToRotatePoint(position: ESJVector3D, distance: number = 50000, orbitPeriod: number = 60, heading: number = 0, pitch: number = -30) {\n if (!this.viewer) return undefined;\n const opt = {\n mode: 'RotatePoint', position, distance, orbitPeriod, heading, pitch\n } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n }\n /**\n * 切换导航模式为“Follow”(跟随)跟随模式。 此模式允许视角跟随ES对象。\n * @param objectId - 要跟随的ES对象Id。\n * @param heading - 初始的环绕角度,默认0。\n * @param pitch - 初始的环绕俯仰角,默认-30。\n * @param distance - 距离点的距离,默认0米 ,单位米 传入0会自行计算距离为包围盒半径*3\n */\n async changeToFollow(objectId: string, distance: number = 0, heading: number = 0, pitch: number = -30, relativeRotation: boolean = true) {\n if (!this.viewer) return undefined;\n const opt = { mode: 'Follow', objectId, distance, heading, pitch, relativeRotation } as const;\n const res = await changeNavigationModeCallFunc(this.viewer, opt);\n (res && !res.error) && (this._navigationMode.value = opt.mode);\n return res;\n }\n\n getFPS() { return this._statusInfo.fps };\n\n override async getVersion() {\n //@ts-ignore\n const copyright = window.g_XE3CopyRights ?? {};\n if (!this.viewer) return copyright;\n const version = await getVersionCallFunc(this.viewer);\n copyright.esforue = version;\n return copyright;\n }\n\n async getHeightByLonLat(lon: number, lat: number, channel: string = \"ECC_Visibility\") {\n if (!this.viewer) return null;\n const res = await getHeightByLonLatCallFunc(this.viewer, lon, lat, channel);\n const height = res ? (res.height !== undefined ? res.height : null) : null\n return height;\n };\n\n async getHeightsByLonLats(lonLats: ESJVector2DArray, channel: string = \"ECC_Visibility\") {\n if (!this.viewer) return undefined;\n const res = await getHeightByLonLatsCallFunc(this.viewer, lonLats, channel)\n return res;\n };\n async capture(resx: number = 64, resy: number = 64) {\n if (!this.viewer) return undefined;\n const res = await captureCallFunc(this.viewer, resx, resy);\n return res;\n };\n async partialCapture(startPos: ESJVector2D, size: ESJVector2D = [64, 64]) {\n if (!this.viewer) {\n console.warn('partialCapture:viewer is undefined');\n return undefined;\n }\n const res = await partialCaptureCallFunc(this.viewer, startPos, size);\n return res;\n }\n\n async lonLatAltToScreenPosition(position: ESJVector3D) {\n if (!this.viewer) return undefined;\n const res = await getLonLatAltToScreenPositionCallFunc(this.viewer, position);\n return res && [res.X, res.Y] as ESJVector2D;\n };\n\n //------------------------------抽象函数实现\n\n async setGlobalProperty(params: ESJsonObjectType) {\n if (!this.viewer) return undefined;\n return await setGlobalPropertyCallFunc(this.viewer, params)\n };\n\n async startEditing(sceneObject: ESSceneObject, modes: string[] | string, options?: { useKeyToSwitch?: boolean; callSource?: \"outer\" | \"inner\" }) {\n options = Object.assign({ useKeyToSwitch: true, callSource: \"outer\" }, options);\n const editingObj = (sceneObject.combinationClass ? sceneObject.getMainClass() : sceneObject) as ESVisualObject;\n if (!editingObj) return;\n if (!this.viewer) return;\n if (modes == undefined) return;\n const editingModes = Array.isArray(modes) ? [...modes] : [modes];\n editingObj.editingID = `${options.callSource}_${createGuid()}`;\n return await startEditingCallFunc(this.viewer, editingObj.id, editingObj.editingID, editingModes, options.useKeyToSwitch);\n }\n async stopEditing() {\n if (!this.viewer) return;\n return await stopEditingCallFunc(this.viewer);\n }\n async moveObjects(sceneObjects: ESSceneObject[]) {\n if (!this.viewer) return;\n const editingObjIDs: string[] = []\n const editingID = createGuid();\n for (let i = 0; i < sceneObjects.length; i++) {\n const element = sceneObjects[i];\n const editingObj = (element.combinationClass ? element.getMainClass() : element) as ESVisualObject;\n editingObj.editingID = editingID\n editingObj && editingObjIDs.push(editingObj.id)\n }\n if (editingObjIDs.length === 0) return;\n return await moveObjectsCallFunc(this.viewer, editingObjIDs, editingID);\n }\n constructor(option: ESVOption) {\n super(option);\n if (option.type !== 'ESUeViewer') throw new Error('option.type must be ESUeViewer');\n\n const opt = option as ESVOptionUe;\n this.d(this._viewer.changed.don(() => { this.viewerChanged.emit(this.viewer); }));\n this.dv(new ObjResettingWithEvent(this.subContainerChanged, () => {\n this.setStatus('Raw');\n this.setStatusLog('');\n if (!this.subContainer) return undefined;\n return new ViewerCreating(this.subContainer, opt, this);\n }));\n }\n\n override getProperties() {\n return [\n ...super.getProperties()\n ];\n }\n\n static override defaults = { ...reactPropDefaults };\n\n}\nexport namespace ESUeViewer {\n export const createDefaultProps = () => ({\n ...ESViewer.createDefaultProps(),\n /**\n * 新增UE属性步骤!!\n * 1. createReactProps 中定义属性\n * 2. reactPropDefaults 中定义默认值\n */\n ...createReactProps(),\n\n //分辨率缩放比例\n resolutionScale: 1,\n autoReconnect: false,\n\n propChangedListening: undefined as boolean | undefined,\n objectEventListening: undefined as boolean | undefined,\n widgetEventListening: undefined as boolean | undefined,\n speechRecognitionListening: undefined as boolean | undefined,\n customMessageListening: undefined as boolean | undefined,\n });\n}\nextendClassProps(ESUeViewer.prototype, ESUeViewer.createDefaultProps);\nexport interface ESUeViewer extends UniteChanged<ReturnType<typeof ESUeViewer.createDefaultProps>> { }\n","import { EngineObject, ESJsonObjectType, ESSceneObject } from \"@u-gis/core\";\nimport { UeObjectPropValFuncType } from \"./types\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent, Event, JsonValue } from \"xbsj-base\";\nimport { destroyCallFunc } from \"../../../ESUeViewer/uemsg/CallUeFuncs\";\n\nexport class UeESSceneObject<T extends ESSceneObject = ESSceneObject> extends EngineObject<T> {\n // null 表示不设置,undefined表示不做任何转换 \n static propValFuncs: { [k: string]: UeObjectPropValFuncType | undefined | null } = {\n ref: null,\n devTags: null,\n extras: null,\n execOnceFuncStr: null,\n updateFuncStr: null,\n toDestroyFuncStr: null,\n };\n\n static forceUeUpdateProps: string[] = [];\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n\n //////////////////////////////////////////////////////////////////////////\n // ES对象属性自动更新机制\n if (!sceneObject.combinationClass) {\n\n this.d(this.createdEvent.don(() => {\n // @ts-ignore\n const propValFuncs = this.constructor.propValFuncs as unknown as { [k: string]: UeObjectPropValFuncType | null | undefined };\n\n const dp = sceneObject.defaultProps as ESJsonObjectType;\n const propNames = Object.keys(dp).filter(e => (propValFuncs[e] !== null));\n // @ts-ignore\n propNames.push(...this.constructor.forceUeUpdateProps);\n\n // @ts-ignore\n const undefinedDefaults = (sceneObject.constructor.defaults as ESJsonObjectType);\n\n const newProps = { val: {} as ESJsonObjectType };\n const propChangeds: Event[] = [];\n\n for (let propName of propNames) {\n const propChangedName = propName + 'Changed';\n // @ts-ignore\n const propChanged = sceneObject[propChangedName] as Event;\n propChangeds.push(propChanged);\n\n const vf = propValFuncs[propName];\n if (vf === null) {\n console.error(`vf === null error`);\n throw new Error(`vf === null error`);\n }\n\n const update = () => {\n // @ts-ignore\n const rawPv = sceneObject[propName] ?? undefinedDefaults[propName];\n let propValue = (vf ? vf(rawPv, this, ueViewer, sceneObject) : rawPv) as JsonValue;\n if (propValue === undefined) {\n console.warn(`UE自动更新的属性,不应该为undefined! 属性名:${propName} 对象名:${sceneObject.name} 对象id: ${sceneObject.id}`);\n return;\n }\n newProps.val[propName] = propValue;\n }\n update();\n this.d(propChanged.don(update));\n }\n\n const ueUpdate = () => {\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n ...newProps.val,\n }\n });\n newProps.val = {};\n };\n\n const updateEvent = this.dv(createNextAnimateFrameEvent(...propChangeds));\n this.d(updateEvent.don(ueUpdate));\n this.d(sceneObject.createdEvent.don(ueUpdate));\n this.d(sceneObject.flushEvent.don(() => updateEvent.flush()));\n }));\n }\n {\n /////////////////////////////////////////////////////////////////////\n // createdEvent的实现\n if (!sceneObject.combinationClass) {\n let created = false;\n this.d(() => {\n if (created) destroyCallFunc(viewer, sceneObject.id)\n });\n\n viewer.callUeFunc({\n f: 'create',\n p: {\n type: sceneObject.typeName,\n id: sceneObject.id,\n }\n }).then(() => {\n created = true;\n sceneObject.createdEvent.emit();\n }).catch(err => console.error(err));\n }\n }\n }\n}\n","import { ESVisualObject } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { calcFlyToParamCallFunc, flyInCallFunc, flyToCallFunc } from \"../../../ESUeViewer\";\nimport { UeESSceneObject } from \"../UeESSceneObject\";\nexport class UeESVisualObject<T extends ESVisualObject = ESVisualObject> extends UeESSceneObject<T> {\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n\n this.d(sceneObject.flyToEvent.don((duration) => {\n flyToCallFunc(viewer, sceneObject.id, duration)\n }));\n this.d(sceneObject.flyInEvent.don((duration) => {\n flyInCallFunc(viewer, sceneObject.id, sceneObject.flyInParam?.position, sceneObject.flyInParam?.rotation, (duration ?? 1))\n }));\n\n this.d(sceneObject.calcFlyToParamEvent.don(() => {\n calcFlyToParamCallFunc(viewer, sceneObject.id)\n }));\n this.d(sceneObject.calcFlyInParamEvent.don(() => {\n const cameraInfo = ueViewer.getCurrentCameraInfo();\n if (!cameraInfo) return;\n const { position, rotation } = cameraInfo;\n sceneObject.flyInParam = { position, rotation, flyDuration: 1 };\n }));\n\n this.d(ueViewer.propChanged.don((info) => {\n if (info.objId !== sceneObject.id) return\n Object.keys(info.props).forEach(key => {\n const prop = info.props[key] === null ? undefined : info.props[key]\n // @ts-ignore\n sceneObject[key] = prop\n });\n }));\n\n }\n}\n","import { ESJVector2D, ESJVector3D, ESObjectWithLocation } from \"@u-gis/core\";\nimport { UeESVisualObject } from \"../UeESVisualObject\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\nimport {\n smoothMoveCallFunc, smoothMoveOnGroundCallFunc,\n smoothMoveWithRotationCallFunc, smoothMoveWithRotationOnGroundCallFunc\n} from \"../../../ESUeViewer/uemsg/CallUeFuncs\";\nimport { CallUeFuncResult, SmoothMoveRelativelyType, SmoothMoveRelativelyWithRotationType } from \"./types\";\n\nexport class UeESObjectWithLocation<T extends ESObjectWithLocation = ESObjectWithLocation> extends UeESVisualObject<T> {\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n\n const update = () => {\n //多发一次测试\n if (sceneObject.editing) return;\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n position: sceneObject.position,\n rotation: sceneObject.rotation\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.positionChanged,\n sceneObject.rotationChanged,\n sceneObject.editingChanged,\n ));\n this.d(updateEvent.don(() => { setTimeout(update, 0) }));\n\n this.d(sceneObject.smoothMoveEvent.don((Destination: ESJVector3D, Time: number) => {\n smoothMoveCallFunc(viewer, sceneObject.id, Destination, Time)\n }))\n this.d(sceneObject.smoothMoveWithRotationEvent.don((Destination: ESJVector3D, NewRotation: ESJVector3D, Time: number) => {\n smoothMoveWithRotationCallFunc(viewer, sceneObject.id, Destination, NewRotation, Time)\n }))\n this.d(sceneObject.smoothMoveOnGroundEvent.don((Lon: number, Lat: number, Time: number, Ground: string) => {\n smoothMoveOnGroundCallFunc(viewer, sceneObject.id, Lon, Lat, Ground, Time)\n }))\n this.d(sceneObject.smoothMoveWithRotationOnGroundEvent.don((NewRotation: ESJVector3D, Lon: number, Lat: number, Time: number, Ground: string) => {\n smoothMoveWithRotationOnGroundCallFunc(viewer, sceneObject.id, NewRotation, Lon, Lat, Time, Ground)\n }))\n\n this.d(sceneObject.smoothMoveKeepPitchEvent.don(async (Destination: ESJVector3D, Time: number) => {\n const res = await viewer.callUeFunc<CallUeFuncResult>({\n f: 'SmoothMoveKeepPitch',\n p: {\n id: sceneObject.id,\n Destination, Time\n }\n });\n if (res.error) console.error(`SmoothMoveKeepPitch:`, res.error);\n }))\n\n\n //自动落地\n this.d(sceneObject.automaticLandingEvent.don((flag) => {\n const posi = [sceneObject.position[0], sceneObject.position[1]] as ESJVector2D\n ueViewer.getHeightByLonLat(sceneObject.position[0], sceneObject.position[1], 'Visibility').then((res) => {\n if (res !== null) {\n sceneObject.position = [...posi, res]\n sceneObject.collision = flag\n }\n })\n }));\n\n const SmoothMoveRelativelyCallFunc = async (ueViewer: ESUeViewer, id: string, RelativePosition: ESJVector3D, Time: number) => {\n const { viewer } = ueViewer;\n if (!viewer) {\n console.error(`SmoothMoveRelatively: ueViewer.viewer is undefined`);\n return undefined;\n }\n const res = await viewer.callUeFunc<SmoothMoveRelativelyType['SmoothMoveRelatively']['result']>({\n f: 'SmoothMoveRelatively',\n p: { id, RelativePosition, Time }\n })\n if (res.error) console.error(`SmoothMoveRelatively:`, res.error);\n return res;\n }\n\n this.d(sceneObject.smoothMoveRelativelyEvent.don((RelativePosition, Time) => {\n SmoothMoveRelativelyCallFunc(ueViewer, sceneObject.id, RelativePosition, Time)\n }))\n\n const SmoothMoveRelativelyWithRotationCallFunc = async (ueViewer: ESUeViewer, id: string, RelativePosition: ESJVector3D, NewRotation: ESJVector3D, Time: number) => {\n const { viewer } = ueViewer;\n if (!viewer) {\n console.error(`SmoothMoveRelativelyWithRotation: ueViewer.viewer is undefined`);\n return undefined;\n }\n const res = await viewer.callUeFunc<SmoothMoveRelativelyWithRotationType['SmoothMoveRelativelyWithRotation']['result']>({\n f: 'SmoothMoveRelativelyWithRotation',\n p: { id, RelativePosition, NewRotation, Time }\n })\n if (res.error) console.error(`SmoothMoveRelativelyWithRotation:`, res.error);\n return res;\n }\n this.d(sceneObject.smoothMoveRelativelyWithRotationEvent.don((RelativePosition, NewRotation, Time) => {\n SmoothMoveRelativelyWithRotationCallFunc(ueViewer, sceneObject.id, RelativePosition, NewRotation, Time)\n }))\n\n }\n}\n","import { ESGeoVector, ESJFillStyle, ESJPointStyle, ESJStrokeStyle } from \"@u-gis/core\";\nimport { UeESVisualObject } from \"../UeESVisualObject\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\n\nexport class UeESGeoVector<T extends ESGeoVector = ESGeoVector> extends UeESVisualObject<T> {\n static override propValFuncs = {\n ...UeESVisualObject.propValFuncs,\n pointStyle: (val: ESJPointStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n strokeStyle: (val: ESJStrokeStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n fillStyle: (val: ESJFillStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n };\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n\n const update = () => {\n //多发一次测试\n if (sceneObject.editing) return;\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n points: sceneObject.points\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.pointsChanged,\n sceneObject.editingChanged,\n ));\n this.d(updateEvent.don(() => { setTimeout(update, 0) }));\n }\n}\n","import { ESLabel } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from '../UeESObjectWithLocation';\nimport { ESUeViewer } from '../../../ESUeViewer';\nexport class UeESLabel<T extends ESLabel = ESLabel> extends UeESObjectWithLocation<T> {\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n this.d(ueViewer.widgetEvent.don((info) => {\n if (info.objId !== sceneObject.id) return\n const { type, add } = info;\n sceneObject.widgetEvent.emit({ type, add });\n }))\n }\n}\n","import { UeESObjectWithLocation } from '../UeESObjectWithLocation';\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { ESJFillStyle, ESJPointStyle, ESJStrokeStyle, ESLocalVector } from \"@u-gis/core\";\nexport class UeESLocalVector<T extends ESLocalVector = ESLocalVector> extends UeESObjectWithLocation<T> {\n static override propValFuncs = {\n ...UeESObjectWithLocation.propValFuncs,\n pointStyle: (val: ESJPointStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n strokeStyle: (val: ESJStrokeStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n fillStyle: (val: ESJFillStyle) => ({\n ...val,\n materialParams: JSON.stringify(val.materialParams ?? {}),\n }),\n };\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n\n }\n}\n","import { ESUeViewer } from \"../../../ESUeViewer\";\nimport { ESLocalVector2D } from \"@u-gis/core\";\nimport { UeESLocalVector } from \"../UeESLocalVector\";\nexport class UeESLocalVector2D<T extends ESLocalVector2D = ESLocalVector2D> extends UeESLocalVector<T> {\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) return;\n }\n}\n","import { EngineObject, ES3DTileset, ESJFeatureStyleType, ESJResource, ESVisualObject, FeatureColorJsonType, FeatureVisableJsonType } from \"@u-gis/core\"\nimport { createNextAnimateFrameEvent, createProcessingFromAsyncFunc, react } from \"xbsj-base\"\nimport { calcFlyToParamCallFunc, flyToCallFunc, refreshTilesetCallFunc } from \"../../../ESUeViewer/uemsg/CallUeFuncs\"\nimport { UeFuncsType } from \"../../../ESUeViewer/uemsg/UeFuncsType\"\nimport { ESUeViewer } from \"@earthsdk3-ue/src/ESUeViewer\"\n\nconst getTipInfo = (num: number) => {\n switch (num) {\n case 0:\n return '成功绑定'\n case 1:\n return '解绑之前的内容,成功绑定'\n case 2:\n return '没搜索到ActorTag,无法绑定'\n case 3:\n return '搜索到ActorTag但对应的Actor不是3dTileset,无法绑定'\n default:\n return '未知错误'\n }\n}\n\nexport class UeES3DTileset<T extends ES3DTileset = ES3DTileset> extends EngineObject<T> {\n static readonly type = this.register<ES3DTileset, ESUeViewer>('ESUeViewer', ES3DTileset.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`UeES3DTileset: viewer is undefined!`);\n return;\n }\n let bindedActorTag: string | undefined = undefined;\n let createdUrl: string | undefined | ESJResource = undefined;\n\n const updateProps = async () => {\n if (!bindedActorTag && !createdUrl) return\n await viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n url: sceneObject.url,\n show: sceneObject.show,\n collision: sceneObject.collision,\n allowPicking: sceneObject.allowPicking,\n flyToParam: sceneObject.flyToParam ?? ESVisualObject.defaults.flyToParam,\n flyInParam: sceneObject.flyInParam ?? ESVisualObject.defaults.flyInParam,\n highlightID: sceneObject.highlightID,\n highlightColor: sceneObject.highlightColor,\n highlight: sceneObject.highlight,\n materialMode: sceneObject.materialMode,\n maximumScreenSpaceError: sceneObject.maximumScreenSpaceError,\n //ESPipeserTileset 属性更新\n //@ts-ignore\n colorMode: Reflect.has(sceneObject, 'colorMode') ? sceneObject.colorMode : undefined,\n offset: sceneObject.offset,\n rotation: sceneObject.rotation,\n cacheBytes: sceneObject.cacheBytes,\n colorBlendMode: sceneObject.colorBlendMode,\n materialOverrideMap: sceneObject.materialOverrideMap,\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.urlChanged,\n sceneObject.showChanged,\n sceneObject.flyToParamChanged,\n sceneObject.flyInParamChanged,\n sceneObject.collisionChanged,\n sceneObject.allowPickingChanged,\n sceneObject.highlightIDChanged,\n sceneObject.highlightColorChanged,\n sceneObject.highlightChanged,\n sceneObject.materialModeChanged,\n sceneObject.maximumScreenSpaceErrorChanged,\n sceneObject.offsetChanged,\n sceneObject.rotationChanged,\n sceneObject.cacheBytesChanged,\n sceneObject.colorBlendModeChanged,\n sceneObject.materialOverrideMapChanged,\n ));\n updateProps()\n this.d(updateEvent.don(updateProps));\n\n {\n //ESPipeserTileset 属性更新\n const flag = Reflect.has(sceneObject, 'colorMode')\n if (flag) {\n //@ts-ignore\n this.d(sceneObject.colorModeChanged.don(() => updateProps()));\n }\n }\n\n type RecreatInfoType = ({ type: 'CreatedUrl', url: string | ESJResource } | { type: 'ActorTag', actorTag: string })\n const recreatInfo = this.dv(react<RecreatInfoType | undefined>(undefined));\n\n {\n const event = this.dv(createNextAnimateFrameEvent(\n sceneObject.actorTagChanged,\n sceneObject.urlChanged,\n ));\n const update = () => {\n if (sceneObject.actorTag) {\n recreatInfo.value = {\n type: 'ActorTag',\n actorTag: sceneObject.actorTag,\n };\n } else if (sceneObject.url) {\n recreatInfo.value = {\n type: 'CreatedUrl',\n url: sceneObject.url,\n };\n } else {\n recreatInfo.value = undefined;\n }\n sceneObject.editing = false;\n };\n update();\n this.d(event.don(update));\n }\n\n const unBindOrDestroy = async () => {\n const { id } = sceneObject;\n if (bindedActorTag !== undefined) {\n bindedActorTag = undefined;\n try {\n const result = await ueViewer.unBind3DTilesetById(id);\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset UnBind3DTilesetById: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`UeES3DTileset UnBind3DTilesetById: ${error}`);\n return;\n }\n }\n\n if (createdUrl !== undefined) {\n createdUrl = undefined;\n try {\n const result = await viewer.callUeFunc<UeFuncsType['destroy']['result']>({ f: 'destroy', p: { id } });\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset Destroy: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`UeES3DTileset Destroy: ${error}`);\n return;\n }\n };\n }\n\n this.d(() => { unBindOrDestroy() });\n {\n const processing = this.dv(createProcessingFromAsyncFunc(async cancelsManager => {\n if (recreatInfo.value === undefined) {\n await cancelsManager.promise(unBindOrDestroy());\n return;\n }\n if (recreatInfo.value.type === 'ActorTag') {\n const { actorTag } = recreatInfo.value;\n\n // 解绑\n if (bindedActorTag !== actorTag) {\n await cancelsManager.promise(unBindOrDestroy());\n }\n\n // 绑定\n if (bindedActorTag !== undefined) return;\n if (actorTag === undefined) return;\n\n try {\n bindedActorTag = actorTag;\n const result = await cancelsManager.promise(ueViewer.bind3DTilesetByTag(sceneObject.id, actorTag))\n\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset Bind3DTilesetByTag: ${result.error}`);\n return;\n }\n if (result.re.type === 0) {\n // do nothing\n } else if (result.re.type === 1) {\n console.warn(`UeES3DTileset Bind3DTilesetByTag: ${getTipInfo(result.re.type)}`);\n } else {\n console.warn(`UeES3DTileset Bind3DTilesetByTag: ${getTipInfo(result.re.type)}`);\n return;\n }\n } catch (error) {\n console.warn(`UeES3DTileset Bind3DTilesetByTag: ${error}`);\n return;\n }\n } else if (recreatInfo.value.type === 'CreatedUrl') {\n const { url } = recreatInfo.value;\n\n // destroy\n if (url !== createdUrl) {\n await unBindOrDestroy();\n };\n\n // create\n if (createdUrl !== undefined) return;\n if (url === undefined) return;\n\n try {\n createdUrl = url;\n const result = await cancelsManager.promise(viewer.callUeFunc<UeFuncsType['create']['result']>({\n f: 'create',\n p: {\n type: sceneObject.typeName,\n id: sceneObject.id\n }\n }));\n\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset create: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`UeES3DTileset create: ${error}`);\n return;\n }\n }\n\n // 更新属性\n await cancelsManager.promise(updateProps());\n }));\n\n const update = async () => {\n processing.restart();\n }\n update();\n this.d(recreatInfo.changed.don(update));\n }\n\n this.d(sceneObject.refreshTilesetEvent.don(() => {\n refreshTilesetCallFunc(viewer, sceneObject.id)\n }));\n\n this.d(sceneObject.flyToEvent.don(async (duration, id) => {\n if (!bindedActorTag && !createdUrl) return\n const res = await flyToCallFunc(viewer, sceneObject.id, duration)\n let mode: 'cancelled' | 'over' | 'error' = 'over';\n if (res === undefined) {\n mode = 'error'\n } else if (res.endType === 0) {\n mode = 'over'\n } else if (res.endType === 1) {\n mode = 'cancelled'\n }\n sceneObject.flyOverEvent.emit(id, mode, ueViewer);\n }));\n\n this.d(sceneObject.calcFlyToParamEvent.don(() => {\n if (!bindedActorTag && !createdUrl) return\n calcFlyToParamCallFunc(viewer, sceneObject.id)\n\n }));\n\n this.d(sceneObject.calcFlyInParamEvent.don(async () => {\n if (!bindedActorTag && !createdUrl) return\n if (!ueViewer.actived) return;\n const cameraInfo = await ueViewer.getCurrentCameraInfo();\n if (!cameraInfo) return;\n const { position, rotation } = cameraInfo;\n sceneObject.flyInParam = { position, rotation, flyDuration: 1 };\n }));\n\n\n this.d(ueViewer.propChanged.don((info) => {\n if (!bindedActorTag && !createdUrl) return\n if (info.objId !== sceneObject.id) return\n Object.keys(info.props).forEach(key => {\n const prop = info.props[key] === null ? undefined : info.props[key]\n //@ts-ignore\n sceneObject[key] = prop\n });\n }));\n\n this.d(ueViewer.objectEvent.don((info) => {\n if (!bindedActorTag && !createdUrl) return;\n if (info.id !== sceneObject.id || info.type !== '3DTilesetReady') return;\n sceneObject.tilesetReady.emit(info.p);\n }));\n\n {\n const setFeatureColor = async (featureName: string, json: FeatureColorJsonType[]) => {\n if (!bindedActorTag && !createdUrl) return\n const result = await viewer.callUeFunc({\n f: 'SetFeatureColor',\n p: { id: sceneObject.id, featureName, json }\n })\n if (!result) return;\n //@ts-ignore\n if (result.error !== \"\") {\n //@ts-ignore\n console.warn(`UeES3DTileset SetFeatureColor: ${result.error}`);\n return;\n }\n };\n const setFeatureVisable = async (featureName: string, json: FeatureVisableJsonType[]) => {\n if (!bindedActorTag && !createdUrl) return\n const result = await viewer.callUeFunc({\n f: 'SetFeatureVisable',\n p: { id: sceneObject.id, featureName, json }\n })\n if (!result) return;\n //@ts-ignore\n if (result.error !== \"\") {\n //@ts-ignore\n console.warn(`UeES3DTileset SetFeatureVisable: ${result.error}`);\n return;\n }\n };\n const resetFeatureStyle = async () => {\n if (!bindedActorTag && !createdUrl) return\n const result = await viewer.callUeFunc({\n f: 'ResetFeatureStyle',\n p: { id: sceneObject.id }\n })\n if (!result) return;\n //@ts-ignore\n if (result.error !== \"\") {\n //@ts-ignore\n console.warn(`UeES3DTileset ResetFeatureStyle: ${result.error}`);\n return;\n }\n };\n const setFeatureStyle = async (json: ESJFeatureStyleType) => {\n if (!bindedActorTag && !createdUrl) return;\n const result = await viewer.callUeFunc({\n f: 'SetFeatureStyle',\n p: { id: sceneObject.id, json }\n })\n if (!result) return;\n //@ts-ignore\n if (result.error !== \"\") {\n //@ts-ignore\n console.warn(`UeES3DTileset SetFeatureStyle: ${result.error}`);\n return;\n }\n };\n this.d(sceneObject.setFeatureColorEvent.don((name, json) => {\n const features = [...this.styleColor, ...json];\n this.styleColor = [...features];\n setFeatureColor(name, features)\n }));\n this.d(sceneObject.setFeatureVisableEvent.don((name, json) => {\n const features = [...this.styleVisable, ...json];\n this.styleVisable = [...features];\n setFeatureVisable(name, features)\n }));\n this.d(sceneObject.resetFeatureStyleEvent.don(() => {\n resetFeatureStyle();\n this.styleColor = [];\n this.styleVisable = [];\n }));\n\n this.d(sceneObject.setFeatureStyleEvent.don((json) => { setFeatureStyle(json) }));\n }\n\n {\n type GetFeatureTableResType = {\n re: {\n table: { key: string, type: string | number }[];\n }\n error: string | undefined;\n }\n\n const getFeatureTable = async () => {\n if (!bindedActorTag && !createdUrl) {\n sceneObject._featureTableResultEvent.emit(undefined);\n return;\n };\n try {\n const result = await viewer.callUeFunc<GetFeatureTableResType>({\n f: 'GetFeatureTable',\n p: { id: sceneObject.id }\n })\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset GetFeatureTable: ${result.error}`);\n }\n sceneObject._featureTableResultEvent.emit(result.re.table);\n } catch (error) {\n console.warn(`UeES3DTileset GetFeatureTable: ${error}`);\n sceneObject._featureTableResultEvent.emit(undefined);\n }\n };\n\n this.d(sceneObject.getFeatureTableEvent.don(() => { getFeatureTable() }));\n }\n {\n type GetMaterialNameListType = {\n re: {\n materialNameList: string[];\n }\n error: string | undefined;\n }\n const getMaterialNameList = async () => {\n if (!bindedActorTag && !createdUrl) {\n sceneObject.getMaterialNameListEvent.emit(undefined);\n return;\n };\n try {\n const result = await viewer.callUeFunc<GetMaterialNameListType>({\n f: 'GetMaterialNameList',\n p: { id: sceneObject.id }\n })\n if (result.error !== \"\") {\n console.warn(`UeES3DTileset GetMaterialNameList: ${result.error}`);\n }\n sceneObject.getMaterialNameListEvent.emit(result.re.materialNameList);\n } catch (error) {\n console.warn(`UeES3DTileset GetMaterialNameList: ${error}`);\n sceneObject.getMaterialNameListEvent.emit(undefined);\n }\n }\n this.ad(sceneObject.getMaterialNameListEvent.don((newVal) => { if (newVal == 'start') getMaterialNameList() }))\n }\n\n }\n\n private _styleColor = this.dv(react<FeatureColorJsonType[]>([]));\n get styleColor() { return this._styleColor.value; }\n set styleColor(value: FeatureColorJsonType[]) { this._styleColor.value = value; }\n\n private _styleVisable = this.dv(react<FeatureVisableJsonType[]>([]));\n get styleVisable() { return this._styleVisable.value; }\n set styleVisable(value: FeatureVisableJsonType[]) { this._styleVisable.value = value; }\n}\n","import { EngineObject, ESImageryLayer, ESJResource, ESSceneObject, ESVisualObject } from \"@u-gis/core\"\nimport { calcFlyToParamCallFunc, ESUeViewer, flyInCallFunc, flyToCallFunc, UeFuncsType } from \"../../../ESUeViewer\"\nimport { createNextAnimateFrameEvent, createProcessingFromAsyncFunc, react, reactJson } from \"xbsj-base\"\n\n\nconst getTipInfo = (num: number) => {\n switch (num) {\n case 0:\n return '成功绑定'\n case 1:\n return '解绑之前的内容,成功绑定'\n case 2:\n return '没搜索到ActorTag,无法绑定'\n case 3:\n return '搜索到ActorTag对应的Actor是地形,无法绑定'\n case 4:\n return '没搜索到ComponentTag,无法绑定'\n default:\n return '未知错误'\n }\n}\n\nexport class UeESImageryLayer extends EngineObject<ESImageryLayer> {\n static readonly type = this.register('ESUeViewer', ESImageryLayer.type, this);\n\n constructor(sceneObject: ESImageryLayer, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n let bindedActorTag: string | undefined = undefined;\n let createdUrl: string | ESJResource | undefined = undefined;\n type RecreatInfoType = ({ type: 'CreatedUrl', url: string | ESJResource } | { type: 'ActorTag', actorTag: string, componentTag: string })\n const recreatInfo = this.dv(react<RecreatInfoType | undefined>(undefined));\n const urlReact = this.ad(reactJson<string | ESJResource>(\"\"))\n {\n const update = () => {\n if (typeof sceneObject.url === 'string') {\n urlReact.value = ESSceneObject.context.getStrFromEnv(sceneObject.url);\n } else {\n const temp = sceneObject.url;\n temp.url = ESSceneObject.context.getStrFromEnv(temp.url);\n urlReact.value = temp;\n }\n }\n update();\n this.ad(sceneObject.urlChanged.don(update))\n }\n const updateProps = async () => {\n if (!bindedActorTag && !createdUrl) return\n await viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n show: sceneObject.show ?? true,\n rectangle: sceneObject.rectangle ?? [-180, -90, 180, 90],\n collision: sceneObject.collision ?? true,\n allowPicking: sceneObject.allowPicking ?? false,\n flyToParam: sceneObject.flyToParam ?? ESVisualObject.defaults.flyToParam,\n flyInParam: sceneObject.flyInParam ?? ESVisualObject.defaults.flyInParam,\n url: urlReact.value ?? \"\",\n zIndex: sceneObject.zIndex ?? 0,\n maximumLevel: sceneObject.maximumLevel ?? ESImageryLayer.defaults.maximumLevel,\n minimumLevel: sceneObject.minimumLevel ?? ESImageryLayer.defaults.minimumLevel,\n options: sceneObject.options ?? ESImageryLayer.defaults.options,\n targetID: sceneObject.targetID ?? ESImageryLayer.defaults.targetID,\n opacity: sceneObject.opacity ?? ESImageryLayer.defaults.opacity,\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.showChanged,\n urlReact.changed,\n sceneObject.flyToParamChanged,\n sceneObject.flyInParamChanged,\n sceneObject.zIndexChanged,\n sceneObject.collisionChanged,\n sceneObject.allowPickingChanged,\n sceneObject.maximumLevelChanged,\n sceneObject.minimumLevelChanged,\n sceneObject.rectangleChanged,\n sceneObject.optionsChanged,\n sceneObject.targetIDChanged,\n sceneObject.opacityChanged,\n ));\n this.d(updateEvent.don(updateProps));\n\n const unBindOrDestroy = async () => {\n const { id } = sceneObject;\n if (bindedActorTag !== undefined) {\n bindedActorTag = undefined;\n try {\n const result = await ueViewer.unBindImageryById(id);\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeESImageryLayer UnImageryByID: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`UeESImageryLayer UnImageryByID promise: ${error}`);\n return;\n }\n }\n\n if (createdUrl !== undefined) {\n createdUrl = undefined;\n try {\n const result = await viewer.callUeFunc<UeFuncsType['destroy']['result']>({ f: 'destroy', p: { id, test: 'UeESImageryLayer' } });\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`UeESImageryLayer Destroy: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`UeESImageryLayer Destroy promise: ${error}`);\n return;\n }\n };\n }\n\n this.d(() => { unBindOrDestroy(); });\n {\n const processing = this.dv(createProcessingFromAsyncFunc(async cancelsManager => {\n if (recreatInfo.value === undefined) {\n await cancelsManager.promise(unBindOrDestroy());\n return;\n }\n if (recreatInfo.value.type === 'ActorTag') {\n const { actorTag, componentTag } = recreatInfo.value;\n // 解绑\n if (bindedActorTag !== actorTag) {\n await cancelsManager.promise(unBindOrDestroy());\n }\n // 绑定\n if (bindedActorTag !== undefined) return;\n if (actorTag === undefined) return;\n\n try {\n bindedActorTag = actorTag;\n const result = await cancelsManager.promise(ueViewer.bindImageryByTag(sceneObject.id, actorTag, componentTag))\n\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`ESImageryLayer BindImageryByTag: ${result.error}`);\n return;\n }\n if (result.re.type === 0) {\n // do nothing\n } else if (result.re.type === 1) {\n console.warn(`ESImageryLayer BindImageryByTag: ${getTipInfo(result.re.type)}`);\n } else {\n console.warn(`ESImageryLayer BindImageryByTag: ${getTipInfo(result.re.type)}`);\n return;\n }\n } catch (error) {\n console.warn(`ESImageryLayer BindImageryByTag promise: ${error}`);\n return;\n }\n } else if (recreatInfo.value.type === 'CreatedUrl') {\n const { url } = recreatInfo.value;\n // destroy\n if (url !== createdUrl) {\n await cancelsManager.promise(unBindOrDestroy());\n };\n\n // create\n if (createdUrl !== undefined) return;\n if (url === undefined) return;\n\n try {\n createdUrl = url;\n const result = await cancelsManager.promise(viewer.callUeFunc<UeFuncsType['create']['result']>({\n f: 'create',\n p: {\n type: 'ESImageryLayer',\n id: sceneObject.id,\n }\n }));\n\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`ESImageryLayer create: ${result.error}`);\n return;\n }\n } catch (error) {\n console.warn(`ESImageryLayer create: create promise error`);\n return;\n }\n }\n // 更新属性\n await cancelsManager.promise(updateProps());\n }));\n\n const update = async () => { processing.restart(); }\n update();\n this.d(recreatInfo.changed.don(update));\n }\n\n {\n const event = this.dv(createNextAnimateFrameEvent(\n sceneObject.actorTagChanged,\n urlReact.changed,\n sceneObject.componentTagChanged,\n ));\n const update = () => {\n if (sceneObject.actorTag && sceneObject.componentTag) {\n recreatInfo.value = {\n type: 'ActorTag',\n actorTag: sceneObject.actorTag,\n componentTag: sceneObject.componentTag,\n };\n } else if (urlReact.value) {\n recreatInfo.value = {\n type: 'CreatedUrl',\n url: urlReact.value,\n };\n } else {\n recreatInfo.value = undefined;\n }\n };\n update();\n this.d(event.don(update));\n }\n\n this.d(sceneObject.flyToEvent.don(async (duration, id) => {\n if (!bindedActorTag && !createdUrl) return\n const res = await flyToCallFunc(viewer, sceneObject.id, duration)\n let mode: 'cancelled' | 'over' | 'error' = 'over';\n if (res === undefined) {\n mode = 'error'\n } else if (res.endType === 0) {\n mode = 'over'\n } else if (res.endType === 1) {\n mode = 'cancelled'\n }\n sceneObject.flyOverEvent.emit(id, mode, ueViewer);\n }));\n this.d(sceneObject.flyInEvent.don(async (duration, id) => {\n if (!bindedActorTag && !createdUrl) return\n const res = await flyInCallFunc(viewer, sceneObject.id, sceneObject.flyInParam?.position, sceneObject.flyInParam?.rotation, (duration ?? 1))\n let mode: 'cancelled' | 'over' | 'error' = 'over';\n if (res === undefined) {\n mode = 'error'\n } else if (res.endType === 0) {\n mode = 'over'\n } else if (res.endType === 1) {\n mode = 'cancelled'\n }\n sceneObject.flyOverEvent.emit(id, mode, ueViewer);\n }));\n\n this.d(sceneObject.calcFlyToParamEvent.don(() => {\n if (!bindedActorTag && !createdUrl) return\n calcFlyToParamCallFunc(viewer, sceneObject.id)\n }));\n this.d(sceneObject.calcFlyInParamEvent.don(async () => {\n if (!ueViewer.actived) return;\n const cameraInfo = await ueViewer.getCurrentCameraInfo();\n if (!cameraInfo) return;\n const { position, rotation } = cameraInfo;\n sceneObject.flyInParam = { position, rotation, flyDuration: 1 };\n }));\n\n\n this.d(ueViewer.propChanged.don((info) => {\n if (!bindedActorTag && !createdUrl) return\n if (info.objId !== sceneObject.id) return\n Object.keys(info.props).forEach(key => {\n const prop = info.props[key] === null ? undefined : info.props[key]\n //@ts-ignore\n sceneObject[key] = prop\n });\n }));\n }\n}\n","import { ESJResource, ESSceneObject, ESTerrainLayer } from \"@u-gis/core\";\nimport { UeESVisualObject } from \"../../base\"\nimport { ESUeViewer } from \"../../../ESUeViewer\";\n\nexport class UeESTerrainLayer extends UeESVisualObject<ESTerrainLayer> {\n static readonly type = this.register('ESUeViewer', ESTerrainLayer.type, this);\n\n static override forceUeUpdateProps = [\n ...UeESVisualObject.forceUeUpdateProps,\n 'url',\n ];\n\n static override propValFuncs = {\n ...UeESVisualObject.propValFuncs,\n url: (val: string | ESJResource) => {\n if (typeof val == 'string')\n return ESSceneObject.context.getStrFromEnv(val);\n val.url = ESSceneObject.context.getStrFromEnv(val.url);\n return val;\n },\n czmMaxzoom: null,\n czmMinzoom: null,\n };\n\n constructor(sceneObject: ESTerrainLayer, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n\n","import { ESAlarm } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"../../base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\n\nexport class UeESAlarm extends UeESObjectWithLocation<ESAlarm> {\n static readonly type = this.register('ESUeViewer', ESAlarm.type, this);\n constructor(sceneObject: ESAlarm, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESApertureEffect } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\nexport class UeESApertureEffect extends UeESObjectWithLocation<ESApertureEffect> {\n static readonly type = this.register('ESUeViewer', ESApertureEffect.type, this);\n constructor(sceneObject: ESApertureEffect, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\nimport { ESGeoPolygon } from \"@u-gis/core\";\nexport class UeESGeoPolygon<T extends ESGeoPolygon = ESGeoPolygon> extends UeESGeoVector<T> {\n static readonly type = this.register<ESGeoPolygon, ESUeViewer>('ESUeViewer', ESGeoPolygon.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESAreaMeasurement } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\n\nexport class UeESAreaMeasurement extends UeESGeoPolygon<ESAreaMeasurement> {\n static override readonly type = this.register('ESUeViewer', ESAreaMeasurement.type, this);\n constructor(sceneObject: ESAreaMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const update = () => {\n let fillStyle = ESAreaMeasurement.defaults.fillStyle\n try {\n fillStyle = { ...(sceneObject.fillStyle ?? ESAreaMeasurement.defaults.fillStyle) };\n } catch (e) {\n console.error('ESAreaMeasurement fillStyle 属性类型错误!', e)\n fillStyle = { ...ESAreaMeasurement.defaults.fillStyle }\n }\n fillStyle.materialParams = JSON.stringify(fillStyle.materialParams);\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n stroked: sceneObject.stroked ?? ESAreaMeasurement.defaults.stroked,\n fillStyle,\n filled: sceneObject.filled ?? ESAreaMeasurement.defaults.filled,\n }\n })\n console.log(fillStyle);\n\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.fillStyleChanged,\n sceneObject.strokedChanged,\n sceneObject.filledChanged,\n ));\n this.d(updateEvent.don(update));\n this.d(sceneObject.createdEvent.don(update));\n }\n}\n","import { ESBlastParticleSystem } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESBlastParticleSystem extends UeESObjectWithLocation<ESBlastParticleSystem> {\n static readonly type = this.register('ESUeViewer', ESBlastParticleSystem.type, this);\n constructor(sceneObject: ESBlastParticleSystem, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn('viewer is undefined!');\n return;\n }\n }\n}\n","import { ESBoxClipping } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\n\nexport class UeESBoxClipping extends UeESObjectWithLocation<ESBoxClipping> {\n static readonly type = this.register('ESUeViewer', ESBoxClipping.type, this);\n constructor(sceneObject: ESBoxClipping, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is underfined!`);\n return;\n }\n }\n}\n","// import { ESCameraView } from '../../objs';\n// // import { flyInCallFunc, resetWithCurrentCameraCallFunc } from '../../../base/UeViewer/CallUeFuncs';\n// import { flyInCallFunc, resetWithCurrentCameraCallFunc } from 'xbsj-xe2/dist-node/xe2-ue-objects';\n// import { UeViewer } from '../../../base';\n// import { UeESObjectWithLocation } from '../../../base';\n// import { ObjResettingWithEvent } from 'xbsj-xe2/dist-node/xe2-utils';\n// import { UeCameraHelper } from './UeCameraHelper';\n\nimport { ESCameraView } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"../../base\";\nimport { ESUeViewer, resetWithCurrentCameraCallFunc } from \"../../../ESUeViewer\";\nimport { flyInCallFunc } from \"../../../ESUeViewer\";\n\nexport class UeESCameraView extends UeESObjectWithLocation<ESCameraView> {\n static readonly type = this.register('ESUeViewer', ESCameraView.type, this);\n constructor(sceneObject: ESCameraView, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n this.dispose(sceneObject.flyInEvent.don((d, _, flyMode = 'default') => {\n const { id, duration, position, rotation } = sceneObject;\n flyInCallFunc(viewer, id, position, rotation, duration ?? d, flyMode);\n }))\n\n this.dispose(sceneObject.resetWithCurrentCameraEvent.don(() => {\n resetWithCurrentCameraCallFunc(viewer, sceneObject.id)\n }));\n\n this.dispose(sceneObject.captureEvent.don((x, y) => {\n const str = ueViewer.capture(x, y)\n str.then((res) => { if (res) sceneObject.thumbnail = res })\n }));\n }\n}\n","import { ESCameraVisibleRange } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"../../base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESCameraVisibleRange extends UeESObjectWithLocation<ESCameraVisibleRange> {\n static readonly type = this.register('ESUeViewer', ESCameraVisibleRange.type, this);\n constructor(sceneObject: ESCameraVisibleRange, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESCar } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESCar extends UeESObjectWithLocation<ESCar> {\n static readonly type = this.register('ESUeViewer', ESCar.type, this);\n constructor(sceneObject: ESCar, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESClassification } from \"@u-gis/core\";\nimport { UeESGeoVector } from \"../../base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\nexport class UeESClassification extends UeESGeoVector<ESClassification> {\n static readonly type = this.register('ESUeViewer', ESClassification.type, this);\n constructor(sceneObject: ESClassification, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const update = () => {\n let fillStyle = ESClassification.defaults.fillStyle\n try {\n fillStyle = { ...(sceneObject.fillStyle ?? ESClassification.defaults.fillStyle) };\n } catch (e) {\n console.error('ESClassification fillStyle 属性类型错误!', e)\n fillStyle = { ...ESClassification.defaults.fillStyle }\n }\n fillStyle.materialParams = JSON.stringify(fillStyle.materialParams);\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n filled: sceneObject.filled ?? ESClassification.defaults.filled,\n fillStyle: fillStyle\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.fillStyleChanged,\n sceneObject.filledChanged,\n ));\n\n this.d(updateEvent.don(update));\n this.d(sceneObject.createdEvent.don(update));\n }\n}\n","import { ESClippingPlane } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../base\";\nexport class UeESClippingPlane extends UeESObjectWithLocation<ESClippingPlane> {\n static readonly type = this.register('ESUeViewer', ESClippingPlane.type, this);\n constructor(sceneObject: ESClippingPlane, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is underfined!`);\n return;\n }\n }\n}\n","import { ESDataMesh, ESJResource, ESSceneObject } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../base\";\nimport { createNextAnimateFrameEvent, reactJson } from \"xbsj-base\";\n\nexport class UeESDataMesh extends UeESObjectWithLocation<ESDataMesh> {\n static readonly type = this.register('ESUeViewer', ESDataMesh.type, this);\n constructor(sceneObject: ESDataMesh, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const urlReact = this.ad(reactJson<string | ESJResource>(\"\"))\n {\n const update = () => {\n if (typeof sceneObject.url === 'string') {\n urlReact.value = ESSceneObject.context.getStrFromEnv(sceneObject.url ?? ESDataMesh.defaults.url);\n } else {\n const temp = sceneObject.url;\n temp.url = ESSceneObject.context.getStrFromEnv(temp.url ?? ESDataMesh.defaults.url);\n urlReact.value = temp;\n }\n }\n update();\n this.ad(sceneObject.urlChanged.don(update))\n } const update = () => {\n const colorStops = sceneObject.colorStops ?? ESDataMesh.defaults.colorStops;\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n url: urlReact.value ?? ESDataMesh.defaults.url,\n currentTime: sceneObject.currentTime ?? ESDataMesh.defaults.currentTime,\n minPropValue: sceneObject.minPropValue ?? ESDataMesh.defaults.minPropValue,\n maxPropValue: sceneObject.maxPropValue ?? ESDataMesh.defaults.maxPropValue,\n colorStops: JSON.stringify(colorStops),\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n urlReact.changed,\n sceneObject.currentTimeChanged,\n sceneObject.minPropValueChanged,\n sceneObject.maxPropValueChanged,\n sceneObject.colorStopsChanged,\n ));\n this.d(updateEvent.don(update));\n this.d(sceneObject.createdEvent.don(update));\n }\n}\n","import { ESDatasmithRuntimeModel } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESDatasmithRuntimeModel extends UeESObjectWithLocation<ESDatasmithRuntimeModel> {\n static readonly type = this.register('ESUeViewer', ESDatasmithRuntimeModel.type, this);\n constructor(sceneObject: ESDatasmithRuntimeModel, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESDirectionMeasurement } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\n\nexport class UeESDirectionMeasurement extends UeESGeoVector<ESDirectionMeasurement> {\n static readonly type = this.register('ESUeViewer', ESDirectionMeasurement.type, this);\n constructor(sceneObject: ESDirectionMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESDistanceMeasurement } from \"@u-gis/core\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../base\";\nexport class UeESDistanceMeasurement extends UeESGeoVector<ESDistanceMeasurement> {\n static readonly type = this.register('ESUeViewer', ESDistanceMeasurement.type, this);\n constructor(sceneObject: ESDistanceMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const update = () => {\n let strokeStyle;\n try {\n strokeStyle = { ...(sceneObject.strokeStyle ?? ESDistanceMeasurement.defaults.strokeStyle) };\n } catch (e) {\n console.error('ESDistanceMeasurement strokeStyle 属性类型错误!', e)\n strokeStyle = { ...ESDistanceMeasurement.defaults.strokeStyle }\n }\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n strokeStyle\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.strokeStyleChanged,\n ));\n this.d(updateEvent.don(update));\n this.d(sceneObject.createdEvent.don(update));\n }\n}\n","\nimport { ESLocalPolygon } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLocalVector2D } from \"../../../UeObjects/base\";\n\nexport class UeESLocalPolygon<T extends ESLocalPolygon = ESLocalPolygon> extends UeESLocalVector2D<T> {\n static readonly type = this.register<ESLocalPolygon, ESUeViewer>('ESUeViewer', ESLocalPolygon.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n }\n}\n","\nimport { ESDynamicWater } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESLocalPolygon } from '../UeESLocalPolygon';\n\nexport class UeESDynamicWater extends UeESLocalPolygon<ESDynamicWater> {\n static override readonly type = this.register('ESUeViewer', ESDynamicWater.type, this);\n constructor(sceneObject: ESDynamicWater, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESEntityCluster } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESVisualObject } from \"../../../UeObjects/base\";\nexport class UeESEntityCluster extends UeESVisualObject<ESEntityCluster> {\n static readonly type = this.register('ESUeViewer', ESEntityCluster.type, this);\n constructor(sceneObject: ESEntityCluster, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n this.d(ueViewer.widgetEvent.don((info) => {\n if (info.objId !== sceneObject.id) return\n //@ts-ignore\n const { type, properties } = info;\n //@ts-ignore\n sceneObject.widgetEvent.emit({ type, properties });\n }))\n }\n}\n","import { ESExcavate } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESExcavate extends UeESGeoPolygon<ESExcavate> {\n static override readonly type = this.register('ESUeViewer', ESExcavate.type, this);\n constructor(sceneObject: ESExcavate, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESFireParticleSystem } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESFireParticleSystem extends UeESObjectWithLocation<ESFireParticleSystem> {\n static readonly type = this.register('ESUeViewer', ESFireParticleSystem.type, this);\n constructor(sceneObject: ESFireParticleSystem, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn('viewer is undefined!');\n return;\n }\n }\n}\n","import { ESForestTileset, ESJResource, ESSceneObject } from \"@u-gis/core\";\nimport { UeESVisualObject } from \"../../base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent, reactJson } from \"xbsj-base\";\n\nexport class UeESForestTileset extends UeESVisualObject<ESForestTileset> {\n static readonly type = this.register('ESUeViewer', ESForestTileset.type, this);\n constructor(sceneObject: ESForestTileset, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const urlReact = this.ad(reactJson<string | ESJResource>(\"\"))\n {\n const update = () => {\n if (typeof sceneObject.url === 'string') {\n urlReact.value = ESSceneObject.context.getStrFromEnv(sceneObject.url);\n } else {\n const temp = sceneObject.url;\n temp.url = ESSceneObject.context.getStrFromEnv(temp.url);\n urlReact.value = temp;\n }\n }\n update();\n this.ad(sceneObject.urlChanged.don(update))\n }\n const update = () => {\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n url: urlReact.value ?? ESForestTileset.defaults.url,\n treeTypes: sceneObject.treeTypes ?? ESForestTileset.defaults.treeTypes,\n xiaoBanWidget: sceneObject.xiaoBanWidget ?? ESForestTileset.defaults.xiaoBanWidgetDefault,\n youShiSZ: sceneObject.youShiSZ ?? ESForestTileset.defaults.youShiSZ,\n diLei: sceneObject.diLei ?? ESForestTileset.defaults.diLei,\n senLinLB: sceneObject.senLinLB ?? ESForestTileset.defaults.senLinLB,\n labelMaterial: sceneObject.labelMaterial ?? ESForestTileset.defaults.labelMaterial,\n heightOffset: sceneObject.heightOffset ?? ESForestTileset.defaults.heightOffset,\n }\n })\n };\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n urlReact.changed,\n sceneObject.treeTypesChanged,\n sceneObject.xiaoBanWidgetChanged,\n sceneObject.youShiSZChanged,\n sceneObject.diLeiChanged,\n sceneObject.senLinLBChanged,\n sceneObject.labelMaterialChanged,\n sceneObject.heightOffsetChanged,\n ));\n this.d(updateEvent.don(update));\n this.d(sceneObject.createdEvent.don(update));\n }\n}\n","\nimport { EngineObject, ESGeoDiv, ESImageLabel, ESJVector3D, ESJVector4D } from \"@u-gis/core\";\nimport html2canvas from \"html2canvas\";\nimport { bind, createNextAnimateFrameEvent, track } from \"xbsj-base\";\nimport {\n calcFlyToParamCallFunc, ESUeViewer, smoothMoveCallFunc, smoothMoveOnGroundCallFunc,\n smoothMoveWithRotationCallFunc, smoothMoveWithRotationOnGroundCallFunc\n} from \"../../../ESUeViewer\";\n\n// 通过ESImagLabel进行显示,通过DIV进行定位和点击事件的判断\nexport class UeESGeoDiv extends EngineObject<ESGeoDiv> {\n static readonly type = this.register('ESUeViewer', ESGeoDiv.type, this);\n\n private _imageLabel = this.dv(new ESImageLabel(`${this.sceneObject.id}_ESImageLabel`));\n\n private _hasClassDivAndPos = {} as { [key: string]: ESJVector4D };\n\n constructor(sceneObject: ESGeoDiv, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n sceneObject.mainClass = this._imageLabel;\n // 创建ESImageLabel\n const imageLabel = this._imageLabel;\n ueViewer.add(imageLabel);\n this.d(() => ueViewer.delete(imageLabel))\n {\n const createDivToCanvas = () => {\n if (!viewer) return;\n if (!sceneObject.instanceClass) {\n throw new Error(`!sceneObject.instanceClass`);\n }\n const div = document.createElement('div');\n\n //@ts-ignore\n const divContainer = this.dv(new sceneObject.instanceClass(div, sceneObject, ueViewer))._container;\n divContainer.style.opacity = sceneObject.opacity.toString() ?? ESGeoDiv.defaults.opacity;\n divContainer.style.position = 'fixed';\n divContainer.style.zIndex = '-1';\n divContainer.style.top = '0px';\n if (!document.body.contains(divContainer)) {\n document.body.appendChild(divContainer);\n let HasClassElements = divContainer ? divContainer.querySelectorAll('*[class]') : [];\n for (let i = 0; i < HasClassElements.length; i++) {\n const element = HasClassElements[i];\n var rect = element.getBoundingClientRect();\n // 存储所有class元素位置\n this._hasClassDivAndPos[element.className] = [\n element.offsetLeft,\n element.offsetTop,\n element.offsetLeft + rect.width,\n element.offsetTop + rect.height,\n ]\n }\n }\n html2canvas(divContainer, {\n backgroundColor: null,\n allowTaint: true,\n useCORS: true,\n width: divContainer.offsetWidth,\n height: divContainer.offsetHeight,\n scale: 1,\n }).then((canvas) => {\n if (document.body.contains(divContainer))\n document.body.removeChild(divContainer);\n imageLabel.url = canvas.toDataURL();\n imageLabel.show = sceneObject.show;\n }).catch(() => {\n if (document.body.contains(divContainer))\n document.body.removeChild(divContainer);\n });\n };\n const update = () => {\n try {\n if (sceneObject.instanceClass) {\n createDivToCanvas()\n } else {\n imageLabel.url = \"\";\n imageLabel.show = false;\n }\n } catch (error) {\n console.error(error)\n }\n };\n update();\n const event = this.dv(createNextAnimateFrameEvent(\n sceneObject.instanceClassChanged,\n sceneObject.opacityChanged,\n ));\n this.d(event.don(update));\n }\n {\n const update = () => {\n imageLabel.show = sceneObject.show;\n }\n //默认不显示,如果instanceClass有值,会在图片加载完成后显示\n imageLabel.show = false;\n this.ad(sceneObject.showChanged.don(update));\n }\n this.d(track([imageLabel, 'anchor'], [sceneObject, 'anchor']));\n this.d(bind([imageLabel, 'position'], [sceneObject, 'position']));\n this.d(bind([imageLabel, 'rotation'], [sceneObject, 'rotation']));\n this.d(bind([imageLabel, 'flyToParam'], [sceneObject, 'flyToParam']));\n this.d(bind([imageLabel, 'flyInParam'], [sceneObject, 'flyInParam']));\n this.d(bind([imageLabel, 'allowPicking'], [sceneObject, 'allowPicking']));\n this.d(bind([imageLabel, 'scale'], [sceneObject, 'scale']));\n this.d(track([imageLabel, 'minVisibleDistance'], [sceneObject, 'minVisibleDistance']));\n this.d(track([imageLabel, 'maxVisibleDistance'], [sceneObject, 'maxVisibleDistance']));\n this.ad(sceneObject.automaticLandingEvent.don(() => {\n imageLabel.automaticLanding();\n }))\n // 点击事件,暂时无效\n this.d(imageLabel.pickedEvent.don(pickedInfo => {\n if (sceneObject.allowPicking ?? false) {\n // sceneObject.pickedEvent.emit(new SceneObjectPickedInfo(sceneObject, pickedInfo));\n sceneObject.pickedEvent.emit(pickedInfo);\n }\n }))\n // 内部通过ESImageLable进行实现,需要重新监听\n this.d(ueViewer.widgetEvent.don((info) => {\n if (info.objId !== this._imageLabel.id) return\n const { type, add } = info;\n if (type === \"leftClick\" && add) {\n const addClassNames = add?.classNames ?? [];\n const classNames = Object.keys(this._hasClassDivAndPos);\n for (let i = 0; i < classNames.length; i++) {\n const className = classNames[i];\n let rect = this._hasClassDivAndPos[className];\n // 检查点击点是否与DIV元素重叠\n if (add && add.mouseRelativePos && (add.mouseRelativePos[0] >= rect[0] && add.mouseRelativePos[0] <= rect[2] && add.mouseRelativePos[1] >= rect[1] && add.mouseRelativePos[1] <= rect[3])) {\n // 点击点与DIV元素重叠,借用widgetEvent事件进行相应\n // add[\"classNames\"] = className;\n addClassNames.push(className);\n // break;\n }\n }\n add[\"classNames\"] = addClassNames;\n }\n sceneObject.widgetEvent.emit({ type, add });\n }))\n this.d(sceneObject.calcFlyToParamEvent.don(() => {\n calcFlyToParamCallFunc(viewer, imageLabel.id)\n }));\n\n this.d(sceneObject.calcFlyInParamEvent.don(() => {\n const cameraInfo = ueViewer.getCurrentCameraInfo();\n if (!cameraInfo) return;\n const { position, rotation } = cameraInfo;\n sceneObject.flyInParam = { position, rotation, flyDuration: 1 };\n }));\n\n this.d(sceneObject.smoothMoveEvent.don((Destination: ESJVector3D, Time: number) => {\n smoothMoveCallFunc(viewer, imageLabel.id, Destination, Time)\n }))\n this.d(sceneObject.smoothMoveWithRotationEvent.don((Destination: ESJVector3D, NewRotation: ESJVector3D, Time: number) => {\n smoothMoveWithRotationCallFunc(viewer, imageLabel.id, Destination, NewRotation, Time)\n }))\n this.d(sceneObject.smoothMoveOnGroundEvent.don((Lon: number, Lat: number, Time: number, Ground: string) => {\n smoothMoveOnGroundCallFunc(viewer, imageLabel.id, Lon, Lat, Ground, Time)\n }))\n this.d(sceneObject.smoothMoveWithRotationOnGroundEvent.don((NewRotation: ESJVector3D, Lon: number, Lat: number, Time: number, Ground: string) => {\n smoothMoveWithRotationOnGroundCallFunc(viewer, imageLabel.id, NewRotation, Lon, Lat, Time, Ground)\n }))\n this.d(sceneObject.flyToEvent.don((duration, id) => {\n imageLabel.flyTo(duration);\n }));\n this.d(sceneObject.flyInEvent.don((duration) => {\n imageLabel.flyIn(duration);\n }))\n }\n}\n","import { ESGeoJson } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESVisualObject } from \"../../../UeObjects/base\";\nexport class UeESGeoJson extends UeESVisualObject<ESGeoJson> {\n static readonly type = this.register('ESUeViewer', ESGeoJson.type, this);\n constructor(sceneObject: ESGeoJson, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.flyToFeatureIndexEvent.don((index, duration) => {\n viewer.callUeFunc({\n f: 'flyToFeatureIndex',\n p: {\n id: sceneObject.id,\n index,\n duration\n }\n })\n }))\n this.d(sceneObject.flyToFeatureEvent.don((key, value, duration) => {\n viewer.callUeFunc({\n f: 'flyToFeature',\n p: {\n id: sceneObject.id,\n key,\n value,\n duration\n }\n })\n }))\n }\n}\n","\nimport { ESGeoLineString } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESGeoVector } from '../../base';\nexport class UeESGeoLineString<T extends ESGeoLineString = ESGeoLineString> extends UeESGeoVector<T> {\n static readonly type = this.register<ESGeoLineString, ESUeViewer>('ESUeViewer', ESGeoLineString.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n }\n}\n","import { ESGeoRectangle } from \"@u-gis/core\";\nimport { UeESGeoVector } from \"../../../UeObjects\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESGeoRectangle<T extends ESGeoRectangle = ESGeoRectangle> extends UeESGeoVector<T> {\n static readonly type = this.register<ESGeoRectangle, ESUeViewer>('ESUeViewer', ESGeoRectangle.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESGeoWater } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESGeoPolygon } from '../UeESGeoPolygon';\n\nexport class UeESGeoWater extends UeESGeoPolygon<ESGeoWater> {\n static override readonly type = this.register('ESUeViewer', ESGeoWater.type, this);\n\n constructor(sceneObject: ESGeoWater, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESGltfModel, ESJResource, ESSceneObject, rpToap } from \"@u-gis/core\";\nimport {\n ESUeViewer, setNodePositionCallFunc,\n setNodeRotationCallFunc, setNodeScaleCallFunc\n} from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects\";\n\nexport class UeESGltfModel<T extends ESGltfModel = ESGltfModel> extends UeESObjectWithLocation<T> {\n static override forceUeUpdateProps = [\n ...UeESObjectWithLocation.forceUeUpdateProps,\n 'url',\n ];\n static override propValFuncs = {\n ...UeESObjectWithLocation.propValFuncs,\n url: (val: string | ESJResource) => {\n if (typeof val == 'string')\n return ESSceneObject.context.getStrFromEnv(rpToap(val));\n val.url = ESSceneObject.context.getStrFromEnv(rpToap(val.url));\n return val;\n },\n czmMaximumScale: null,\n czmMinimumPixelSize: null,\n czmNativeScale: null,\n czmColor: null,\n };\n\n static readonly type = this.register<ESGltfModel, ESUeViewer>('ESUeViewer', ESGltfModel.type, this);\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n this.d(sceneObject.setNodePositionEvent.don((NodeName, NodePosition) => {\n setNodePositionCallFunc(viewer, sceneObject.id, NodeName, NodePosition)\n }));\n\n this.d(sceneObject.setNodeRotationEvent.don((NodeName, NodeRotation) => {\n setNodeRotationCallFunc(viewer, sceneObject.id, NodeName, NodeRotation)\n }));\n\n this.d(sceneObject.setNodeScaleEvent.don((NodeName, NodeScale) => {\n setNodeScaleCallFunc(viewer, sceneObject.id, NodeName, NodeScale)\n }));\n }\n}\n","import { ESHeightMeasurement } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\n\nexport class UeESHeightMeasurement extends UeESGeoVector<ESHeightMeasurement> {\n static readonly type = this.register('ESUeViewer', ESHeightMeasurement.type, this);\n constructor(sceneObject: ESHeightMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESHuman, ESJVector3D } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESObjectWithLocation } from '../../../UeObjects/base';\nexport class UeESHuman extends UeESObjectWithLocation<ESHuman> {\n static readonly type = this.register('ESUeViewer', ESHuman.type, this);\n constructor(sceneObject: ESHuman, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n type AIMoveToType = {\n AIMoveTo: {\n params: {\n id: string,\n Destination: ESJVector3D,\n Time: number\n },\n result: {\n error: string | undefined;\n }\n }\n }\n\n const aiMoveToCallFunc = async (ueViewer: ESUeViewer, id: string, Destination: ESJVector3D, Time: number) => {\n const { viewer } = ueViewer;\n if (!viewer) {\n console.error(`AIMoveTo: ueViewer.viewer is undefined`);\n return undefined;\n }\n const res = await viewer.callUeFunc<AIMoveToType['AIMoveTo']['result']>({\n f: 'AIMoveTo',\n p: { id, Destination, Time }\n })\n if (res.error) console.error(`AIMoveTo:`, res.error);\n return res;\n }\n\n this.d(sceneObject.aiMoveToEvent.don((Destination, Time) => {\n aiMoveToCallFunc(ueViewer, sceneObject.id, Destination, Time)\n }))\n\n type StopAIMoveType = {\n StopAIMove: {\n params: {\n id: string,\n },\n result: {\n error: string | undefined;\n }\n }\n }\n const StopAIMoveCallFunc = async (ueViewer: ESUeViewer, id: string) => {\n const { viewer } = ueViewer;\n if (!viewer) {\n console.error(`StopAIMove: ueViewer.viewer is undefined`);\n return undefined;\n }\n const res = await viewer.callUeFunc<StopAIMoveType['StopAIMove']['result']>({\n f: 'StopAIMove',\n p: { id }\n })\n if (res.error) console.error(`StopAIMove:`, res.error);\n return res;\n }\n\n this.d(sceneObject.stopAIMoveEvent.don(() => {\n StopAIMoveCallFunc(ueViewer, sceneObject.id)\n }))\n\n }\n}\n","import { ESImageLabel, ESJResource, ESSceneObject, rpToap } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLabel } from \"../../../UeObjects/base\";\n\nexport class UeESImageLabel<T extends ESImageLabel = ESImageLabel> extends UeESLabel<T> {\n static readonly type = this.register<ESImageLabel, ESUeViewer>('ESUeViewer', ESImageLabel.type, this);\n\n static override forceUeUpdateProps = [\n ...UeESLabel.forceUeUpdateProps,\n 'url',\n ];\n\n static override propValFuncs = {\n ...UeESLabel.propValFuncs,\n url: (val: string | ESJResource) => {\n if (typeof val == 'string')\n return ESSceneObject.context.getStrFromEnv(rpToap(val));\n val.url = ESSceneObject.context.getStrFromEnv(rpToap(val.url));\n return val;\n },\n };\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n sceneObject.anchor = [0.5, 1]\n }\n}\n","import { ESLevelRuntimeModel } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESLevelRuntimeModel extends UeESObjectWithLocation<ESLevelRuntimeModel> {\n static readonly type = this.register('ESUeViewer', ESLevelRuntimeModel.type, this);\n constructor(sceneObject: ESLevelRuntimeModel, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESLocalCircle } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLocalVector2D } from \"../../../UeObjects/base\";\n\nexport class UeESLocalCircle extends UeESLocalVector2D<ESLocalCircle> {\n static readonly type = this.register('ESUeViewer', ESLocalCircle.type, this);\n constructor(sceneObject: ESLocalCircle, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESLocalPolygonZ } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESVisualObject } from \"../../../UeObjects/base\";\nexport class UeESLocalPolygonZ extends UeESVisualObject<ESLocalPolygonZ> {\n static readonly type = this.register('ESUeViewer', ESLocalPolygonZ.type, this);\n constructor(sceneObject: ESLocalPolygonZ, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESLocalRectangle } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLocalVector2D } from \"../../../UeObjects/base\";\nexport class UeESLocalRectangle extends UeESLocalVector2D<ESLocalRectangle> {\n static readonly type = this.register('ESUeViewer', ESLocalRectangle.type, this);\n constructor(sceneObject: ESLocalRectangle, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESLocalSkyBox } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\nexport class UeESLocalSkyBox extends UeESObjectWithLocation<ESLocalSkyBox> {\n static readonly type = this.register('ESUeViewer', ESLocalSkyBox.type, this);\n constructor(sceneObject: ESLocalSkyBox, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESLocationMeasurement } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESLocationMeasurement extends UeESObjectWithLocation<ESLocationMeasurement> {\n static readonly type = this.register('ESUeViewer', ESLocationMeasurement.type, this);\n constructor(sceneObject: ESLocationMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESPipeFence } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\nexport class UeESPipeFence extends UeESGeoVector<ESPipeFence> {\n static readonly type = this.register('ESUeViewer', ESPipeFence.type, this);\n constructor(sceneObject: ESPipeFence, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESPipeline } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoLineString } from \"../UeESGeoLineString\";\n\nexport class UeESPipeline extends UeESGeoLineString<ESPipeline> {\n static override readonly type = this.register('ESUeViewer', ESPipeline.type, this);\n constructor(sceneObject: ESPipeline, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESPipeserTileset } from \"@u-gis/core\";\nimport {\n ESUeViewer, HighlightFeatureAndFlyToCallFunc,\n HighlightFeatureCallFunc, SetLayerColorCallFunc, SetLayerVisibleCallFunc\n} from \"../../../ESUeViewer\";\nimport { UeES3DTileset } from \"../UeES3DTileset\";\n\nexport class UeESPipeserTileset extends UeES3DTileset<ESPipeserTileset> {\n static override readonly type = this.register('ESUeViewer', ESPipeserTileset.type, this);\n constructor(sceneObject: ESPipeserTileset, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n this.d(sceneObject.highlightFeatureEvent.don((HlId) => {\n const id = (typeof HlId === 'number') ? (HlId.toString()) : HlId;\n HighlightFeatureCallFunc(viewer, sceneObject.id, id)\n }));\n this.d(sceneObject.highlightFeatureAndFlyToEvent.don((HlId, sphere, color, Duration) => {\n const id = (typeof HlId === 'number') ? (HlId.toString()) : HlId;\n HighlightFeatureAndFlyToCallFunc(viewer, sceneObject.id, id, Duration ?? 1)\n }));\n this.d(sceneObject.setLayerVisibleEvent.don((name, LayerJson) => {\n //判断类型为string\n let jsonStr = ''\n if (typeof LayerJson !== 'string') {\n jsonStr = JSON.stringify(LayerJson)\n } else {\n jsonStr = LayerJson\n }\n SetLayerVisibleCallFunc(viewer, sceneObject.id, jsonStr)\n }));\n this.d(sceneObject.setLayerColorEvent.don((name, LayerJson) => {\n //判断类型为string\n let jsonStr = ''\n if (typeof LayerJson !== 'string') {\n jsonStr = JSON.stringify(LayerJson)\n } else {\n jsonStr = LayerJson\n }\n SetLayerColorCallFunc(viewer, sceneObject.id, jsonStr)\n }));\n }\n}\n","\nimport { ESPit } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\n\nexport class UeESPit extends UeESGeoPolygon<ESPit> {\n static override readonly type = this.register('ESUeViewer', ESPit.type, this);\n constructor(sceneObject: ESPit, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESPoi2D } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLabel } from \"../../../UeObjects/base\";\nexport class UeESPoi2D extends UeESLabel<ESPoi2D> {\n static readonly type = this.register('ESUeViewer', ESPoi2D.type, this);\n constructor(sceneObject: ESPoi2D, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.ad(sceneObject.getInitialStyleEvent.don(async () => {\n try {\n const res: any = await viewer.callUeFunc({\n f: 'GetInitialStyle',\n p: { id: sceneObject.id },\n })\n if (res.error != \"\") console.error(`getInitialStyleEvent:`, res.error);\n sceneObject.initialStyle.value = structuredClone(res.re);\n } catch (error) {\n console.error(`getInitialStyleEvent:`, error);\n sceneObject.initialStyle.value = undefined;\n }\n }))\n }\n}\n","import { ESPoi3D } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESPoi3D extends UeESObjectWithLocation<ESPoi3D> {\n static readonly type = this.register('ESUeViewer', ESPoi3D.type, this);\n constructor(sceneObject: ESPoi3D, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESJResource, ESPoiTileset, ESSceneObject } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESVisualObject } from \"../../../UeObjects/base\";\nexport class UeESPoiTileset extends UeESVisualObject<ESPoiTileset> {\n static readonly type = this.register('ESUeViewer', ESPoiTileset.type, this);\n static override forceUeUpdateProps = [\n ...UeESVisualObject.forceUeUpdateProps,\n 'url',\n ];\n static override propValFuncs = {\n ...UeESVisualObject.propValFuncs,\n url: (val: string | ESJResource) => {\n if (typeof val == 'string')\n return ESSceneObject.context.getStrFromEnv(val);\n val.url = ESSceneObject.context.getStrFromEnv(val.url);\n return val;\n },\n };\n\n constructor(sceneObject: ESPoiTileset, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n\n }\n}\n","import { ESPolygonFence } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\n\nexport class UeESPolygonFence extends UeESGeoVector<ESPolygonFence> {\n static readonly type = this.register('ESUeViewer', ESPolygonFence.type, this);\n\n constructor(sceneObject: ESPolygonFence, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESPolygonFlattenedPlane } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESPolygonFlattenedPlane extends UeESGeoPolygon<ESPolygonFlattenedPlane> {\n static override readonly type = this.register('ESUeViewer', ESPolygonFlattenedPlane.type, this);\n constructor(sceneObject: ESPolygonFlattenedPlane, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESPolygonWithHole } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESGeoPolygon } from '../UeESGeoPolygon';\n\nexport class UeESPolygonWithHole extends UeESGeoPolygon<ESPolygonWithHole> {\n static override readonly type = this.register('ESUeViewer', ESPolygonWithHole.type, this);\n constructor(sceneObject: ESPolygonWithHole, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESRtsTileset, ESJFeatureStyleType, FeatureVisableJsonType } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESSceneObject } from \"../../../UeObjects/base\";\nimport { createNextAnimateFrameEvent, reactJson } from \"xbsj-base\";\n\ninterface LayerType {\n dataset: number,\n layer: number,\n value: { visible: boolean, color: string | null },\n}\nexport class UeESRtsTileset<T extends ESRtsTileset = ESRtsTileset> extends UeESSceneObject<T> {\n static readonly type = this.register<ESRtsTileset, ESUeViewer>('ESUeViewer', ESRtsTileset.type, this);\n\n\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(() => { sceneObject.ids = [] });\n\n\n // 添加高亮和移除高亮事件\n {\n this.d(sceneObject.highlightInner3DtilesetEvent.don((es3dtileset) => {\n es3dtileset.highlight = true;\n }));\n\n this.d(sceneObject.removeHighlightInner3DtilesetEvent.don((es3dtileset) => { es3dtileset.highlight = false; }));\n }\n\n //图层配置\n {\n\n const colorToRGBA = (color: string) => {\n color = color.toLocaleLowerCase();\n let rgba = [255, 255, 255, 1];\n // 十六进制颜色值转换为RGBA\n if (color.startsWith('#')) {\n if (color.length === 4) {\n // #rgb\n let r = parseInt(color[1] + color[1], 16);\n let g = parseInt(color[2] + color[2], 16);\n let b = parseInt(color[3] + color[3], 16);\n rgba = [r, g, b, 1];\n } else if (color.length === 7) {\n // #rrggbb\n let r = parseInt(color.substring(1, 3), 16);\n let g = parseInt(color.substring(3, 5), 16);\n let b = parseInt(color.substring(5, 7), 16);\n rgba = [r, g, b, 1];\n }\n }\n // RGBA颜色值转换为RGBA\n else if (color.startsWith('rgba')) {\n let match = color.match(/^rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)$/);\n if (match) {\n let r = parseInt(match[1]);\n let g = parseInt(match[2]);\n let b = parseInt(match[3]);\n let a = parseFloat(match[4]);\n rgba = [r, g, b, a];\n }\n }\n // RGB颜色值转换为RGBA\n else if (color.startsWith('rgb')) {\n let match = color.match(/^rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)$/);\n if (match) {\n let r = parseInt(match[1]);\n let g = parseInt(match[2]);\n let b = parseInt(match[3]);\n rgba = [r, g, b, 1];\n }\n } else {\n console.error('color类型只能为#rrggbb、#rgb、rgba(r,g,b,a)、rgb(r,g,b)')\n }\n return [rgba[0] / 255, rgba[1] / 255, rgba[2] / 255, rgba[3]] as [number, number, number, number];\n }\n\n const styleUpdate = () => {\n // sceneObject.resetFeatureStyle();\n const layerConfig = sceneObject.layerConfig as unknown as LayerType[] | undefined;;\n if (!layerConfig) return;\n // const czmColorBlendMode = sceneObject.colorBlendMode;\n\n // const conditions: FeatureVisableJsonType[] = [];\n // const colors: FeatureColorJsonType[] = [];\n // function isNumeric(value: string) {\n // return !isNaN(parseFloat(value));\n // }\n // //遍历layerConfig\n // for (const key in layerConfig) {\n // if (!isNumeric(key)) continue;\n // conditions.push({ value: parseFloat(key), visable: layerConfig[key].visible });\n // // const color = (czmColorBlendMode === \"HIGHLIGHT\") ? colorToRGBA('rgb(255,255,255)') : colorToRGBA(layerConfig[key].color ?? 'rgb(255,255,255)');\n // const color = colorToRGBA(layerConfig[key].color ?? 'rgb(255,255,255)');\n // colors.push({ value: parseFloat(key), rgba: color });\n // }\n\n // sceneObject.setFeatureVisable('layer', conditions);\n // sceneObject.setFeatureColor('layer', colors);\n\n const options: ESJFeatureStyleType = []\n layerConfig.forEach(e => {\n options.push({\n condition: [{\n field: \"layer\",\n op: \"==\",\n value: e.layer\n }, {\n field: \"dataset\",\n op: \"==\",\n value: e.dataset\n }],\n color: colorToRGBA(e.value.color ?? 'rgb(255,255,255)'),\n show: e.value.visible\n })\n });\n sceneObject.setFeatureStyle(options);\n }\n styleUpdate();\n const styleUpdateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.layerConfigChanged,\n // sceneObject.colorBlendModeChanged\n ))\n this.d(styleUpdateEvent.don(() => { styleUpdate() }));\n }\n }\n}\n","import {\n addTreesCallFunc, cutDownTreesCallFunc, ESSeparateFoliage,\n ESTreeParam, growthSimulationCallFunc, removeAllTreesCallFunc,\n updateTreeParamsCallFunc\n} from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESVisualObject } from \"../../base\";\n\nexport class UeESSeparateFoliage extends UeESVisualObject<ESSeparateFoliage> {\n static readonly type = this.register('ESUeViewer', ESSeparateFoliage.type, this);\n constructor(sceneObject: ESSeparateFoliage, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.addTreesEvent.don((TreeParams: ESTreeParam[]) => {\n addTreesCallFunc(ueViewer, sceneObject.id, TreeParams)\n }));\n\n this.d(sceneObject.removeAllTreesEvent.don(() => {\n removeAllTreesCallFunc(ueViewer, sceneObject.id,)\n }));\n\n this.d(sceneObject.updateTreeParamsEvent.don((TreeParams: ESTreeParam[]) => {\n updateTreeParamsCallFunc(ueViewer, sceneObject.id, TreeParams)\n }));\n\n this.d(sceneObject.cutDownTreesEvent.don((TreeIds, TimeLength) => {\n cutDownTreesCallFunc(ueViewer, sceneObject.id, TreeIds, TimeLength)\n }));\n\n this.d(sceneObject.growthSimulationEvent.don((ToParams, TimeLength, SwitchTime) => {\n growthSimulationCallFunc(ueViewer, sceneObject.id, ToParams, TimeLength, SwitchTime)\n }));\n }\n}\n","import { ESSubmergingAnalysis } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\nexport class UeESSubmergingAnalysis extends UeESObjectWithLocation<ESSubmergingAnalysis> {\n static readonly type = this.register('ESUeViewer', ESSubmergingAnalysis.type, this);\n constructor(sceneObject: ESSubmergingAnalysis, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ESSunshineAnalysis } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESGeoPolygon } from '../UeESGeoPolygon';\nexport class UeESSunshineAnalysis extends UeESGeoPolygon<ESSunshineAnalysis> {\n static override readonly type = this.register('ESUeViewer', ESSunshineAnalysis.type, this);\n constructor(sceneObject: ESSunshineAnalysis, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.startEvent.don(() => {\n viewer.callUeFunc({\n f: 'Start',\n p: {\n id: sceneObject.id\n }\n })\n }))\n this.d(sceneObject.stopEvent.don(() => {\n viewer.callUeFunc({\n f: \"Stop\",\n p: {\n id: sceneObject.id\n }\n })\n }))\n }\n}\n","import { ESSurfaceAreaMeasurement } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESSurfaceAreaMeasurement extends UeESGeoPolygon<ESSurfaceAreaMeasurement> {\n static override readonly type = this.register('ESUeViewer', ESSurfaceAreaMeasurement.type, this);\n constructor(sceneObject: ESSurfaceAreaMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.startEvent.don(() => {\n viewer.callUeFunc({\n f: 'Start',\n p: {\n id: sceneObject.id\n }\n })\n }))\n }\n}\n","\nimport { ESTextLabel } from \"@u-gis/core\";\nimport { ESUeViewer } from '../../../ESUeViewer';\nimport { UeESLabel } from '../../../UeObjects/base';\n\nexport class UeESTextLabel extends UeESLabel<ESTextLabel> {\n static readonly type = this.register('ESUeViewer', ESTextLabel.type, this);\n constructor(sceneObject: ESTextLabel, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESUEWidget, ESUEWidgetInfoType } from \"@u-gis/core\";\nimport { callFunctionCallFunc, ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLabel } from \"../../../UeObjects/base\";\n\nexport class UeESUEWidget extends UeESLabel<ESUEWidget> {\n static readonly type = this.register('ESUeViewer', ESUEWidget.type, this);\n\n static override propValFuncs = {\n ...UeESLabel.propValFuncs,\n info: (val: ESUEWidgetInfoType) => JSON.stringify(val ?? {}),\n };\n\n constructor(sceneObject: ESUEWidget, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.callFunctionEvent.don((fn, p) => {\n callFunctionCallFunc(viewer, sceneObject.id, fn, p);\n }))\n }\n}\n","\nexport const getTipInfo = (num: number) => {\n switch (num) {\n case 0:\n return '成功绑定'\n case 1:\n return '解绑之前的内容,成功绑定'\n case 2:\n return '未搜索到ActorTag,无法绑定'\n case 3:\n return '搜索到ActorTag但对应的Actor不是场景原有的,而是新建的,无法绑定'\n case 4:\n return '搜索到ActorTag对应的Actor是地形或3DTileset,无法绑定'\n default:\n return '未知错误'\n }\n}\nexport const getCreatedInfo = (num: number) => {\n switch (num) {\n case 0:\n return '创建成功'\n case 1:\n return '未找到对应的资源,无法创建'\n case 2:\n return 'Id与场景中现有的ActorTag重复,创建后可能出现问题,创建失败'\n default:\n return '未知错误'\n }\n}\n","import { EngineObject, ESJVector2D, ESJVector3D, ESUnrealActor, ESVisualObject } from \"@u-gis/core\"\nimport {\n calcFlyToParamCallFunc, callFunctionCallFunc, destroyCallFunc, ESUeViewer,\n flyToCallFunc, smoothMoveCallFunc, smoothMoveOnGroundCallFunc, smoothMoveWithRotationCallFunc,\n smoothMoveWithRotationOnGroundCallFunc, UeFuncsType\n} from \"@earthsdk3-ue/src/ESUeViewer\"\nimport { createNextAnimateFrameEvent, createProcessingFromAsyncFunc, react } from \"xbsj-base\"\nimport { getCreatedInfo, getTipInfo } from \"./tipInfo\";\nexport class UeESUnrealActor extends EngineObject<ESUnrealActor> {\n static readonly type = this.register('ESUeViewer', ESUnrealActor.type, this);\n constructor(sceneObject: ESUnrealActor, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`${sceneObject.id} UeESUnrealActor viewer is undefined!`);\n return;\n }\n\n this.d(() => { destroyCallFunc(viewer, sceneObject.id) });\n\n const updateProps = async () => {\n if (nullActor()) return;\n await viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n name: sceneObject.name,\n show: sceneObject.show,\n rotation: sceneObject.rotation,\n flyToParam: sceneObject.flyToParam ?? ESVisualObject.defaults.flyToParam,\n flyInParam: sceneObject.flyInParam ?? ESVisualObject.defaults.flyInParam,\n highlight: sceneObject.highlight,\n collision: sceneObject.collision,\n scale: sceneObject.scale,\n minVisibleDistance: sceneObject.minVisibleDistance,\n maxVisibleDistance: sceneObject.maxVisibleDistance,\n }\n });\n };\n\n const updateEvent = this.dv(createNextAnimateFrameEvent(\n sceneObject.showChanged,\n sceneObject.nameChanged,\n sceneObject.rotationChanged,\n // sceneObject.editingChanged,\n sceneObject.flyToParamChanged,\n sceneObject.flyInParamChanged,\n sceneObject.highlightChanged,\n sceneObject.collisionChanged,\n sceneObject.scaleChanged,\n sceneObject.minVisibleDistanceChanged,\n sceneObject.maxVisibleDistanceChanged,\n ));\n this.d(updateEvent.don(updateProps));\n this.d(sceneObject.flushEvent.don(() => updateEvent.flush()));\n\n let bindedActorTag: string | undefined = undefined;\n let createdActorClass: string | undefined = undefined;\n const updatePostion = async () => {\n // if (sceneObject.position === undefined) return;\n if (nullActor()) return;\n await viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n position: sceneObject.position,\n }\n });\n (ueViewer.debug ?? false) && console.log(`updatePostion:${sceneObject.position},actorTag:${sceneObject.actorTag},actorClass:${sceneObject.actorClass}`)\n }\n\n const nullActor = () => {\n if (!bindedActorTag && !createdActorClass) {\n console.warn(`${sceneObject.id} 未绑定ActorTag或未创建ActorClass!`);\n return true;\n } else {\n return false;\n }\n }\n\n\n const unBindOrDestroy = async () => {\n const { id } = sceneObject;\n\n const result = await ueViewer.unBindActorByID(id);\n if (result && result.error !== \"\") {\n console.warn(`${sceneObject.id} UeESUnrealActor UnBindActorByID: ${result.error}`);\n }\n bindedActorTag = undefined;\n\n const result2 = await viewer.callUeFunc<UeFuncsType['destroy']['result']>({ f: 'destroy', p: { id } });\n if (result2 && result2.error !== \"\") {\n console.warn(`${sceneObject.id} UeESUnrealActor DestroyActorByID: ${result2.error}`);\n return;\n }\n createdActorClass = undefined;\n\n }\n\n type RecreatInfoType = ({ type: 'ActorClass', actorClass: string } | { type: 'ActorTag', actorTag: string }) & { position?: ESJVector3D }\n const recreatInfo = this.dv(react<RecreatInfoType>({\n type: 'ActorClass',\n actorClass: 'default'\n }));\n {\n const event = this.dv(createNextAnimateFrameEvent(\n sceneObject.actorClassChanged,\n sceneObject.actorTagChanged,\n // sceneObject.positionChanged,\n ));\n const update = async () => {\n // if (!sceneObject.position) return;\n if (sceneObject.actorTag !== '') {\n recreatInfo.value = {\n type: 'ActorTag',\n actorTag: sceneObject.actorTag,\n // position: sceneObject.position,\n };\n // if (sceneObject.position[0] === 0 && sceneObject.position[1] === 0 && sceneObject.position[2] === 0) {\n // // recreatInfo.value.position = sceneObject.position;\n // const res = await ueViewer.getObjectByInfo({ actorTag: sceneObject.actorTag });\n // res && res.object && res.object.position && (sceneObject.position = res.position);\n // }\n } else {\n recreatInfo.value = {\n type: 'ActorClass',\n actorClass: sceneObject.actorClass === '' ? 'default' : sceneObject.actorClass,\n // position: sceneObject.position,\n };\n }\n };\n update();\n this.d(event.don(update));\n this.d(sceneObject.flushEvent.don(() => event.flush()));\n }\n\n {\n const processing = this.dv(createProcessingFromAsyncFunc(async cancelsManager => {\n await cancelsManager.promise(unBindOrDestroy());\n if (recreatInfo.value.type === 'ActorTag') {\n const { actorTag } = recreatInfo.value;\n await cancelsManager.promise(unBindOrDestroy());\n try {\n sceneObject.lastActorStatus = 'null'\n const result = await cancelsManager.promise(ueViewer.bindActorByTag(sceneObject.id, actorTag))\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`${sceneObject.id} UeESUnrealActor BindActorByTag:${actorTag},${result.error}`);\n return;\n }\n if (result.re.type === 0) {\n sceneObject.lastActorStatus = 'bound';\n bindedActorTag = actorTag;\n } else if (result.re.type === 1) {\n sceneObject.lastActorStatus = 'bound';\n bindedActorTag = actorTag;\n console.warn(`${sceneObject.id} UeESUnrealActor BindActorByTag:${actorTag},${getTipInfo(result.re.type)}`);\n } else {\n bindedActorTag = undefined;\n console.warn(`${sceneObject.id} UeESUnrealActor BindActorByTag error:${actorTag}, ${getTipInfo(result.re.type)}`);\n return;\n }\n } catch (error) {\n console.warn(`${sceneObject.id} UeESUnrealActor BindActorByTag catch error:${actorTag}, ${error}`);\n return;\n }\n } else if (recreatInfo.value.type === 'ActorClass') {\n const { actorClass } = recreatInfo.value;\n try {\n const result = await cancelsManager.promise(ueViewer.createActorByClass(sceneObject.id, actorClass));\n if (!result) return;\n if (result.error !== \"\") {\n console.warn(`${sceneObject.id} UeESUnrealActor CreateActorByClass error :${actorClass}, ${result.error}`);\n return;\n }\n if (result.re.type === 0) {\n sceneObject.lastActorStatus = 'created';\n createdActorClass = actorClass;\n } else {\n console.warn(`${sceneObject.id} UeESUnrealActor CreateActorByClass error type :${actorClass},${getCreatedInfo(result.re.type)}`);\n return;\n }\n } catch (error) {\n console.warn(`${sceneObject.id} UeESUnrealActor CreateActorByClass error catch :${actorClass}, ${JSON.stringify(error)}`);\n return;\n }\n }\n // 更新属性\n await cancelsManager.promise(updateProps());\n await cancelsManager.promise(updatePostion());\n }));\n\n const update = async () => { processing.restart(); }\n update();\n this.d(recreatInfo.changed.don(update));\n }\n\n this.d(sceneObject.positionChanged.don(updatePostion));\n\n this.d(sceneObject.callFunctionEvent.don((fn, p) => {\n if (nullActor()) return;\n callFunctionCallFunc(viewer, sceneObject.id, fn, p);\n }))\n\n this.d(sceneObject.smoothMoveEvent.don((Destination: ESJVector3D, Time: number) => {\n if (nullActor()) return;\n smoothMoveCallFunc(viewer, sceneObject.id, Destination, Time);\n }))\n\n this.d(sceneObject.smoothMoveWithRotationEvent.don((Destination: ESJVector3D, NewRotation: ESJVector3D, Time: number) => {\n if (nullActor()) return;\n smoothMoveWithRotationCallFunc(viewer, sceneObject.id, Destination, NewRotation, Time);\n }))\n this.d(sceneObject.smoothMoveOnGroundEvent.don((Lon: number, Lat: number, Time: number, Ground: string) => {\n if (nullActor()) return;\n smoothMoveOnGroundCallFunc(viewer, sceneObject.id, Lon, Lat, Ground, Time);\n }))\n this.d(sceneObject.smoothMoveWithRotationOnGroundEvent.don((NewRotation: ESJVector3D, Lon: number, Lat: number, Time: number, Ground: string) => {\n if (nullActor()) return;\n smoothMoveWithRotationOnGroundCallFunc(viewer, sceneObject.id, NewRotation, Lon, Lat, Time, Ground);\n }))\n\n //自动落地\n this.d(sceneObject.automaticLandingEvent.don((flag) => {\n if (nullActor()) return;\n const posi = [sceneObject.position[0], sceneObject.position[1]] as ESJVector2D\n ueViewer.getHeightByLonLat(sceneObject.position[0], sceneObject.position[1], 'Visibility').then((res) => {\n if (res !== null) {\n sceneObject.position = [...posi, res]\n sceneObject.collision = flag\n }\n })\n }));\n\n this.d(sceneObject.flyToEvent.don(async (duration, id) => {\n if (nullActor()) return;\n const res = await flyToCallFunc(viewer, sceneObject.id, duration);\n let mode: 'cancelled' | 'over' | 'error' = 'over';\n if (res === undefined) {\n mode = 'error'\n } else if (res.endType === 0) {\n mode = 'over'\n } else if (res.endType === 1) {\n mode = 'cancelled'\n }\n sceneObject.flyOverEvent.emit(id, mode, ueViewer);\n }));\n\n this.d(sceneObject.calcFlyToParamEvent.don(() => {\n if (nullActor()) return;\n calcFlyToParamCallFunc(viewer, sceneObject.id);\n\n }));\n\n this.d(sceneObject.calcFlyInParamEvent.don(async () => {\n if (!ueViewer.actived) return;\n const cameraInfo = await ueViewer.getCurrentCameraInfo();\n if (!cameraInfo) return;\n const { position, rotation } = cameraInfo;\n sceneObject.flyInParam = { position, rotation, flyDuration: 1 };\n }));\n\n this.d(ueViewer.propChanged.don((info) => {\n if (nullActor()) return;\n // console.log('ueViewer.propChanged', info)\n if (info.objId !== sceneObject.id) return;\n Object.keys(info.props).forEach(key => {\n const prop = info.props[key] === null ? undefined : info.props[key]\n //@ts-ignore\n sceneObject[key] = prop\n });\n }));\n }\n}\n","import { ESVideoFusion } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\n\nexport class UeESVideoFusion extends UeESObjectWithLocation<ESVideoFusion> {\n static readonly type = this.register('ESUeViewer', ESVideoFusion.type, this);\n constructor(sceneObject: ESVideoFusion, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESViewShed } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESObjectWithLocation } from \"../../../UeObjects/base\";\nexport class UeESViewShed extends UeESObjectWithLocation<ESViewShed> {\n static readonly type = this.register('ESUeViewer', ESViewShed.type, this);\n constructor(sceneObject: ESViewShed, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESVisibilityAnalysis } from \"@u-gis/core\";\nimport { UeESGeoVector } from \"../../../UeObjects/base\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nexport class UeESVisibilityAnalysis extends UeESGeoVector<ESVisibilityAnalysis> {\n static readonly type = this.register('ESUeViewer', ESVisibilityAnalysis.type, this);\n constructor(sceneObject: ESVisibilityAnalysis, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is underfined!`);\n return;\n }\n }\n}\n","import { ESUeViewer } from '../../../ESUeViewer';\nimport { ESVolumeMeasurement } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from '../UeESGeoPolygon';\n\nexport class UeESVolumeMeasurement extends UeESGeoPolygon<ESVolumeMeasurement> {\n static override readonly type = this.register('ESUeViewer', ESVolumeMeasurement.type, this);\n constructor(sceneObject: ESVolumeMeasurement, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n this.d(sceneObject.startEvent.don(() => {\n viewer.callUeFunc({\n f: 'Start',\n p: {\n id: sceneObject.id\n }\n })\n }))\n this.d(sceneObject.clearEvent.don(() => {\n viewer.callUeFunc({\n f: 'Clear',\n p: {\n id: sceneObject.id\n }\n })\n }))\n }\n}\n","import { ESWidget, ESWidgetInfoType } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESLabel } from \"../../../UeObjects/base\";\n\nexport class UeESWidget extends UeESLabel<ESWidget> {\n static readonly type = this.register('ESUeViewer', ESWidget.type, this);\n static override propValFuncs = {\n ...UeESLabel.propValFuncs,\n info: (val: ESWidgetInfoType) => JSON.stringify(val ?? {}),\n };\n constructor(sceneObject: ESWidget, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","import { ESUeViewer } from \"@earthsdk3-ue/src/ESUeViewer\";\nimport { EngineObject, ESHumanPoi, SceneObjectPickedInfo } from \"@u-gis/core\";\nexport class UeESHumanPoi extends EngineObject<ESHumanPoi> {\n static readonly type = this.register(\"ESUeViewer\", ESHumanPoi.type, this);\n constructor(sceneObject: ESHumanPoi, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n {\n sceneObject.poi.actorTag = sceneObject.human.id;\n sceneObject.poi.positionOffset = [0, 0, sceneObject.poiOffsetHeight - 0.8];\n this.d(sceneObject.poiOffsetHeightChanged.don(() => {\n sceneObject.poi.positionOffset = [0, 0, sceneObject.poiOffsetHeight - 0.8];\n }));\n }\n this.d(() => { sceneObject.poi.actorTag = ''; });\n }\n}\n","import { EngineObject, ESCustomDiv, ESNavigator, ESSceneObject, ESViewer } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { Destroyable, track } from \"xbsj-base\";\n\nconst url1 = ESSceneObject.context.getStrFromEnv(ESNavigator.defaults.imgUrl)\nexport class UeESNavigator extends EngineObject<ESNavigator> {\n static readonly type = this.register(\"ESUeViewer\", ESNavigator.type, this);\n constructor(sceneObject: ESNavigator, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const customDiv = this.disposeVar(new ESCustomDiv());\n ueViewer.add(customDiv);\n\n this.dispose(() => ueViewer.delete(customDiv))\n this.dispose(track([customDiv, 'show'], [sceneObject, 'show']));\n customDiv.instanceClass = class MyDiv extends Destroyable {\n // subContainer是外部视口的div容器,可以在这里创建自己需要的DOM元素\n // customDiv指向当前的CustomDiv场景对象\n // viewer指定当前的视口\n constructor(private _subContainer: HTMLDivElement, customDiv: ESCustomDiv, viewer?: ESViewer | undefined) {\n super();\n const div = document.createElement('div');\n this._subContainer.appendChild(div);\n this.dispose(() => this._subContainer.removeChild(div));\n {\n const a = async () => {\n const res = await ueViewer.getCurrentCameraInfo()\n const position = res?.position as [number, number, number]\n const rotation = res?.rotation as [number, number, number]\n const a = [...rotation] as [number, number, number]\n a[0] = 360\n ueViewer.flyIn(position, a)\n }\n div.addEventListener('click', a);\n div.style.cursor = 'pointer'\n this.dispose(() => div.removeEventListener('click', a));\n }\n\n {\n const update = () => {\n div.style.width = `${sceneObject.cssSize ? sceneObject.cssSize : ESNavigator.defaults.cssSize}px`;\n div.style.height = `${sceneObject.cssSize ? sceneObject.cssSize : ESNavigator.defaults.cssSize}px`;\n }\n update()\n sceneObject.dispose(sceneObject.cssSizeChanged.disposableOn(update))\n }\n div.style.position = 'fixed';\n {\n const update = () => {\n div.style.top = `${sceneObject.cssPosition ? sceneObject.cssPosition[0] : ESNavigator.defaults.cssPosition[0]}px`;\n div.style.right = `${sceneObject.cssPosition ? sceneObject.cssPosition[1] : ESNavigator.defaults.cssPosition[1]}px`;\n }\n update()\n sceneObject.dispose(sceneObject.cssPositionChanged.disposableOn(update))\n }\n div.style.transition = ' right 0.4s linear';\n div.style.cursor = 'pointer';\n const box = document.createElement('div');\n div.appendChild(box);\n this.dispose(() => div.removeChild(box));\n box.style.width = '100%';\n box.style.height = '100%';\n box.style.position = 'relative';\n\n const rbox = document.createElement('img');\n box.appendChild(rbox);\n this.dispose(() => box.removeChild(rbox));\n rbox.style.width = '100%';\n rbox.style.height = '100%';\n rbox.style.border = 'none';\n {\n const update = () => rbox.src = sceneObject.imgUrl;\n update()\n sceneObject.dispose(sceneObject.imgUrlChanged.disposableOn(update))\n }\n {\n const aaa = () => {\n const rotation = ueViewer.getCurrentCameraInfo().rotation[0]\n const a = -rotation\n rbox.style.transform = `rotate(${a}deg)`;\n }\n let timer: any\n const update = async () => {\n aaa()\n if (sceneObject.show) {\n div.style.display = 'block';\n timer = setInterval(() => {\n aaa()\n }, 1000)\n } else {\n div.style.display = 'none'\n clearInterval(timer);\n }\n }\n this.dispose(sceneObject.showChanged.disposableOn(update));\n update()\n this.dispose(() => clearInterval(timer));\n }\n rbox.style.transformOrigin = '50% 50%';\n\n }\n }\n }\n}\n","import { ESPath } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESGeoVector } from \"../../base\";\n\nexport class UeESPath<T extends ESPath = ESPath> extends UeESGeoVector<T> {\n static readonly type = this.register<ESPath, ESUeViewer>(\"ESUeViewer\", ESPath.type, this);\n\n static override forceUeUpdateProps = [\n ...UeESGeoVector.forceUeUpdateProps,\n ];\n\n static override propValFuncs = {\n ...UeESGeoVector.propValFuncs,\n materialMode: null,\n };\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n {\n // 兼容旧的属性,后期不支持设置purple和blue\n const update = () => {\n let materialMode = sceneObject.materialMode === \"blue\"\n ? \"multipleArrows\"\n : sceneObject.materialMode === \"purple\"\n ? \"singleArrow\"\n : sceneObject.materialMode;\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n materialMode: materialMode,\n }\n })\n };\n this.dispose(sceneObject.materialModeChanged.disposableOn(update));\n this.dispose(sceneObject.createdEvent.disposableOn(update));\n }\n }\n}\n","import { EngineObject, ESCustomDiv, ESViewer, ESViewerStatusBar } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { Destroyable } from \"xbsj-base\";\n\nasync function copyClipboard(text: string) {//复制\n navigator.clipboard.writeText(text)\n .then(function () {\n console.log('复制成功');\n }, function (e) {\n console.log('复制失败');\n });\n}\nexport class UeESViewerStatusBar extends EngineObject<ESViewerStatusBar> {\n static readonly type = this.register(\"ESUeViewer\", ESViewerStatusBar.type, this);\n constructor(sceneObject: ESViewerStatusBar, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const customDiv = this.disposeVar(new ESCustomDiv());\n ueViewer.add(customDiv);\n\n this.dispose(() => ueViewer.delete(customDiv))\n customDiv.instanceClass = class MyDiv extends Destroyable {\n constructor(private _subContainer: HTMLDivElement, customDiv: ESCustomDiv<{ destroy(): undefined; }>, viewer?: ESViewer | undefined) {\n super()\n if (!viewer) return;\n if (!(viewer instanceof ESUeViewer)) return;\n\n const div = document.createElement('div');\n this._subContainer.appendChild(div);\n this.dispose(() => this._subContainer.removeChild(div));\n div.style.width = '100%';\n div.style.position = 'absolute';\n div.style.height = `${ESViewerStatusBar.defaults.height}px`;\n div.style.left = '0';\n div.style.bottom = '0';\n div.style.color = '#fff';\n div.style.padding = '0 20px 0 0';\n div.style.boxSizing = 'border-box';\n div.style.lineHeight = `${ESViewerStatusBar.defaults.height}px`;\n div.style.zIndex = '100'; // 特别重要,不能丢!很可能导致保存后打开看不到!\n div.style.alignContent = 'center';\n div.style.justifyContent = 'space-between';\n\n const spanl = document.createElement('span');\n div.appendChild(spanl);\n this.dispose(() => div.removeChild(spanl));\n\n const spanLeft = document.createElement('span');\n spanl.appendChild(spanLeft);\n this.dispose(() => spanl.removeChild(spanLeft));\n\n const spanRight = document.createElement('span');\n spanl.appendChild(spanRight);\n spanRight.addEventListener('dblclick', function () {\n let innerHTML = spanRight.innerHTML\n if (innerHTML.startsWith('鼠标位置')) {\n innerHTML = innerHTML.slice(5)\n }\n copyClipboard(innerHTML)\n });\n spanRight.style.cursor = 'pointer'\n this.dispose(() => spanl.removeChild(spanRight));\n\n const span = document.createElement('span');\n div.appendChild(span);\n this.dispose(() => div.removeChild(span));\n\n {\n const update = () => {\n div.style.height = (sceneObject.height ?? ESViewerStatusBar.defaults.height) + 'px';\n div.style.lineHeight = (sceneObject.height ?? ESViewerStatusBar.defaults.height) + 'px';\n }\n this.dispose(sceneObject.heightChanged.disposableOn(update));\n update()\n }\n {\n const update = () => {\n div.style.fontSize = (sceneObject.fontSize ?? ESViewerStatusBar.defaults.fontSize) + 'px';\n }\n this.dispose(sceneObject.fontSizeChanged.disposableOn(update));\n update()\n }\n {\n const update = () => {\n if (sceneObject.bgColor) {\n // console.log('sceneObject.bgColor', sceneObject.bgColor);\n\n div.style.background = `rgba(${sceneObject.bgColor[0] * 255},${sceneObject.bgColor[1] * 255},${sceneObject.bgColor[2] * 255},${sceneObject.bgColor[3]})`\n } else {\n div.style.background = `rgba(${ESViewerStatusBar.defaults.bgColor[0]},${ESViewerStatusBar.defaults.bgColor[1]},${ESViewerStatusBar.defaults.bgColor[2]},${ESViewerStatusBar.defaults.bgColor[3]})`\n }\n }\n this.dispose(sceneObject.bgColorChanged.disposableOn(update));\n update()\n }\n {\n viewer.getVersion().then(res => {\n if (res) {\n span.innerText = `Ue 版本 : ${res[0]} `;\n }\n }).catch(error => {\n console.log(error);\n })\n }\n {\n const aaa = () => {\n let leftInnerText = '';\n let rightInnerText = ''\n leftInnerText += `帧率:${viewer.getFPS().toFixed(0)}FPS`\n spanLeft.innerText = leftInnerText;\n const res = ueViewer.getCurrentCameraInfo();\n leftInnerText += ` 经度: ${res.position[0].toFixed(5)}° 纬度: ${res.position[1].toFixed(5)}° 高度: ${res.position[2].toFixed(2)}米 偏航角: ${res.rotation[0].toFixed(2)}° 俯仰角: ${res.rotation[1].toFixed(2)}° 翻滚角:${res.rotation[2].toFixed(2)}° `\n spanLeft.innerText = leftInnerText;\n\n ueViewer.pick().then(res => {\n if (res) {\n const { pickResult } = res;\n if (pickResult && pickResult.position) {\n const { position } = pickResult\n rightInnerText += `鼠标位置:${position[0].toFixed(5)}° ${position[1].toFixed(5)}° ${position[2].toFixed(2)}m`\n } else {\n rightInnerText += `暂时无法获取鼠标位置...`\n }\n spanRight.innerText = rightInnerText;\n }\n }).catch(error => {\n console.log(error);\n })\n }\n let timer: any\n const update = async () => {\n aaa()\n if (sceneObject.show) {\n div.style.display = 'flex';\n timer = setInterval(() => {\n aaa()\n }, 1000)\n\n } else {\n div.style.display = 'none'\n clearInterval(timer);\n }\n }\n this.dispose(sceneObject.showChanged.disposableOn(update));\n update()\n this.dispose(() => clearInterval(timer));\n }\n }\n\n };\n\n }\n}\n","import { ESGaussianSplatting } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"@earthsdk3-ue/src/UeObjects/base\";\nimport { ESUeViewer } from \"@earthsdk3-ue/src/ESUeViewer\";\n\nexport class UeESGaussianSplatting extends UeESObjectWithLocation<ESGaussianSplatting> {\n static readonly type = this.register('ESUeViewer', ESGaussianSplatting.type, this);\n constructor(sceneObject: ESGaussianSplatting, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n","\nimport { ES3DTileset, ESRtsFeatureEditing, SceneObjectPickedInfo } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeESSceneObject } from \"../../../UeObjects/base\";\nimport { bind, createNextAnimateFrameEvent, track } from \"xbsj-base\";\n\n\nexport class UeESRtsFeatureEditing<T extends ESRtsFeatureEditing = ESRtsFeatureEditing> extends UeESSceneObject<T> {\n static readonly type = this.register<ESRtsFeatureEditing, ESUeViewer>('ESUeViewer', ESRtsFeatureEditing.type, this);\n\n private _es3DTileset = this.dv(new ES3DTileset(`${this.sceneObject.id}_ES3DTileset`));\n get es3DTileset() { return this._es3DTileset; }\n\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n sceneObject.mainClass = this._es3DTileset;\n //属性同步\n {\n const tileset = this._es3DTileset;\n ueViewer.add(tileset);\n this.dispose(() => ueViewer.delete(tileset))\n this.d(track([tileset, 'allowPicking'], [sceneObject, 'allowPicking']));\n this.d(track([tileset, 'collision'], [sceneObject, 'collision']));\n this.d(bind([tileset, 'flyToParam'], [sceneObject, 'flyToParam']));\n this.d(bind([tileset, 'flyToParam'], [sceneObject, 'flyToParam']));\n //此处url为服务地址,由服务端返回\n this.d(track([tileset, 'url'], [sceneObject, 'url']));\n this.d(track([tileset, 'actorTag'], [sceneObject, 'actorTag']));\n this.d(track([tileset, 'materialMode'], [sceneObject, 'materialMode']));\n this.d(track([tileset, 'highlight'], [sceneObject, 'highlight']));\n this.d(track([tileset, 'maximumScreenSpaceError'], [sceneObject, 'maximumScreenSpaceError']));\n this.d(track([tileset, 'highlightID'], [sceneObject, 'highlightID']));\n this.d(track([tileset, 'highlightColor'], [sceneObject, 'highlightColor']));\n\n this.d(bind([tileset, 'offset'], [sceneObject, 'offset']));\n this.d(bind([tileset, 'rotation'], [sceneObject, 'rotation']));\n\n this.d(track([tileset, 'czmImageBasedLightingFactor'], [sceneObject, 'czmImageBasedLightingFactor']));\n this.d(track([tileset, 'czmLuminanceAtZenith'], [sceneObject, 'czmLuminanceAtZenith']));\n this.d(track([tileset, 'czmMaximumMemoryUsage'], [sceneObject, 'czmMaximumMemoryUsage']));\n this.d(track([tileset, 'czmClassificationType'], [sceneObject, 'czmClassificationType']));\n this.d(track([tileset, 'czmStyleJson'], [sceneObject, 'czmStyleJson']));\n this.d(track([tileset, 'czmBackFaceCulling'], [sceneObject, 'czmBackFaceCulling']));\n this.d(track([tileset, 'czmDebugShowBoundingVolume'], [sceneObject, 'czmDebugShowBoundingVolume']));\n this.d(track([tileset, 'czmDebugShowContentBoundingVolume'], [sceneObject, 'czmDebugShowContentBoundingVolume']));\n\n this.d(track([tileset, 'colorBlendMode'], [sceneObject, 'colorBlendMode']));\n this.d(track([tileset, 'cacheBytes'], [sceneObject, 'cacheBytes']));\n\n this.d(track([tileset, 'clippingPlaneEnabled'], [sceneObject, 'clippingPlaneEnabled']));\n this.d(track([tileset, 'unionClippingRegions'], [sceneObject, 'unionClippingRegions']));\n this.d(track([tileset, 'clippingPlaneEdgeColor'], [sceneObject, 'clippingPlaneEdgeColor']));\n this.d(track([tileset, 'clippingPlaneEdgeWidth'], [sceneObject, 'clippingPlaneEdgeWidth']));\n this.d(track([tileset, 'materialParams'], [sceneObject, 'materialParams']));\n\n this.d(bind([tileset, 'supportEdit'], [sceneObject, 'supportEdit']));\n this.d(bind([tileset, 'clippingPlanesId'], [sceneObject, 'clippingPlanesId']));\n this.d(bind([tileset, 'clippingPlaneIds'], [sceneObject, 'clippingPlaneIds']));\n this.d(bind([tileset, 'flattenedPlaneId'], [sceneObject, 'flattenedPlaneId']));\n this.d(bind([tileset, 'flattenedPlaneEnabled'], [sceneObject, 'flattenedPlaneEnabled']));\n this.d(bind([tileset, 'clippingPlaneId'], [sceneObject, 'clippingPlaneId']));\n this.d(bind([tileset, 'excavateId'], [sceneObject, 'excavateId']));\n }\n //函数同步\n {\n const es3DTileset = this._es3DTileset;\n this.d(sceneObject.refreshTilesetEvent.don(() => { es3DTileset.refreshTileset(); }));\n this.d(sceneObject.highlightFeatureEvent.don((...arg) => { es3DTileset.highlightFeature(...arg); }));\n this.d(sceneObject.highlightFeatureAndFlyToEvent.don((...arg) => { es3DTileset.highlightFeatureAndFlyTo(...arg); }));\n this.d(sceneObject.setFeatureColorEvent.don((...arg) => { es3DTileset.setFeatureColor(...arg); }));\n this.d(sceneObject.setFeatureVisableEvent.don((...arg) => { es3DTileset.setFeatureVisable(...arg); }));\n this.d(sceneObject.resetFeatureStyleEvent.don((...arg) => { es3DTileset.resetFeatureStyle(...arg); }));\n this.d(sceneObject.flyInEvent.don((...arg) => { es3DTileset.flyIn(arg[0]); }));\n this.d(sceneObject.flyToEvent.don((...arg) => { es3DTileset.flyTo(arg[0]); }));\n this.d(sceneObject.calcFlyToParamEvent.don((...arg) => { es3DTileset.calcFlyToParam(...arg); }));\n this.d(sceneObject.calcFlyInParamEvent.don((...arg) => { es3DTileset.calcFlyInParam(...arg); }));\n }\n //事件同步\n {\n const es3DTileset = this._es3DTileset;\n this.d(es3DTileset.tilesetReady.don((tileset) => { sceneObject.tilesetReady.emit(tileset); }));\n\n this.d(es3DTileset.pickedEvent.don((pickedInfo) => {\n // @ts-ignore\n sceneObject.pickedEvent.emit(new SceneObjectPickedInfo(sceneObject, pickedInfo.childPickedInfo));\n }));\n }\n //显隐控制\n {\n const updateShow = () => {\n this.es3DTileset.show = sceneObject.show;\n }\n updateShow();\n this.d(sceneObject.showChanged.don(() => { updateShow() }));\n }\n }\n}\n","import { ESMsTileset } from \"@u-gis/core\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { UeES3DTileset } from \"../UeES3DTileset\";\nimport { UeESSceneObject } from \"../../../UeObjects/base\";\n\nexport class UeESMsTileset<T extends ESMsTileset = ESMsTileset> extends UeESSceneObject<T> {\n static readonly type = this.register<ESMsTileset, ESUeViewer>('ESUeViewer', ESMsTileset.type, this);\n constructor(sceneObject: T, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n }\n}\n\n","\nimport { ESGeoExtrudedPolygon } from \"@u-gis/core\";\nimport { UeESGeoPolygon } from \"../UeESGeoPolygon\";\nimport { ESUeViewer } from \"../../../ESUeViewer\";\nimport { createNextAnimateFrameEvent } from \"xbsj-base\";\n\nexport class UeESGeoExtrudedPolygon extends UeESGeoPolygon<ESGeoExtrudedPolygon> {\n static override readonly type = this.register(\"ESUeViewer\", ESGeoExtrudedPolygon.type, this);\n constructor(sceneObject: ESGeoExtrudedPolygon, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn(`viewer is undefined!`);\n return;\n }\n const update = () => {\n viewer.callUeFunc({\n f: 'update',\n p: {\n id: sceneObject.id,\n height: sceneObject.height ?? ESGeoExtrudedPolygon.defaults.height,\n extrudedHeight: sceneObject.extrudedHeight ?? ESGeoExtrudedPolygon.defaults.extrudedHeight,\n perPositionHeight: sceneObject.perPositionHeight ?? ESGeoExtrudedPolygon.defaults.perPositionHeight,\n }\n })\n };\n const updateEvent = this.disposeVar(createNextAnimateFrameEvent(\n sceneObject.heightChanged,\n sceneObject.extrudedHeightChanged,\n sceneObject.perPositionHeightChanged\n ));\n this.dispose(updateEvent.disposableOn(update));\n this.dispose(sceneObject.createdEvent.disposableOn(update));\n\n }\n}","import { ESStaticMesh } from \"@u-gis/core\";\nimport { UeESObjectWithLocation } from \"@earthsdk3-ue/src/UeObjects/base\";\nimport { ESUeViewer } from \"@earthsdk3-ue/src/ESUeViewer\";\n\nexport class UeESStaticMesh extends UeESObjectWithLocation<ESStaticMesh> {\n static readonly type = this.register('ESUeViewer', ESStaticMesh.type, this);\n constructor(sceneObject: ESStaticMesh, ueViewer: ESUeViewer) {\n super(sceneObject, ueViewer);\n const viewer = ueViewer.viewer;\n if (!viewer) {\n console.warn('viewer is undefined!');\n return;\n }\n }\n}\n"],"names":["ESViewer","reactArrayWithUndefined","HasOwner","lastSendId","Logger","Destroyable","Config","TextParameters","Flags","NumericParameters","PixelStreaming","createGuid","XrEvent","params","ESSceneObject","PickedResult","PickedInfo","Event","react","createAnimateFrame","createInterval","createNextAnimateFrameEvent","ViewerCustomInteraction","ObjResettingWithEvent","createProcessingFromAsyncFunc","offsetWidth","offsetHeight","sleep","getGeoBoundingSphereFromPositions","ESUeViewer","EngineObject","ueViewer","viewer","getTipInfo","ESVisualObject","ES3DTileset","reactJson","ESImageryLayer","ESTerrainLayer","ESAlarm","ESApertureEffect","ESGeoPolygon","ESAreaMeasurement","ESBlastParticleSystem","ESBoxClipping","ESCameraView","ESCameraVisibleRange","ESCar","ESClassification","ESClippingPlane","update","ESDataMesh","ESDatasmithRuntimeModel","ESDirectionMeasurement","ESDistanceMeasurement","ESLocalPolygon","ESDynamicWater","ESEntityCluster","ESExcavate","ESFireParticleSystem","ESForestTileset","ESImageLabel","ESGeoDiv","track","bind","ESGeoJson","ESGeoLineString","ESGeoRectangle","ESGeoWater","rpToap","ESGltfModel","ESHeightMeasurement","ESHuman","ESLevelRuntimeModel","ESLocalCircle","ESLocalPolygonZ","ESLocalRectangle","ESLocalSkyBox","ESLocationMeasurement","ESPipeFence","ESPipeline","ESPipeserTileset","ESPit","ESPoi2D","ESPoi3D","ESPoiTileset","ESPolygonFence","ESPolygonFlattenedPlane","ESPolygonWithHole","ESRtsTileset","addTreesCallFunc","removeAllTreesCallFunc","updateTreeParamsCallFunc","cutDownTreesCallFunc","growthSimulationCallFunc","ESSeparateFoliage","ESSubmergingAnalysis","ESSunshineAnalysis","ESSurfaceAreaMeasurement","ESTextLabel","ESUEWidget","ESUnrealActor","ESVideoFusion","ESViewShed","ESVisibilityAnalysis","ESVolumeMeasurement","ESWidget","ESHumanPoi","ESNavigator","ESCustomDiv","customDiv","a","ESPath","ESViewerStatusBar","res","ESGaussianSplatting","SceneObjectPickedInfo","ESRtsFeatureEditing","ESMsTileset","ESGeoExtrudedPolygon","ESStaticMesh"],"mappings":"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"}
|