UNPKG

casc-cesium

Version:

Vue 3.x components for CesiumJS.

1 lines 6.34 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/post-processes/post-process-stage-scan/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-09-16 09:28:13\n * @LastEditTime: 2022-03-24 22:38:56\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\post-processes\\post-process-stage-scan\\index.ts\n */\nimport type { ExtractPropTypes, PropType, WatchStopHandle } from 'vue'\nimport { useCommon } from 'casc-cesium-composables'\nimport type { VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcPosition, VcReadyObject } from 'casc-cesium-utils/types'\nimport { computed, defineComponent, getCurrentInstance, h, onUnmounted, ref, watch } from 'vue'\nimport VcPostProcessStage from '../post-process-stage'\nimport useRadar from './use-radar-scan'\nimport useCircle from './use-circle-scan'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nconst defaultOptions = {\n position: [0, 0],\n radius: 1500,\n interval: 3500,\n color: [0, 0, 0, 255]\n}\n\nexport type VcPostProcessStageScanOpts = {\n position?: VcPosition\n radius: number\n interval: number\n color: VcColor\n}\n\nexport const postProcessStageScanProps = {\n type: {\n type: String,\n default: 'radar' // radar, circle\n },\n options: Object as PropType<VcPostProcessStageScanOpts>\n}\n\nexport default defineComponent({\n name: 'VcPostProcessStageScan',\n props: postProcessStageScanProps,\n emits: commonEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcPostProcessStageScan'\n instance.cesiumEvents = []\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n const fragmentShader = ref('')\n const uniforms = ref<any>(null)\n const { $services } = commonState\n const useRadarState = useRadar($services)\n const useCircleState = useCircle($services)\n let unwatchFns: Array<WatchStopHandle> = []\n // computed\n const options = computed(() => {\n return Object.assign({}, defaultOptions, props.options)\n })\n // watch\n unwatchFns.push(\n watch(\n () => options,\n val => {\n if (instance.mounted) {\n ;(instance.proxy as VcComponentPublicInstance).reload()\n }\n },\n { deep: true }\n )\n )\n\n // methods\n instance.createCesiumObject = async () => {\n const opts = commonState.transformProps(options.value)\n let result\n if (props.type === 'radar') {\n result = useRadarState.webgl(opts)\n } else if (props.type === 'circle') {\n result = useCircleState.webgl(opts)\n }\n fragmentShader.value = result.shaderSource\n uniforms.value = result.uniforms\n return true\n }\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns = []\n })\n\n return () => {\n return h(VcPostProcessStage, {\n fragmentShader: fragmentShader.value,\n uniforms: uniforms.value\n })\n }\n }\n})\n\nexport type VcPostProcessStageScanProps = {\n /**\n * Specify the scan type, optional values are'radar','circle'.\n */\n type?: 'radar' | 'circle'\n /**\n * Specify optional parameters.\n */\n options?: VcPostProcessStageScanOpts\n /**\n * Triggers before the component is loaded.\n */\n onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n /**\n * Triggers when the component is successfully loaded.\n */\n onReady?: (readyObject: VcReadyObject) => void\n /**\n * Triggers when the component load failed.\n */\n onUnready?: (e: any) => void\n /**\n * Triggers when the component is destroyed.\n */\n onDestroyed?: (instance: VcComponentInternalInstance) => void\n}\n\nexport type VcPostProcessStageScanRef = VcComponentPublicInstance<VcPostProcessStageScanProps>\n"],"names":["VcPostProcessStage"],"mappings":"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"}