UNPKG

vue-cesium

Version:
1 lines 9.37 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/composables/use-primitives/index.ts"],"sourcesContent":["/**\n * for\n * ClassificationPrimitive\n * GroundPolylinePrimitive\n * GroundPrimitive\n * Model\n * Cesium3DTileset\n * Primitive\n * ParticleSystem\n */\nimport type { VcComponentInternalInstance, VcComponentPublicInstance } from '@vue-cesium/utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from '@vue-cesium/utils/merge-descriptors'\nimport { provide, ref } from 'vue'\nimport { vcKey } from '@vue-cesium/utils/config'\nimport { getInstanceListener } from '@vue-cesium/utils/private/vm'\nimport { isArray } from '@vue-cesium/utils/util'\nimport { compareCesiumVersion } from '@vue-cesium/utils/cesium-helpers'\n\nexport default function (props, ctx, vcInstance: VcComponentInternalInstance) {\n // state\n const commonState = useCommon(props, ctx, vcInstance)\n if (commonState === void 0) {\n return\n }\n\n const { emit } = ctx\n const childCount = ref(0)\n const instances = ref<Array<Cesium.GeometryInstance>>([])\n // methods\n vcInstance.createCesiumObject = async () => {\n const options = commonState.transformProps(props)\n if (!options.asynchronous) {\n await Cesium[vcInstance.cesiumClass].initializeTerrainHeights?.()\n }\n if (props.geometryInstances) {\n if (isArray(props.geometryInstances)) {\n instances.value.push(...props.geometryInstances)\n childCount.value += props.geometryInstances.length\n } else {\n childCount.value += 1\n instances.value.push(props.geometryInstances)\n }\n }\n\n if (\n (vcInstance.cesiumClass === 'Cesium3DTileset' || vcInstance.cesiumClass === 'I3SDataProvider') &&\n compareCesiumVersion(Cesium.VERSION, '1.104')\n ) {\n try {\n if (Cesium.defined(props.assetId) && vcInstance.cesiumClass === 'Cesium3DTileset') {\n return await Cesium[vcInstance.cesiumClass].fromIonAssetId(props.assetId, options)\n } else {\n return await Cesium[vcInstance.cesiumClass].fromUrl(props.url, options)\n }\n } catch (error) {\n commonState.logger.error(`Failed to load tileset: ${error}`)\n }\n } else {\n return new Cesium[vcInstance.cesiumClass](options)\n }\n }\n\n vcInstance.mount = async () => {\n const primitives = commonState.$services.primitives\n const primitive = vcInstance.cesiumObject as Cesium.Primitive\n // 1.104+ 版本废弃了 readyPromise\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n primitive?.readyPromise?.then(e => {\n const listener = getInstanceListener(vcInstance, 'readyPromise')\n listener && emit('readyPromise', e, commonState.$services.viewer, vcInstance.proxy as VcComponentPublicInstance)\n })\n ;(primitive as any)._vcParent = primitives\n const object = primitives && primitives.add(primitive)\n if (vcInstance.cesiumClass === 'ParticleSystem') {\n const intervalId = setInterval(() => {\n if (Cesium.defined(object._billboardCollection)) {\n object._billboardCollection._vcParent = object\n clearInterval(intervalId)\n }\n }, 500)\n }\n return Cesium.defined(object)\n }\n vcInstance.unmount = async () => {\n childCount.value = 0\n instances.value = []\n const primitives = commonState.$services.primitives\n const primitive = vcInstance.cesiumObject as Cesium.Primitive\n return primitives && primitives.remove(primitive)\n }\n\n const updateGeometryInstances = (instance, index) => {\n // Todo 同时改 geometry 的多个属性导致 bug\n // 如可视域分析创建 VcGeometryEllipsoidOutline 修改 radii 和 innerRadii 有问题\n instances.value.push(instance)\n if (index === childCount.value - 1) {\n const listener = getInstanceListener(vcInstance, 'update:geometryInstances')\n if (listener) {\n ctx.emit('update:geometryInstances', instances.value)\n } else {\n const primitive = vcInstance.cesiumObject as Cesium.Primitive\n ;(primitive as any).geometryInstances = index === 0 ? instance : instances.value\n }\n }\n return true\n }\n\n const removeGeometryInstances = instance => {\n const index = instances.value.indexOf(instance)\n instances.value.splice(index, 1)\n return true\n }\n\n const getServices = () => {\n return mergeDescriptors(commonState.getServices(), {\n get primitive() {\n return vcInstance.cesiumObject as Cesium.Primitive\n }\n })\n }\n\n // provide\n provide(vcKey, getServices())\n\n // expose public methods\n Object.assign(vcInstance.proxy, {\n // private but needed by VcGeometryInstance\n __updateGeometryInstances: updateGeometryInstances,\n __removeGeometryInstances: removeGeometryInstances,\n __childCount: childCount\n })\n\n return {\n transformProps: commonState.transformProps,\n transformProp: commonState.transformProp,\n unwatchFns: commonState.unwatchFns,\n setPropsWatcher: commonState.setPropsWatcher,\n $services: commonState.$services\n }\n}\n"],"names":[],"mappings":"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"}