vue-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 21.3 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/primitives/viewshed/index.ts"],"sourcesContent":["import { createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, PropType, toRaw, watch, WatchStopHandle } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from '@vue-cesium/utils/types'\nimport { useCommon } from '@vue-cesium/composables'\nimport { scene } from '@vue-cesium/utils/cesium-props'\nimport { kebabCase } from '@vue-cesium/utils/util'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { Viewshed } from '@vue-cesium/shared'\nimport { makeCartesian3, makeColor } from '@vue-cesium/utils/cesium-helpers'\nimport fragmentShader from '@vue-cesium/shared/shaders/Viewshed'\n\nexport const viewshedProps = {\n ...scene,\n fovH: {\n type: Number,\n default: 90\n },\n fovV: {\n type: Number,\n default: 60\n },\n offsetHeight: {\n type: Number,\n default: 1.8\n },\n visibleColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: '#00ff00'\n },\n invisibleColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: '#ff0000'\n },\n showGridLine: {\n type: Boolean,\n default: true\n },\n lineColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: 'rgba(255,255,255,0.4)'\n },\n faceColor: {\n type: [Object, Array, String] as PropType<VcColor>,\n default: 'rgba(255,255,255,0.1)'\n },\n show: {\n type: Boolean,\n default: true\n },\n startPosition: {\n type: Object as PropType<Cesium.Cartesian3>\n },\n endPosition: {\n type: Object as PropType<Cesium.Cartesian3>\n },\n fragmentShader: {\n type: String\n },\n uniforms: Object\n}\n\nexport default defineComponent({\n name: 'VcViewshed',\n props: viewshedProps,\n emits: commonEmits,\n setup(props, ctx) {\n // state\n const instance = getCurrentInstance() as VcComponentInternalInstance\n instance.cesiumClass = 'VcViewshed'\n // state\n const commonState = useCommon(props, ctx, instance)\n if (commonState === void 0) {\n return\n }\n\n const unwatchFns: Array<WatchStopHandle> = []\n let attachedViewshedStage: Cesium.PostProcessStage\n\n unwatchFns.push(\n watch(\n [() => props.startPosition, () => props.endPosition],\n ([newStartPosition, newEndPosition]) => {\n if (!instance.mounted) {\n return\n }\n\n updateViewshed(makeCartesian3(toRaw(newStartPosition)), makeCartesian3(toRaw(newEndPosition)))\n },\n {\n deep: true\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.fovH,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.fovH = val\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.fovV,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.fovV = val\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.fovV,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.fovV = val\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.offsetHeight,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.offsetHeight = val\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.visibleColor,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.visibleColor = makeColor(val) as Cesium.Color\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.invisibleColor,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.invisibleColor = makeColor(val) as Cesium.Color\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.showGridLine,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.showGridLine = val\n }\n )\n )\n\n unwatchFns.push(\n watch(\n () => props.show,\n val => {\n if (!instance.mounted) {\n return\n }\n\n const viewshed = instance.cesiumObject as Viewshed\n viewshed.enabled = val\n }\n )\n )\n\n // life cycle\n onUnmounted(() => {\n unwatchFns.forEach(item => item())\n unwatchFns.length = 0\n })\n\n // methods\n instance.createCesiumObject = async () => {\n const viewer = commonState.$services.viewer\n const viewshed = new Viewshed(viewer.scene, {\n fovH: 120,\n fovV: 60,\n offsetHeight: 1.8,\n visibleColor: makeColor(props.visibleColor),\n invisibleColor: makeColor(props.invisibleColor),\n showGridLine: props.showGridLine\n })\n ;(viewshed._viewshedShadowMap as any).cascadesEnabled = false\n viewshed._viewshedShadowMap.softShadows = false\n viewshed._viewshedShadowMap.normalOffset = false\n ;(viewshed._viewshedShadowMap as any).fromLightSource = false\n viewshed._viewshedShadowMap.enabled = false\n viewshed.fovH = Cesium.Math.toRadians(props.fovH)\n viewshed.fovV = Cesium.Math.toRadians(props.fovV)\n viewshed.offsetHeight = props.offsetHeight\n viewshed.showGridLine = props.showGridLine\n viewshed.enabled = props.show\n viewshed.lineColor = makeColor(props.lineColor) as Cesium.Color\n viewshed.faceColor = makeColor(props.faceColor) as Cesium.Color\n return viewshed\n }\n\n instance.mount = async () => {\n const viewer = commonState.$services.viewer\n const viewshed = instance.cesiumObject as Viewshed\n const { Cartesian4, PostProcessStage, Cartesian2 } = Cesium\n\n const webgl2 = commonState.$services.viewer.scene.context?.webgl2\n let shaderSourceText = fragmentShader\n if (!webgl2) {\n shaderSourceText = shaderSourceText.replace('in vec2 v_textureCoordinates;', 'varying vec2 v_textureCoordinates;')\n shaderSourceText = shaderSourceText.replace(/texture\\(/g, 'texture2D(')\n shaderSourceText = shaderSourceText.replace(/out_FragColor/g, 'gl_FragColor')\n }\n\n updateViewshed(makeCartesian3(toRaw(props.startPosition)), makeCartesian3(toRaw(props.endPosition)))\n attachedViewshedStage = new PostProcessStage({\n fragmentShader: props.fragmentShader || shaderSourceText,\n uniforms: props.uniforms || {\n u_color1: function () {\n return viewshed.visibleColor\n },\n u_color2: function () {\n return viewshed.invisibleColor\n },\n u_isShed: function () {\n return viewshed.shadowMap.enabled\n },\n u_radius: function () {\n return viewshed.lightCamera.frustum.far\n },\n shadowMap_depthTexture: function () {\n return viewshed.shadowMap.enabled ? viewshed.shadowMap._shadowMapTexture : (viewer.scene as any).context.defaultTexture\n },\n shadowMap_matrix: function () {\n return viewshed.shadowMap._shadowMapMatrix\n },\n shadowMap_cascadeSplits: function () {\n return (viewshed.shadowMap as any)._cascadeSplits\n },\n shadowMap_cascadeMatrices: function () {\n return (viewshed.shadowMap as any)._cascadeMatrices\n },\n shadowMap_lightDirectionEC: function () {\n return (viewshed.shadowMap as any)._lightDirectionEC\n },\n shadowMap_lightPositionEC: function () {\n return viewshed.shadowMap._lightPositionEC\n },\n shadowMap_cascadeDistances: function () {\n return (viewshed.shadowMap as any)._cascadeDistances\n },\n shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness: function () {\n const e = viewshed.shadowMap._pointBias\n return Cartesian4.fromElements(e.normalOffsetScale, viewshed.shadowMap._distance, viewshed.shadowMap.maximumDistance, 0, new Cartesian4())\n },\n shadowMap_texelSizeDepthBiasAndNormalShadingSmooth: function () {\n const e = viewshed.shadowMap._pointBias\n const t = new Cartesian2()\n t.x = 1 / viewshed.shadowMap._textureSize.x\n t.y = 1 / viewshed.shadowMap._textureSize.y\n return Cartesian4.fromElements(t.x, t.y, e.depthBias, e.normalShadingSmooth, new Cartesian4())\n },\n czzj: function () {\n return (viewshed.lightCamera.frustum as Cesium.PerspectiveFrustum).fov\n },\n spzj: function () {\n return (viewshed.lightCamera.frustum as Cesium.PerspectiveFrustum).fov\n },\n mixNum: function () {\n return 0.5\n },\n shadowMap_lightUp: function () {\n return viewshed.lightCamera.up\n },\n shadowMap_lightDir: function () {\n return viewshed.lightCamera.direction\n },\n shadowMap_lightRight: function () {\n return viewshed.lightCamera.right\n }\n }\n })\n\n viewer.scene.postProcessStages.add(attachedViewshedStage)\n const primitives = commonState.$services.primitives\n return primitives && primitives.add(viewshed)\n }\n\n instance.unmount = async () => {\n const viewer = commonState.$services.viewer\n attachedViewshedStage && viewer.scene.postProcessStages.remove(attachedViewshedStage)\n\n const primitives = commonState.$services.primitives\n const viewshed = instance.cesiumObject as Viewshed\n return primitives && primitives.remove(viewshed)\n }\n\n const updateViewshed = (startPosition, endPosition) => {\n const viewshed = instance.cesiumObject as Viewshed\n\n const { Cartesian3 } = Cesium\n let diffrence = Cartesian3.subtract(endPosition, startPosition, new Cartesian3())\n const magnitudeSquared = Cartesian3.magnitudeSquared(diffrence)\n const distance = Cartesian3.distance(endPosition, startPosition)\n\n if (magnitudeSquared < 0.01 || viewshed.frustum.near > distance) {\n viewshed.enabled = false\n } else {\n viewshed.enabled = true\n diffrence = Cartesian3.normalize(diffrence, diffrence)\n const up = Cartesian3.normalize(endPosition, new Cartesian3())\n\n viewshed.setView({\n destination: startPosition,\n orientation: {\n direction: diffrence,\n up: up\n }\n })\n viewshed.frustum.far = Math.max(distance, 1.1)\n }\n }\n\n return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n }\n})\n"],"names":[],"mappings":"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"}