casc-cesium
Version:
Vue 3.x components for CesiumJS.
1 lines • 20.6 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/primitives/viewshed/index.ts"],"sourcesContent":["import { createCommentVNode, defineComponent, getCurrentInstance, onUnmounted, PropType, watch, WatchStopHandle } from 'vue'\nimport type { VcColor, VcComponentInternalInstance } from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { scene } from 'casc-cesium-utils/cesium-props'\nimport { kebabCase } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\nimport { Viewshed } from 'casc-cesium-shared'\nimport { makeColor } from 'casc-cesium-utils/cesium-helpers'\nimport fragmentShader from 'casc-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 default: fragmentShader\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 updateViewshed(newStartPosition, 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\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 updateViewshed(props.startPosition, props.endPosition)\n attachedViewshedStage = new PostProcessStage({\n fragmentShader: props.fragmentShader,\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 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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"}