casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 8.26 kB
Source Map (JSON)
{"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 'casc-cesium-utils/types'\nimport useCommon from '../use-common'\nimport { mergeDescriptors } from 'casc-cesium-utils/merge-descriptors'\nimport { provide, ref } from 'vue'\nimport { vcKey } from 'casc-cesium-utils/config'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { isArray } from 'casc-cesium-utils/util'\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 return new Cesium[vcInstance.cesiumClass](options)\n }\n\n vcInstance.mount = async () => {\n const primitives = vcInstance.cesiumClass.includes('Ground') ? commonState.$services.groundPrimitives : commonState.$services.primitives\n const primitive = vcInstance.cesiumObject as Cesium.Primitive\n primitive.readyPromise &&\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 = vcInstance.cesiumClass.includes('Ground') ? commonState.$services.groundPrimitives : 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 unwatchFns: commonState.unwatchFns,\n setPropsWatcher: commonState.setPropsWatcher\n }\n}\n"],"names":[],"mappings":"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"}