@vesium/special 1.0.1-beta.27 → 1.0.1-beta.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../shared/src/is.ts","../../shared/src/cesiumUtils.ts","../../shared/src/material.ts","../../shared/src/property.ts","../material/ellipseRadarScan/source.glsl?raw","../material/ellipseRadarScan/material.ts","../material/ellipseRadarScan/property.ts","../material/radarScan/source.glsl?raw","../material/radarScan/material.ts","../material/radarScan/property.ts","../material/waterRipple/material.ts","../material/waterRipple/property.ts"],"sourcesContent":["import type { AnyFn } from './types';\n\nconst toString = Object.prototype.toString;\n\nexport function isDef<T = any>(val?: T): val is T {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isFunction<T extends AnyFn>(val: any): val is T {\n return typeof val === 'function';\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return toString.call(val) === '[object Object]';\n}\n\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && toString.call(val) === '[object Window]';\n}\n\nexport function isPromise<T extends Promise<any>>(val: any): val is T {\n return !!val && (typeof val === 'object' || typeof val === 'function') && typeof (val as any).then === 'function';\n}\n\nexport function isElement<T extends Element>(val: any): val is T {\n return !!(val && val.nodeName && val.nodeType === 1);\n}\n\nexport const isArray = Array.isArray;\n\nexport function isBase64(val: string): boolean {\n // eslint-disable-next-line regexp/no-unused-capturing-group, regexp/no-super-linear-backtracking\n const reg = /^\\s*data:([a-z]+\\/[\\d+.a-z-]+(;[a-z-]+=[\\da-z-]+)?)?(;base64)?,([\\s\\w!$%&'()*+,./:;=?@~-]*?)\\s*$/i;\n return reg.test(val);\n}\n\nexport function assertError(condition: boolean, error: any) {\n if (condition) {\n throw new Error(error);\n }\n}\n","import type { MaybeProperty } from './property';\nimport { defined } from 'cesium';\nimport { isFunction } from './is';\n\n/**\n * Determines if two Cesium objects are equal.\n *\n * This function not only judges whether the instances are equal,\n * but also judges the equals method in the example.\n *\n * @param left The first Cesium object\n * @param right The second Cesium object\n * @returns Returns true if the two Cesium objects are equal, otherwise false\n */\nexport function cesiumEquals(left: any, right: any): boolean {\n return left === right || (isFunction(left?.equals) && left.equals(right)) || (isFunction(right?.equals) && right.equals(left));\n}\n\n/**\n * Determines if the Cesium property is a constant.\n *\n * @param value Cesium property\n */\nexport function isCesiumConstant(value: MaybeProperty): boolean {\n return !defined(value) || !!value.isConstant;\n}\n","import type { Event, JulianDate, MaterialProperty, TextureMagnificationFilter, TextureMinificationFilter } from 'cesium';\n\nimport { Material } from 'cesium';\n\n/**\n * Cesium.Material.fabric parameters\n */\nexport interface CesiumMaterialFabricOptions<U> {\n /**\n * Used to declare what material the fabric object will ultimately generate. If it's an official built-in one, use the official built-in one directly; otherwise, create a custom material and cache it.\n */\n type: string;\n /**\n * Can nest another level of child fabric to form a composite material\n */\n materials?: Material;\n /**\n * glsl code\n */\n source?: string;\n components?: {\n diffuse?: string;\n alpha?: string;\n };\n /**\n * Pass variables to glsl code\n */\n uniforms?: U & Record<string, any>;\n}\n\n/**\n * Cesium.Material parameters\n */\nexport interface CesiumMaterialConstructorOptions<U> {\n /**\n * Strict mode\n */\n strict?: boolean;\n /**\n * translucent\n */\n translucent?: boolean | ((...params: any[]) => any);\n /**\n * Minification filter\n */\n minificationFilter?: TextureMinificationFilter;\n /**\n * Magnification filter\n */\n magnificationFilter?: TextureMagnificationFilter;\n /**\n * Matrix configuration\n */\n fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.Material`\n */\nexport class CesiumMaterial<U> extends Material {\n constructor(options: CesiumMaterialConstructorOptions<U>) {\n super(options);\n }\n\n /**\n * Matrix configuration\n */\n declare fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.MaterialProperty`\n */\nexport interface CesiumMaterialProperty<V> extends MaterialProperty {\n get isConstant(): boolean;\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void>;\n\n getType: (time: JulianDate) => string;\n\n getValue: (time: JulianDate, result?: V) => V;\n\n equals: (other?: any) => boolean;\n}\n\n/**\n * Get material from cache, alias of `Material._materialCache.getMaterial`\n */\nexport function getMaterialCache<T extends Material = CesiumMaterial<any>>(type: string): T | undefined {\n return (Material as any)._materialCache.getMaterial(type);\n}\n\n/**\n * Add material to Cesium's material cache, alias of `Material._materialCache.addMaterial`\n */\nexport function addMaterialCache(type: string, material: CesiumMaterialConstructorOptions<any>): void {\n return (Material as any)._materialCache.addMaterial(type, material);\n}\n","import type { Event, JulianDate, Property } from 'cesium';\nimport { CallbackProperty, ConstantProperty, defined } from 'cesium';\nimport { isFunction } from './is';\n\nexport type MaybeProperty<T = any> = T | { getValue: (time?: JulianDate) => T };\n\nexport type MaybePropertyOrGetter<T = any> = MaybeProperty<T> | (() => T);\n\n/**\n * Is Cesium.Property\n * @param value - The target object\n */\nexport function isProperty(value: any): value is Property {\n return value && isFunction(value.getValue);\n}\n\n/**\n * Converts a value that may be a Property into its target value, @see {toProperty} for the reverse operation\n * ```typescript\n * toPropertyValue('val') //=> 'val'\n * toPropertyValue(new ConstantProperty('val')) //=> 'val'\n * toPropertyValue(new CallbackProperty(()=>'val')) //=> 'val'\n * ```\n *\n * @param value - The value to convert\n */\nexport function toPropertyValue<T = unknown>(value: MaybeProperty<T>, time?: JulianDate): T {\n return isProperty(value) ? value.getValue(time as any) : value;\n}\n\nexport type PropertyCallback<T = any> = (time: JulianDate, result?: T) => T;\n\n/**\n * Converts a value that may be a Property into a Property object, @see {toPropertyValue} for the reverse operation\n *\n * @param value - The property value or getter to convert, can be undefined or null\n * @param isConstant - The second parameter for converting to CallbackProperty\n * @returns Returns the converted Property object, if value is undefined or null, returns undefined\n */\nexport function toProperty<T>(value?: MaybePropertyOrGetter<T>, isConstant = false): Property {\n return isProperty(value)\n ? value\n : isFunction(value)\n ? (new CallbackProperty(value, isConstant) as any)\n : new ConstantProperty(value);\n}\n\n/**\n * Create a Cesium property key\n *\n * @param scope The host object\n * @param field The property name\n * @param maybeProperty Optional property or getter\n * @param readonly Whether the property is read-only\n */\nexport function createPropertyField<T>(\n scope: any,\n field: string,\n maybeProperty?: MaybePropertyOrGetter<T>,\n readonly?: boolean,\n) {\n let removeOwnerListener: VoidFunction | undefined;\n // 自身内部变化时也触发载体的`definitionChanged`\n // Trigger the carrier's `definitionChanged` when its own internal state changes\n const ownerBinding = (value: any) => {\n removeOwnerListener?.();\n if (defined(value?.definitionChanged)) {\n removeOwnerListener = value?.definitionChanged?.addEventListener(() => {\n scope.definitionChanged.raiseEvent(scope, field, value, value);\n });\n }\n };\n\n const privateField = `_${field}`;\n const property = toProperty(maybeProperty);\n scope[privateField] = property;\n ownerBinding(property);\n\n if (readonly) {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n });\n }\n else {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n set(value) {\n const previous = scope[privateField];\n if (scope[privateField] !== value) {\n scope[privateField] = value;\n ownerBinding(value);\n if (defined(scope.definitionChanged)) {\n scope.definitionChanged.raiseEvent(scope, field, value, previous);\n }\n }\n },\n });\n }\n}\n\nexport interface CreateCesiumAttributeOptions {\n readonly?: boolean;\n toProperty?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n\n shallowClone?: boolean;\n}\n\nexport function createCesiumAttribute<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumAttributeOptions = {},\n) {\n const allowToProperty = !!options.toProperty;\n const shallowClone = !!options.shallowClone;\n const changedEventKey = options.changedEventKey || 'definitionChanged';\n const changedEvent = Reflect.get(scope, changedEventKey) as Event;\n const privateKey = `_${String(key)}`;\n const attribute = allowToProperty ? toProperty(value) : value;\n Reflect.set(scope, privateKey, attribute);\n\n const obj: any = {\n get() {\n const value = Reflect.get(scope, privateKey);\n if (shallowClone) {\n return Array.isArray(value) ? [...value] : { ...value };\n }\n else {\n return value;\n }\n },\n };\n\n let previousListener: VoidFunction | undefined;\n\n const serial = (property: Property, previous?: any) => {\n previousListener?.();\n previousListener = property?.definitionChanged?.addEventListener(() => {\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, property, previous);\n });\n };\n\n if (!options.readonly) {\n // 初始化是父子级绑定监听\n if (allowToProperty && isProperty(value)) {\n serial(value);\n }\n\n obj.set = (value: any) => {\n if (allowToProperty && !isProperty(value)) {\n throw new Error(`The value of ${String(key)} must be a Cesium.Property object`);\n }\n const previous = Reflect.get(scope, privateKey);\n\n if (previous !== value) {\n Reflect.set(scope, privateKey, value);\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, value, previous);\n if (allowToProperty) {\n // 重新绑定监听\n serial(value);\n }\n }\n };\n }\n\n Object.defineProperty(scope, key, obj);\n}\n\nexport interface CreateCesiumPropertyOptions {\n readonly?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n}\nexport function createCesiumProperty<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumPropertyOptions = {},\n) {\n return createCesiumAttribute(scope, key, value, { ...options, toProperty: true });\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n\\n float dis = distance(st, vec2(0.5, 0.5));\\n\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n\\n if(dis > 0.47) {\\n float perDis = 0.5 / 1.0;\\n float disNum;\\n float bl = .0;\\n for(int i = 0; i <= 9; i++) {\\n if(float(i) <= 1.0) {\\n disNum = perDis * float(i) - dis;\\n if(disNum > 0.0) {\\n if(disNum < perDis) {\\n bl = 1.0 - disNum / perDis;\\n } else if(disNum - perDis < perDis) {\\n bl = 1.0 - abs(1.0 - disNum / perDis);\\n }\\n float alpha = 1.0 - (0.5 - dis) / 0.03;\\n if(material.alpha < alpha) {\\n material.alpha = alpha;\\n }\\n }\\n }\\n }\\n }\\n return material;\\n}\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { EllipseRadarScanMaterialSource } from './source';\n\nexport const EllipseRadarScanMaterialType = 'EllipseRadarScan';\n\nexport interface EllipseRadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(EllipseRadarScanMaterialType, {\n fabric: {\n type: EllipseRadarScanMaterialType,\n source: EllipseRadarScanMaterialSource,\n uniforms: { ...EllipseRadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { EllipseRadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { EllipseRadarScanMaterialDefaultUniforms, EllipseRadarScanMaterialType } from './material';\n\n/**\n * `EllipseRadarScanMaterialProperty`构建参数\n */\nexport interface EllipseRadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {\n constructor(options: EllipseRadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return EllipseRadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms {\n const uniforms = EllipseRadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: EllipseRadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\n\\n\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n return material;\\n}\\ncircular\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { RadarScanMaterialSource } from './source';\n\nexport const RadarScanMaterialType = 'RadarScan';\n\nexport interface RadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(RadarScanMaterialType, {\n fabric: {\n type: RadarScanMaterialType,\n source: RadarScanMaterialSource,\n uniforms: { ...RadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { RadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { RadarScanMaterialDefaultUniforms, RadarScanMaterialType } from './material';\n\n/**\n * `RadarScanMaterialProperty`构建参数\n */\nexport interface RadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {\n constructor(options: RadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return RadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms {\n const uniforms = RadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: RadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","import { addMaterialCache, getMaterialCache } from '@vesium/shared';\nimport { buildModuleUrl, Color, Material } from 'cesium';\n\nexport interface WaterRippleMaterialUniforms {\n baseWaterColor: Color;\n blendColor: Color;\n specularMap: string;\n normalMap: string;\n frequency: number;\n animationSpeed: number;\n amplitude: number;\n specularIntensity: number;\n fadeFactor: number;\n}\n\nexport const WaterRippleMaterialType = 'WaterRipple';\n\nexport const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms = {\n baseWaterColor: new Color(0.2, 0.3, 0.6, 1),\n blendColor: new Color(0, 1, 0.699, 1),\n specularMap: Material.DefaultImageId,\n normalMap: buildModuleUrl('Assets/Textures/waterNormals.jpg'),\n frequency: 10000,\n animationSpeed: 0.01,\n amplitude: 1,\n specularIntensity: 0.5,\n fadeFactor: 1,\n};\n\nconst WaterRippleMaterial = getMaterialCache('Water')!;\n\n/**\n * 水波纹材质\n */\naddMaterialCache(WaterRippleMaterialType, {\n fabric: {\n type: WaterRippleMaterialType,\n source: WaterRippleMaterial.fabric.source,\n uniforms: { ...WaterRippleMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.baseWaterColor.alpha < 1 || uniforms.blendColor.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { WaterRippleMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { WaterRippleMaterialDefaultUniforms, WaterRippleMaterialType } from './material';\n\n/**\n * `WaterRippleMaterialProperty`构建参数\n */\nexport interface WaterRippleMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default new Color(0.2, 0.3, 0.6, 1)\n */\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n blendColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 镜面反射贴图\n * @default Material.DefaultImageId\n */\n specularMap?: MaybeProperty<string | undefined>;\n\n /**\n * 法线贴图\n * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')\n */\n normalMap?: MaybeProperty<string | undefined>;\n\n /**\n * 频率\n * @default 10000\n */\n frequency?: MaybeProperty<number | undefined>;\n\n /**\n * 动画速度\n * @default 0.01\n */\n animationSpeed?: MaybeProperty<number | undefined>;\n\n /**\n * 波幅\n * @default 1\n */\n amplitude?: MaybeProperty<number | undefined>;\n\n /**\n * 镜面反射强度\n * @default 0.5\n */\n specularIntensity?: MaybeProperty<number | undefined>;\n\n /**\n * 衰落因子\n * @default 1\n */\n fadeFactor?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {\n constructor(options: WaterRippleMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'baseWaterColor', options.baseWaterColor);\n createPropertyField(this, 'blendColor', options.blendColor);\n createPropertyField(this, 'specularMap', options.specularMap);\n createPropertyField(this, 'normalMap', options.normalMap);\n createPropertyField(this, 'frequency', options.frequency);\n createPropertyField(this, 'animationSpeed', options.animationSpeed);\n createPropertyField(this, 'amplitude', options.amplitude);\n createPropertyField(this, 'specularIntensity', options.specularIntensity);\n createPropertyField(this, 'fadeFactor', options.fadeFactor);\n }\n\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n blendColor?: MaybeProperty<Color | undefined>;\n\n specularMap?: MaybeProperty<string | undefined>;\n\n normalMap?: MaybeProperty<string | undefined>;\n\n frequency?: MaybeProperty<number | undefined>;\n\n animationSpeed?: MaybeProperty<number | undefined>;\n\n amplitude?: MaybeProperty<number | undefined>;\n\n specularIntensity?: MaybeProperty<number | undefined>;\n\n fadeFactor?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.baseWaterColor)\n && isCesiumConstant(this.blendColor)\n && isCesiumConstant(this.specularMap)\n && isCesiumConstant(this.normalMap)\n && isCesiumConstant(this.frequency)\n && isCesiumConstant(this.animationSpeed)\n && isCesiumConstant(this.amplitude)\n && isCesiumConstant(this.specularIntensity)\n && isCesiumConstant(this.fadeFactor)\n );\n }\n\n getType(_time?: JulianDate): string {\n return WaterRippleMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms {\n const uniforms = WaterRippleMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n baseWaterColor: toPropertyValue(this.baseWaterColor, time) ?? uniforms.baseWaterColor,\n blendColor: toPropertyValue(this.blendColor, time) ?? uniforms.blendColor,\n specularMap: toPropertyValue(this.specularMap, time) ?? uniforms.specularMap,\n normalMap: toPropertyValue(this.normalMap, time) ?? uniforms.normalMap,\n frequency: toPropertyValue(this.frequency, time) ?? uniforms.frequency,\n animationSpeed: toPropertyValue(this.animationSpeed, time) ?? uniforms.animationSpeed,\n amplitude: toPropertyValue(this.amplitude, time) ?? uniforms.amplitude,\n specularIntensity: toPropertyValue(this.specularIntensity, time) ?? uniforms.specularIntensity,\n fadeFactor: toPropertyValue(this.fadeFactor, time) ?? uniforms.fadeFactor,\n });\n return data;\n }\n\n equals(other?: WaterRippleMaterialProperty): boolean {\n return (\n cesiumEquals(this.baseWaterColor, other?.baseWaterColor)\n && cesiumEquals(this.blendColor, other?.blendColor)\n && cesiumEquals(this.specularMap, other?.specularMap)\n && cesiumEquals(this.normalMap, other?.normalMap)\n && cesiumEquals(this.frequency, other?.frequency)\n && cesiumEquals(this.animationSpeed, other?.animationSpeed)\n && cesiumEquals(this.amplitude, other?.amplitude)\n && cesiumEquals(this.specularIntensity, other?.specularIntensity)\n && cesiumEquals(this.fadeFactor, other?.fadeFactor)\n );\n }\n}\n"],"names":["defined","Material","CallbackProperty","ConstantProperty","Color","Event","buildModuleUrl"],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,173 +0,0 @@
1
- import { CesiumMaterialProperty } from '@vesium/shared';
2
- import { Color } from 'cesium';
3
- import { Event as Event_2 } from 'cesium';
4
- import { JulianDate } from 'cesium';
5
- import { MaybeProperty } from '@vesium/shared';
6
-
7
- export declare const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms;
8
-
9
- /**
10
- * 水波纹
11
- */
12
- export declare class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {
13
- constructor(options?: EllipseRadarScanMaterialPropertyConstructorOptions);
14
- color?: MaybeProperty<Color | undefined>;
15
- speed?: MaybeProperty<number | undefined>;
16
- get isConstant(): boolean;
17
- getType(_time?: JulianDate): string;
18
- get definitionChanged(): Event_2<(scope: this, field: string, value: any, previous: any) => void>;
19
- getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms;
20
- equals(other?: EllipseRadarScanMaterialProperty): boolean;
21
- }
22
-
23
- /**
24
- * `EllipseRadarScanMaterialProperty`构建参数
25
- */
26
- export declare interface EllipseRadarScanMaterialPropertyConstructorOptions {
27
- /**
28
- * 基础水色
29
- * @default Color.YELLOW
30
- */
31
- color?: MaybeProperty<Color | undefined>;
32
- /**
33
- * 混合色
34
- * @default new Color(0, 1, 0.699, 1)
35
- */
36
- speed?: MaybeProperty<number | undefined>;
37
- }
38
-
39
- export declare const EllipseRadarScanMaterialType = "EllipseRadarScan";
40
-
41
- export declare interface EllipseRadarScanMaterialUniforms {
42
- color: Color;
43
- speed: number;
44
- }
45
-
46
- export declare const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms;
47
-
48
- /**
49
- * 水波纹
50
- */
51
- export declare class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {
52
- constructor(options?: RadarScanMaterialPropertyConstructorOptions);
53
- color?: MaybeProperty<Color | undefined>;
54
- speed?: MaybeProperty<number | undefined>;
55
- get isConstant(): boolean;
56
- getType(_time?: JulianDate): string;
57
- get definitionChanged(): Event_2<(scope: this, field: string, value: any, previous: any) => void>;
58
- getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms;
59
- equals(other?: RadarScanMaterialProperty): boolean;
60
- }
61
-
62
- /**
63
- * `RadarScanMaterialProperty`构建参数
64
- */
65
- export declare interface RadarScanMaterialPropertyConstructorOptions {
66
- /**
67
- * 基础水色
68
- * @default Color.YELLOW
69
- */
70
- color?: MaybeProperty<Color | undefined>;
71
- /**
72
- * 混合色
73
- * @default new Color(0, 1, 0.699, 1)
74
- */
75
- speed?: MaybeProperty<number | undefined>;
76
- }
77
-
78
- export declare const RadarScanMaterialType = "RadarScan";
79
-
80
- export declare interface RadarScanMaterialUniforms {
81
- color: Color;
82
- speed: number;
83
- }
84
-
85
- export declare const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms;
86
-
87
- /**
88
- * 水波纹
89
- */
90
- export declare class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {
91
- constructor(options?: WaterRippleMaterialPropertyConstructorOptions);
92
- baseWaterColor?: MaybeProperty<Color | undefined>;
93
- blendColor?: MaybeProperty<Color | undefined>;
94
- specularMap?: MaybeProperty<string | undefined>;
95
- normalMap?: MaybeProperty<string | undefined>;
96
- frequency?: MaybeProperty<number | undefined>;
97
- animationSpeed?: MaybeProperty<number | undefined>;
98
- amplitude?: MaybeProperty<number | undefined>;
99
- specularIntensity?: MaybeProperty<number | undefined>;
100
- fadeFactor?: MaybeProperty<number | undefined>;
101
- get isConstant(): boolean;
102
- getType(_time?: JulianDate): string;
103
- get definitionChanged(): Event_2<(scope: this, field: string, value: any, previous: any) => void>;
104
- getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms;
105
- equals(other?: WaterRippleMaterialProperty): boolean;
106
- }
107
-
108
- /**
109
- * `WaterRippleMaterialProperty`构建参数
110
- */
111
- export declare interface WaterRippleMaterialPropertyConstructorOptions {
112
- /**
113
- * 基础水色
114
- * @default new Color(0.2, 0.3, 0.6, 1)
115
- */
116
- baseWaterColor?: MaybeProperty<Color | undefined>;
117
- /**
118
- * 混合色
119
- * @default new Color(0, 1, 0.699, 1)
120
- */
121
- blendColor?: MaybeProperty<Color | undefined>;
122
- /**
123
- * 镜面反射贴图
124
- * @default Material.DefaultImageId
125
- */
126
- specularMap?: MaybeProperty<string | undefined>;
127
- /**
128
- * 法线贴图
129
- * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')
130
- */
131
- normalMap?: MaybeProperty<string | undefined>;
132
- /**
133
- * 频率
134
- * @default 10000
135
- */
136
- frequency?: MaybeProperty<number | undefined>;
137
- /**
138
- * 动画速度
139
- * @default 0.01
140
- */
141
- animationSpeed?: MaybeProperty<number | undefined>;
142
- /**
143
- * 波幅
144
- * @default 1
145
- */
146
- amplitude?: MaybeProperty<number | undefined>;
147
- /**
148
- * 镜面反射强度
149
- * @default 0.5
150
- */
151
- specularIntensity?: MaybeProperty<number | undefined>;
152
- /**
153
- * 衰落因子
154
- * @default 1
155
- */
156
- fadeFactor?: MaybeProperty<number | undefined>;
157
- }
158
-
159
- export declare const WaterRippleMaterialType = "WaterRipple";
160
-
161
- export declare interface WaterRippleMaterialUniforms {
162
- baseWaterColor: Color;
163
- blendColor: Color;
164
- specularMap: string;
165
- normalMap: string;
166
- frequency: number;
167
- animationSpeed: number;
168
- amplitude: number;
169
- specularIntensity: number;
170
- fadeFactor: number;
171
- }
172
-
173
- export { }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.iife.js","sources":["../../shared/src/is.ts","../../shared/src/cesiumUtils.ts","../../shared/src/material.ts","../../shared/src/property.ts","../material/ellipseRadarScan/source.glsl?raw","../material/ellipseRadarScan/material.ts","../material/ellipseRadarScan/property.ts","../material/radarScan/source.glsl?raw","../material/radarScan/material.ts","../material/radarScan/property.ts","../material/waterRipple/material.ts","../material/waterRipple/property.ts"],"sourcesContent":["import type { AnyFn } from './types';\n\nconst toString = Object.prototype.toString;\n\nexport function isDef<T = any>(val?: T): val is T {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isFunction<T extends AnyFn>(val: any): val is T {\n return typeof val === 'function';\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return toString.call(val) === '[object Object]';\n}\n\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && toString.call(val) === '[object Window]';\n}\n\nexport function isPromise<T extends Promise<any>>(val: any): val is T {\n return !!val && (typeof val === 'object' || typeof val === 'function') && typeof (val as any).then === 'function';\n}\n\nexport function isElement<T extends Element>(val: any): val is T {\n return !!(val && val.nodeName && val.nodeType === 1);\n}\n\nexport const isArray = Array.isArray;\n\nexport function isBase64(val: string): boolean {\n // eslint-disable-next-line regexp/no-unused-capturing-group, regexp/no-super-linear-backtracking\n const reg = /^\\s*data:([a-z]+\\/[\\d+.a-z-]+(;[a-z-]+=[\\da-z-]+)?)?(;base64)?,([\\s\\w!$%&'()*+,./:;=?@~-]*?)\\s*$/i;\n return reg.test(val);\n}\n\nexport function assertError(condition: boolean, error: any) {\n if (condition) {\n throw new Error(error);\n }\n}\n","import type { MaybeProperty } from './property';\nimport { defined } from 'cesium';\nimport { isFunction } from './is';\n\n/**\n * Determines if two Cesium objects are equal.\n *\n * This function not only judges whether the instances are equal,\n * but also judges the equals method in the example.\n *\n * @param left The first Cesium object\n * @param right The second Cesium object\n * @returns Returns true if the two Cesium objects are equal, otherwise false\n */\nexport function cesiumEquals(left: any, right: any): boolean {\n return left === right || (isFunction(left?.equals) && left.equals(right)) || (isFunction(right?.equals) && right.equals(left));\n}\n\n/**\n * Determines if the Cesium property is a constant.\n *\n * @param value Cesium property\n */\nexport function isCesiumConstant(value: MaybeProperty): boolean {\n return !defined(value) || !!value.isConstant;\n}\n","import type { Event, JulianDate, MaterialProperty, TextureMagnificationFilter, TextureMinificationFilter } from 'cesium';\n\nimport { Material } from 'cesium';\n\n/**\n * Cesium.Material.fabric parameters\n */\nexport interface CesiumMaterialFabricOptions<U> {\n /**\n * Used to declare what material the fabric object will ultimately generate. If it's an official built-in one, use the official built-in one directly; otherwise, create a custom material and cache it.\n */\n type: string;\n /**\n * Can nest another level of child fabric to form a composite material\n */\n materials?: Material;\n /**\n * glsl code\n */\n source?: string;\n components?: {\n diffuse?: string;\n alpha?: string;\n };\n /**\n * Pass variables to glsl code\n */\n uniforms?: U & Record<string, any>;\n}\n\n/**\n * Cesium.Material parameters\n */\nexport interface CesiumMaterialConstructorOptions<U> {\n /**\n * Strict mode\n */\n strict?: boolean;\n /**\n * translucent\n */\n translucent?: boolean | ((...params: any[]) => any);\n /**\n * Minification filter\n */\n minificationFilter?: TextureMinificationFilter;\n /**\n * Magnification filter\n */\n magnificationFilter?: TextureMagnificationFilter;\n /**\n * Matrix configuration\n */\n fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.Material`\n */\nexport class CesiumMaterial<U> extends Material {\n constructor(options: CesiumMaterialConstructorOptions<U>) {\n super(options);\n }\n\n /**\n * Matrix configuration\n */\n declare fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.MaterialProperty`\n */\nexport interface CesiumMaterialProperty<V> extends MaterialProperty {\n get isConstant(): boolean;\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void>;\n\n getType: (time: JulianDate) => string;\n\n getValue: (time: JulianDate, result?: V) => V;\n\n equals: (other?: any) => boolean;\n}\n\n/**\n * Get material from cache, alias of `Material._materialCache.getMaterial`\n */\nexport function getMaterialCache<T extends Material = CesiumMaterial<any>>(type: string): T | undefined {\n return (Material as any)._materialCache.getMaterial(type);\n}\n\n/**\n * Add material to Cesium's material cache, alias of `Material._materialCache.addMaterial`\n */\nexport function addMaterialCache(type: string, material: CesiumMaterialConstructorOptions<any>): void {\n return (Material as any)._materialCache.addMaterial(type, material);\n}\n","import type { Event, JulianDate, Property } from 'cesium';\nimport { CallbackProperty, ConstantProperty, defined } from 'cesium';\nimport { isFunction } from './is';\n\nexport type MaybeProperty<T = any> = T | { getValue: (time?: JulianDate) => T };\n\nexport type MaybePropertyOrGetter<T = any> = MaybeProperty<T> | (() => T);\n\n/**\n * Is Cesium.Property\n * @param value - The target object\n */\nexport function isProperty(value: any): value is Property {\n return value && isFunction(value.getValue);\n}\n\n/**\n * Converts a value that may be a Property into its target value, @see {toProperty} for the reverse operation\n * ```typescript\n * toPropertyValue('val') //=> 'val'\n * toPropertyValue(new ConstantProperty('val')) //=> 'val'\n * toPropertyValue(new CallbackProperty(()=>'val')) //=> 'val'\n * ```\n *\n * @param value - The value to convert\n */\nexport function toPropertyValue<T = unknown>(value: MaybeProperty<T>, time?: JulianDate): T {\n return isProperty(value) ? value.getValue(time as any) : value;\n}\n\nexport type PropertyCallback<T = any> = (time: JulianDate, result?: T) => T;\n\n/**\n * Converts a value that may be a Property into a Property object, @see {toPropertyValue} for the reverse operation\n *\n * @param value - The property value or getter to convert, can be undefined or null\n * @param isConstant - The second parameter for converting to CallbackProperty\n * @returns Returns the converted Property object, if value is undefined or null, returns undefined\n */\nexport function toProperty<T>(value?: MaybePropertyOrGetter<T>, isConstant = false): Property {\n return isProperty(value)\n ? value\n : isFunction(value)\n ? (new CallbackProperty(value, isConstant) as any)\n : new ConstantProperty(value);\n}\n\n/**\n * Create a Cesium property key\n *\n * @param scope The host object\n * @param field The property name\n * @param maybeProperty Optional property or getter\n * @param readonly Whether the property is read-only\n */\nexport function createPropertyField<T>(\n scope: any,\n field: string,\n maybeProperty?: MaybePropertyOrGetter<T>,\n readonly?: boolean,\n) {\n let removeOwnerListener: VoidFunction | undefined;\n // 自身内部变化时也触发载体的`definitionChanged`\n // Trigger the carrier's `definitionChanged` when its own internal state changes\n const ownerBinding = (value: any) => {\n removeOwnerListener?.();\n if (defined(value?.definitionChanged)) {\n removeOwnerListener = value?.definitionChanged?.addEventListener(() => {\n scope.definitionChanged.raiseEvent(scope, field, value, value);\n });\n }\n };\n\n const privateField = `_${field}`;\n const property = toProperty(maybeProperty);\n scope[privateField] = property;\n ownerBinding(property);\n\n if (readonly) {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n });\n }\n else {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n set(value) {\n const previous = scope[privateField];\n if (scope[privateField] !== value) {\n scope[privateField] = value;\n ownerBinding(value);\n if (defined(scope.definitionChanged)) {\n scope.definitionChanged.raiseEvent(scope, field, value, previous);\n }\n }\n },\n });\n }\n}\n\nexport interface CreateCesiumAttributeOptions {\n readonly?: boolean;\n toProperty?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n\n shallowClone?: boolean;\n}\n\nexport function createCesiumAttribute<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumAttributeOptions = {},\n) {\n const allowToProperty = !!options.toProperty;\n const shallowClone = !!options.shallowClone;\n const changedEventKey = options.changedEventKey || 'definitionChanged';\n const changedEvent = Reflect.get(scope, changedEventKey) as Event;\n const privateKey = `_${String(key)}`;\n const attribute = allowToProperty ? toProperty(value) : value;\n Reflect.set(scope, privateKey, attribute);\n\n const obj: any = {\n get() {\n const value = Reflect.get(scope, privateKey);\n if (shallowClone) {\n return Array.isArray(value) ? [...value] : { ...value };\n }\n else {\n return value;\n }\n },\n };\n\n let previousListener: VoidFunction | undefined;\n\n const serial = (property: Property, previous?: any) => {\n previousListener?.();\n previousListener = property?.definitionChanged?.addEventListener(() => {\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, property, previous);\n });\n };\n\n if (!options.readonly) {\n // 初始化是父子级绑定监听\n if (allowToProperty && isProperty(value)) {\n serial(value);\n }\n\n obj.set = (value: any) => {\n if (allowToProperty && !isProperty(value)) {\n throw new Error(`The value of ${String(key)} must be a Cesium.Property object`);\n }\n const previous = Reflect.get(scope, privateKey);\n\n if (previous !== value) {\n Reflect.set(scope, privateKey, value);\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, value, previous);\n if (allowToProperty) {\n // 重新绑定监听\n serial(value);\n }\n }\n };\n }\n\n Object.defineProperty(scope, key, obj);\n}\n\nexport interface CreateCesiumPropertyOptions {\n readonly?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n}\nexport function createCesiumProperty<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumPropertyOptions = {},\n) {\n return createCesiumAttribute(scope, key, value, { ...options, toProperty: true });\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n\\n float dis = distance(st, vec2(0.5, 0.5));\\n\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n\\n if(dis > 0.47) {\\n float perDis = 0.5 / 1.0;\\n float disNum;\\n float bl = .0;\\n for(int i = 0; i <= 9; i++) {\\n if(float(i) <= 1.0) {\\n disNum = perDis * float(i) - dis;\\n if(disNum > 0.0) {\\n if(disNum < perDis) {\\n bl = 1.0 - disNum / perDis;\\n } else if(disNum - perDis < perDis) {\\n bl = 1.0 - abs(1.0 - disNum / perDis);\\n }\\n float alpha = 1.0 - (0.5 - dis) / 0.03;\\n if(material.alpha < alpha) {\\n material.alpha = alpha;\\n }\\n }\\n }\\n }\\n }\\n return material;\\n}\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { EllipseRadarScanMaterialSource } from './source';\n\nexport const EllipseRadarScanMaterialType = 'EllipseRadarScan';\n\nexport interface EllipseRadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(EllipseRadarScanMaterialType, {\n fabric: {\n type: EllipseRadarScanMaterialType,\n source: EllipseRadarScanMaterialSource,\n uniforms: { ...EllipseRadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { EllipseRadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { EllipseRadarScanMaterialDefaultUniforms, EllipseRadarScanMaterialType } from './material';\n\n/**\n * `EllipseRadarScanMaterialProperty`构建参数\n */\nexport interface EllipseRadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {\n constructor(options: EllipseRadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return EllipseRadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms {\n const uniforms = EllipseRadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: EllipseRadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\n\\n\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n return material;\\n}\\ncircular\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { RadarScanMaterialSource } from './source';\n\nexport const RadarScanMaterialType = 'RadarScan';\n\nexport interface RadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(RadarScanMaterialType, {\n fabric: {\n type: RadarScanMaterialType,\n source: RadarScanMaterialSource,\n uniforms: { ...RadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { RadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { RadarScanMaterialDefaultUniforms, RadarScanMaterialType } from './material';\n\n/**\n * `RadarScanMaterialProperty`构建参数\n */\nexport interface RadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {\n constructor(options: RadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return RadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms {\n const uniforms = RadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: RadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","import { addMaterialCache, getMaterialCache } from '@vesium/shared';\nimport { buildModuleUrl, Color, Material } from 'cesium';\n\nexport interface WaterRippleMaterialUniforms {\n baseWaterColor: Color;\n blendColor: Color;\n specularMap: string;\n normalMap: string;\n frequency: number;\n animationSpeed: number;\n amplitude: number;\n specularIntensity: number;\n fadeFactor: number;\n}\n\nexport const WaterRippleMaterialType = 'WaterRipple';\n\nexport const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms = {\n baseWaterColor: new Color(0.2, 0.3, 0.6, 1),\n blendColor: new Color(0, 1, 0.699, 1),\n specularMap: Material.DefaultImageId,\n normalMap: buildModuleUrl('Assets/Textures/waterNormals.jpg'),\n frequency: 10000,\n animationSpeed: 0.01,\n amplitude: 1,\n specularIntensity: 0.5,\n fadeFactor: 1,\n};\n\nconst WaterRippleMaterial = getMaterialCache('Water')!;\n\n/**\n * 水波纹材质\n */\naddMaterialCache(WaterRippleMaterialType, {\n fabric: {\n type: WaterRippleMaterialType,\n source: WaterRippleMaterial.fabric.source,\n uniforms: { ...WaterRippleMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.baseWaterColor.alpha < 1 || uniforms.blendColor.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { WaterRippleMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { WaterRippleMaterialDefaultUniforms, WaterRippleMaterialType } from './material';\n\n/**\n * `WaterRippleMaterialProperty`构建参数\n */\nexport interface WaterRippleMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default new Color(0.2, 0.3, 0.6, 1)\n */\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n blendColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 镜面反射贴图\n * @default Material.DefaultImageId\n */\n specularMap?: MaybeProperty<string | undefined>;\n\n /**\n * 法线贴图\n * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')\n */\n normalMap?: MaybeProperty<string | undefined>;\n\n /**\n * 频率\n * @default 10000\n */\n frequency?: MaybeProperty<number | undefined>;\n\n /**\n * 动画速度\n * @default 0.01\n */\n animationSpeed?: MaybeProperty<number | undefined>;\n\n /**\n * 波幅\n * @default 1\n */\n amplitude?: MaybeProperty<number | undefined>;\n\n /**\n * 镜面反射强度\n * @default 0.5\n */\n specularIntensity?: MaybeProperty<number | undefined>;\n\n /**\n * 衰落因子\n * @default 1\n */\n fadeFactor?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {\n constructor(options: WaterRippleMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'baseWaterColor', options.baseWaterColor);\n createPropertyField(this, 'blendColor', options.blendColor);\n createPropertyField(this, 'specularMap', options.specularMap);\n createPropertyField(this, 'normalMap', options.normalMap);\n createPropertyField(this, 'frequency', options.frequency);\n createPropertyField(this, 'animationSpeed', options.animationSpeed);\n createPropertyField(this, 'amplitude', options.amplitude);\n createPropertyField(this, 'specularIntensity', options.specularIntensity);\n createPropertyField(this, 'fadeFactor', options.fadeFactor);\n }\n\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n blendColor?: MaybeProperty<Color | undefined>;\n\n specularMap?: MaybeProperty<string | undefined>;\n\n normalMap?: MaybeProperty<string | undefined>;\n\n frequency?: MaybeProperty<number | undefined>;\n\n animationSpeed?: MaybeProperty<number | undefined>;\n\n amplitude?: MaybeProperty<number | undefined>;\n\n specularIntensity?: MaybeProperty<number | undefined>;\n\n fadeFactor?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.baseWaterColor)\n && isCesiumConstant(this.blendColor)\n && isCesiumConstant(this.specularMap)\n && isCesiumConstant(this.normalMap)\n && isCesiumConstant(this.frequency)\n && isCesiumConstant(this.animationSpeed)\n && isCesiumConstant(this.amplitude)\n && isCesiumConstant(this.specularIntensity)\n && isCesiumConstant(this.fadeFactor)\n );\n }\n\n getType(_time?: JulianDate): string {\n return WaterRippleMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms {\n const uniforms = WaterRippleMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n baseWaterColor: toPropertyValue(this.baseWaterColor, time) ?? uniforms.baseWaterColor,\n blendColor: toPropertyValue(this.blendColor, time) ?? uniforms.blendColor,\n specularMap: toPropertyValue(this.specularMap, time) ?? uniforms.specularMap,\n normalMap: toPropertyValue(this.normalMap, time) ?? uniforms.normalMap,\n frequency: toPropertyValue(this.frequency, time) ?? uniforms.frequency,\n animationSpeed: toPropertyValue(this.animationSpeed, time) ?? uniforms.animationSpeed,\n amplitude: toPropertyValue(this.amplitude, time) ?? uniforms.amplitude,\n specularIntensity: toPropertyValue(this.specularIntensity, time) ?? uniforms.specularIntensity,\n fadeFactor: toPropertyValue(this.fadeFactor, time) ?? uniforms.fadeFactor,\n });\n return data;\n }\n\n equals(other?: WaterRippleMaterialProperty): boolean {\n return (\n cesiumEquals(this.baseWaterColor, other?.baseWaterColor)\n && cesiumEquals(this.blendColor, other?.blendColor)\n && cesiumEquals(this.specularMap, other?.specularMap)\n && cesiumEquals(this.normalMap, other?.normalMap)\n && cesiumEquals(this.frequency, other?.frequency)\n && cesiumEquals(this.animationSpeed, other?.animationSpeed)\n && cesiumEquals(this.amplitude, other?.amplitude)\n && cesiumEquals(this.specularIntensity, other?.specularIntensity)\n && cesiumEquals(this.fadeFactor, other?.fadeFactor)\n );\n }\n}\n"],"names":["defined","Material","CallbackProperty","ConstantProperty","Color","Event","buildModuleUrl"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.iife.min.js","sources":["../../shared/src/is.ts","../../shared/src/cesiumUtils.ts","../../shared/src/material.ts","../../shared/src/property.ts","../material/ellipseRadarScan/source.glsl?raw","../material/ellipseRadarScan/material.ts","../material/ellipseRadarScan/property.ts","../material/radarScan/source.glsl?raw","../material/radarScan/material.ts","../material/radarScan/property.ts","../material/waterRipple/material.ts","../material/waterRipple/property.ts"],"sourcesContent":["import type { AnyFn } from './types';\n\nconst toString = Object.prototype.toString;\n\nexport function isDef<T = any>(val?: T): val is T {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isFunction<T extends AnyFn>(val: any): val is T {\n return typeof val === 'function';\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return toString.call(val) === '[object Object]';\n}\n\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && toString.call(val) === '[object Window]';\n}\n\nexport function isPromise<T extends Promise<any>>(val: any): val is T {\n return !!val && (typeof val === 'object' || typeof val === 'function') && typeof (val as any).then === 'function';\n}\n\nexport function isElement<T extends Element>(val: any): val is T {\n return !!(val && val.nodeName && val.nodeType === 1);\n}\n\nexport const isArray = Array.isArray;\n\nexport function isBase64(val: string): boolean {\n // eslint-disable-next-line regexp/no-unused-capturing-group, regexp/no-super-linear-backtracking\n const reg = /^\\s*data:([a-z]+\\/[\\d+.a-z-]+(;[a-z-]+=[\\da-z-]+)?)?(;base64)?,([\\s\\w!$%&'()*+,./:;=?@~-]*?)\\s*$/i;\n return reg.test(val);\n}\n\nexport function assertError(condition: boolean, error: any) {\n if (condition) {\n throw new Error(error);\n }\n}\n","import type { MaybeProperty } from './property';\nimport { defined } from 'cesium';\nimport { isFunction } from './is';\n\n/**\n * Determines if two Cesium objects are equal.\n *\n * This function not only judges whether the instances are equal,\n * but also judges the equals method in the example.\n *\n * @param left The first Cesium object\n * @param right The second Cesium object\n * @returns Returns true if the two Cesium objects are equal, otherwise false\n */\nexport function cesiumEquals(left: any, right: any): boolean {\n return left === right || (isFunction(left?.equals) && left.equals(right)) || (isFunction(right?.equals) && right.equals(left));\n}\n\n/**\n * Determines if the Cesium property is a constant.\n *\n * @param value Cesium property\n */\nexport function isCesiumConstant(value: MaybeProperty): boolean {\n return !defined(value) || !!value.isConstant;\n}\n","import type { Event, JulianDate, MaterialProperty, TextureMagnificationFilter, TextureMinificationFilter } from 'cesium';\n\nimport { Material } from 'cesium';\n\n/**\n * Cesium.Material.fabric parameters\n */\nexport interface CesiumMaterialFabricOptions<U> {\n /**\n * Used to declare what material the fabric object will ultimately generate. If it's an official built-in one, use the official built-in one directly; otherwise, create a custom material and cache it.\n */\n type: string;\n /**\n * Can nest another level of child fabric to form a composite material\n */\n materials?: Material;\n /**\n * glsl code\n */\n source?: string;\n components?: {\n diffuse?: string;\n alpha?: string;\n };\n /**\n * Pass variables to glsl code\n */\n uniforms?: U & Record<string, any>;\n}\n\n/**\n * Cesium.Material parameters\n */\nexport interface CesiumMaterialConstructorOptions<U> {\n /**\n * Strict mode\n */\n strict?: boolean;\n /**\n * translucent\n */\n translucent?: boolean | ((...params: any[]) => any);\n /**\n * Minification filter\n */\n minificationFilter?: TextureMinificationFilter;\n /**\n * Magnification filter\n */\n magnificationFilter?: TextureMagnificationFilter;\n /**\n * Matrix configuration\n */\n fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.Material`\n */\nexport class CesiumMaterial<U> extends Material {\n constructor(options: CesiumMaterialConstructorOptions<U>) {\n super(options);\n }\n\n /**\n * Matrix configuration\n */\n declare fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.MaterialProperty`\n */\nexport interface CesiumMaterialProperty<V> extends MaterialProperty {\n get isConstant(): boolean;\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void>;\n\n getType: (time: JulianDate) => string;\n\n getValue: (time: JulianDate, result?: V) => V;\n\n equals: (other?: any) => boolean;\n}\n\n/**\n * Get material from cache, alias of `Material._materialCache.getMaterial`\n */\nexport function getMaterialCache<T extends Material = CesiumMaterial<any>>(type: string): T | undefined {\n return (Material as any)._materialCache.getMaterial(type);\n}\n\n/**\n * Add material to Cesium's material cache, alias of `Material._materialCache.addMaterial`\n */\nexport function addMaterialCache(type: string, material: CesiumMaterialConstructorOptions<any>): void {\n return (Material as any)._materialCache.addMaterial(type, material);\n}\n","import type { Event, JulianDate, Property } from 'cesium';\nimport { CallbackProperty, ConstantProperty, defined } from 'cesium';\nimport { isFunction } from './is';\n\nexport type MaybeProperty<T = any> = T | { getValue: (time?: JulianDate) => T };\n\nexport type MaybePropertyOrGetter<T = any> = MaybeProperty<T> | (() => T);\n\n/**\n * Is Cesium.Property\n * @param value - The target object\n */\nexport function isProperty(value: any): value is Property {\n return value && isFunction(value.getValue);\n}\n\n/**\n * Converts a value that may be a Property into its target value, @see {toProperty} for the reverse operation\n * ```typescript\n * toPropertyValue('val') //=> 'val'\n * toPropertyValue(new ConstantProperty('val')) //=> 'val'\n * toPropertyValue(new CallbackProperty(()=>'val')) //=> 'val'\n * ```\n *\n * @param value - The value to convert\n */\nexport function toPropertyValue<T = unknown>(value: MaybeProperty<T>, time?: JulianDate): T {\n return isProperty(value) ? value.getValue(time as any) : value;\n}\n\nexport type PropertyCallback<T = any> = (time: JulianDate, result?: T) => T;\n\n/**\n * Converts a value that may be a Property into a Property object, @see {toPropertyValue} for the reverse operation\n *\n * @param value - The property value or getter to convert, can be undefined or null\n * @param isConstant - The second parameter for converting to CallbackProperty\n * @returns Returns the converted Property object, if value is undefined or null, returns undefined\n */\nexport function toProperty<T>(value?: MaybePropertyOrGetter<T>, isConstant = false): Property {\n return isProperty(value)\n ? value\n : isFunction(value)\n ? (new CallbackProperty(value, isConstant) as any)\n : new ConstantProperty(value);\n}\n\n/**\n * Create a Cesium property key\n *\n * @param scope The host object\n * @param field The property name\n * @param maybeProperty Optional property or getter\n * @param readonly Whether the property is read-only\n */\nexport function createPropertyField<T>(\n scope: any,\n field: string,\n maybeProperty?: MaybePropertyOrGetter<T>,\n readonly?: boolean,\n) {\n let removeOwnerListener: VoidFunction | undefined;\n // 自身内部变化时也触发载体的`definitionChanged`\n // Trigger the carrier's `definitionChanged` when its own internal state changes\n const ownerBinding = (value: any) => {\n removeOwnerListener?.();\n if (defined(value?.definitionChanged)) {\n removeOwnerListener = value?.definitionChanged?.addEventListener(() => {\n scope.definitionChanged.raiseEvent(scope, field, value, value);\n });\n }\n };\n\n const privateField = `_${field}`;\n const property = toProperty(maybeProperty);\n scope[privateField] = property;\n ownerBinding(property);\n\n if (readonly) {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n });\n }\n else {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n set(value) {\n const previous = scope[privateField];\n if (scope[privateField] !== value) {\n scope[privateField] = value;\n ownerBinding(value);\n if (defined(scope.definitionChanged)) {\n scope.definitionChanged.raiseEvent(scope, field, value, previous);\n }\n }\n },\n });\n }\n}\n\nexport interface CreateCesiumAttributeOptions {\n readonly?: boolean;\n toProperty?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n\n shallowClone?: boolean;\n}\n\nexport function createCesiumAttribute<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumAttributeOptions = {},\n) {\n const allowToProperty = !!options.toProperty;\n const shallowClone = !!options.shallowClone;\n const changedEventKey = options.changedEventKey || 'definitionChanged';\n const changedEvent = Reflect.get(scope, changedEventKey) as Event;\n const privateKey = `_${String(key)}`;\n const attribute = allowToProperty ? toProperty(value) : value;\n Reflect.set(scope, privateKey, attribute);\n\n const obj: any = {\n get() {\n const value = Reflect.get(scope, privateKey);\n if (shallowClone) {\n return Array.isArray(value) ? [...value] : { ...value };\n }\n else {\n return value;\n }\n },\n };\n\n let previousListener: VoidFunction | undefined;\n\n const serial = (property: Property, previous?: any) => {\n previousListener?.();\n previousListener = property?.definitionChanged?.addEventListener(() => {\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, property, previous);\n });\n };\n\n if (!options.readonly) {\n // 初始化是父子级绑定监听\n if (allowToProperty && isProperty(value)) {\n serial(value);\n }\n\n obj.set = (value: any) => {\n if (allowToProperty && !isProperty(value)) {\n throw new Error(`The value of ${String(key)} must be a Cesium.Property object`);\n }\n const previous = Reflect.get(scope, privateKey);\n\n if (previous !== value) {\n Reflect.set(scope, privateKey, value);\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, value, previous);\n if (allowToProperty) {\n // 重新绑定监听\n serial(value);\n }\n }\n };\n }\n\n Object.defineProperty(scope, key, obj);\n}\n\nexport interface CreateCesiumPropertyOptions {\n readonly?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n}\nexport function createCesiumProperty<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumPropertyOptions = {},\n) {\n return createCesiumAttribute(scope, key, value, { ...options, toProperty: true });\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n\\n float dis = distance(st, vec2(0.5, 0.5));\\n\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n\\n if(dis > 0.47) {\\n float perDis = 0.5 / 1.0;\\n float disNum;\\n float bl = .0;\\n for(int i = 0; i <= 9; i++) {\\n if(float(i) <= 1.0) {\\n disNum = perDis * float(i) - dis;\\n if(disNum > 0.0) {\\n if(disNum < perDis) {\\n bl = 1.0 - disNum / perDis;\\n } else if(disNum - perDis < perDis) {\\n bl = 1.0 - abs(1.0 - disNum / perDis);\\n }\\n float alpha = 1.0 - (0.5 - dis) / 0.03;\\n if(material.alpha < alpha) {\\n material.alpha = alpha;\\n }\\n }\\n }\\n }\\n }\\n return material;\\n}\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { EllipseRadarScanMaterialSource } from './source';\n\nexport const EllipseRadarScanMaterialType = 'EllipseRadarScan';\n\nexport interface EllipseRadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(EllipseRadarScanMaterialType, {\n fabric: {\n type: EllipseRadarScanMaterialType,\n source: EllipseRadarScanMaterialSource,\n uniforms: { ...EllipseRadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { EllipseRadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { EllipseRadarScanMaterialDefaultUniforms, EllipseRadarScanMaterialType } from './material';\n\n/**\n * `EllipseRadarScanMaterialProperty`构建参数\n */\nexport interface EllipseRadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {\n constructor(options: EllipseRadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return EllipseRadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms {\n const uniforms = EllipseRadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: EllipseRadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\n\\n\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n return material;\\n}\\ncircular\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { RadarScanMaterialSource } from './source';\n\nexport const RadarScanMaterialType = 'RadarScan';\n\nexport interface RadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(RadarScanMaterialType, {\n fabric: {\n type: RadarScanMaterialType,\n source: RadarScanMaterialSource,\n uniforms: { ...RadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { RadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { RadarScanMaterialDefaultUniforms, RadarScanMaterialType } from './material';\n\n/**\n * `RadarScanMaterialProperty`构建参数\n */\nexport interface RadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {\n constructor(options: RadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return RadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms {\n const uniforms = RadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: RadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","import { addMaterialCache, getMaterialCache } from '@vesium/shared';\nimport { buildModuleUrl, Color, Material } from 'cesium';\n\nexport interface WaterRippleMaterialUniforms {\n baseWaterColor: Color;\n blendColor: Color;\n specularMap: string;\n normalMap: string;\n frequency: number;\n animationSpeed: number;\n amplitude: number;\n specularIntensity: number;\n fadeFactor: number;\n}\n\nexport const WaterRippleMaterialType = 'WaterRipple';\n\nexport const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms = {\n baseWaterColor: new Color(0.2, 0.3, 0.6, 1),\n blendColor: new Color(0, 1, 0.699, 1),\n specularMap: Material.DefaultImageId,\n normalMap: buildModuleUrl('Assets/Textures/waterNormals.jpg'),\n frequency: 10000,\n animationSpeed: 0.01,\n amplitude: 1,\n specularIntensity: 0.5,\n fadeFactor: 1,\n};\n\nconst WaterRippleMaterial = getMaterialCache('Water')!;\n\n/**\n * 水波纹材质\n */\naddMaterialCache(WaterRippleMaterialType, {\n fabric: {\n type: WaterRippleMaterialType,\n source: WaterRippleMaterial.fabric.source,\n uniforms: { ...WaterRippleMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.baseWaterColor.alpha < 1 || uniforms.blendColor.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { WaterRippleMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { WaterRippleMaterialDefaultUniforms, WaterRippleMaterialType } from './material';\n\n/**\n * `WaterRippleMaterialProperty`构建参数\n */\nexport interface WaterRippleMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default new Color(0.2, 0.3, 0.6, 1)\n */\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n blendColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 镜面反射贴图\n * @default Material.DefaultImageId\n */\n specularMap?: MaybeProperty<string | undefined>;\n\n /**\n * 法线贴图\n * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')\n */\n normalMap?: MaybeProperty<string | undefined>;\n\n /**\n * 频率\n * @default 10000\n */\n frequency?: MaybeProperty<number | undefined>;\n\n /**\n * 动画速度\n * @default 0.01\n */\n animationSpeed?: MaybeProperty<number | undefined>;\n\n /**\n * 波幅\n * @default 1\n */\n amplitude?: MaybeProperty<number | undefined>;\n\n /**\n * 镜面反射强度\n * @default 0.5\n */\n specularIntensity?: MaybeProperty<number | undefined>;\n\n /**\n * 衰落因子\n * @default 1\n */\n fadeFactor?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {\n constructor(options: WaterRippleMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'baseWaterColor', options.baseWaterColor);\n createPropertyField(this, 'blendColor', options.blendColor);\n createPropertyField(this, 'specularMap', options.specularMap);\n createPropertyField(this, 'normalMap', options.normalMap);\n createPropertyField(this, 'frequency', options.frequency);\n createPropertyField(this, 'animationSpeed', options.animationSpeed);\n createPropertyField(this, 'amplitude', options.amplitude);\n createPropertyField(this, 'specularIntensity', options.specularIntensity);\n createPropertyField(this, 'fadeFactor', options.fadeFactor);\n }\n\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n blendColor?: MaybeProperty<Color | undefined>;\n\n specularMap?: MaybeProperty<string | undefined>;\n\n normalMap?: MaybeProperty<string | undefined>;\n\n frequency?: MaybeProperty<number | undefined>;\n\n animationSpeed?: MaybeProperty<number | undefined>;\n\n amplitude?: MaybeProperty<number | undefined>;\n\n specularIntensity?: MaybeProperty<number | undefined>;\n\n fadeFactor?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.baseWaterColor)\n && isCesiumConstant(this.blendColor)\n && isCesiumConstant(this.specularMap)\n && isCesiumConstant(this.normalMap)\n && isCesiumConstant(this.frequency)\n && isCesiumConstant(this.animationSpeed)\n && isCesiumConstant(this.amplitude)\n && isCesiumConstant(this.specularIntensity)\n && isCesiumConstant(this.fadeFactor)\n );\n }\n\n getType(_time?: JulianDate): string {\n return WaterRippleMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms {\n const uniforms = WaterRippleMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n baseWaterColor: toPropertyValue(this.baseWaterColor, time) ?? uniforms.baseWaterColor,\n blendColor: toPropertyValue(this.blendColor, time) ?? uniforms.blendColor,\n specularMap: toPropertyValue(this.specularMap, time) ?? uniforms.specularMap,\n normalMap: toPropertyValue(this.normalMap, time) ?? uniforms.normalMap,\n frequency: toPropertyValue(this.frequency, time) ?? uniforms.frequency,\n animationSpeed: toPropertyValue(this.animationSpeed, time) ?? uniforms.animationSpeed,\n amplitude: toPropertyValue(this.amplitude, time) ?? uniforms.amplitude,\n specularIntensity: toPropertyValue(this.specularIntensity, time) ?? uniforms.specularIntensity,\n fadeFactor: toPropertyValue(this.fadeFactor, time) ?? uniforms.fadeFactor,\n });\n return data;\n }\n\n equals(other?: WaterRippleMaterialProperty): boolean {\n return (\n cesiumEquals(this.baseWaterColor, other?.baseWaterColor)\n && cesiumEquals(this.blendColor, other?.blendColor)\n && cesiumEquals(this.specularMap, other?.specularMap)\n && cesiumEquals(this.normalMap, other?.normalMap)\n && cesiumEquals(this.frequency, other?.frequency)\n && cesiumEquals(this.animationSpeed, other?.animationSpeed)\n && cesiumEquals(this.amplitude, other?.amplitude)\n && cesiumEquals(this.specularIntensity, other?.specularIntensity)\n && cesiumEquals(this.fadeFactor, other?.fadeFactor)\n );\n }\n}\n"],"names":["isFunction","val","cesiumEquals","left","right","isCesiumConstant","value","defined","getMaterialCache","type","Material","addMaterialCache","material","isProperty","toPropertyValue","time","toProperty","isConstant","CallbackProperty","ConstantProperty","createPropertyField","scope","field","maybeProperty","readonly","removeOwnerListener","ownerBinding","_a","privateField","property","previous","EllipseRadarScanMaterialSource","EllipseRadarScanMaterialType","EllipseRadarScanMaterialDefaultUniforms","Color","uniforms","EllipseRadarScanMaterialProperty","options","__publicField","Event","_time","result","other","RadarScanMaterialSource","RadarScanMaterialType","RadarScanMaterialDefaultUniforms","RadarScanMaterialProperty","WaterRippleMaterialType","WaterRippleMaterialDefaultUniforms","buildModuleUrl","WaterRippleMaterial","WaterRippleMaterialProperty","exports"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.min.cjs","sources":["../../shared/src/is.ts","../../shared/src/cesiumUtils.ts","../../shared/src/material.ts","../../shared/src/property.ts","../material/ellipseRadarScan/source.glsl?raw","../material/ellipseRadarScan/material.ts","../material/ellipseRadarScan/property.ts","../material/radarScan/source.glsl?raw","../material/radarScan/material.ts","../material/radarScan/property.ts","../material/waterRipple/material.ts","../material/waterRipple/property.ts"],"sourcesContent":["import type { AnyFn } from './types';\n\nconst toString = Object.prototype.toString;\n\nexport function isDef<T = any>(val?: T): val is T {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isFunction<T extends AnyFn>(val: any): val is T {\n return typeof val === 'function';\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return toString.call(val) === '[object Object]';\n}\n\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && toString.call(val) === '[object Window]';\n}\n\nexport function isPromise<T extends Promise<any>>(val: any): val is T {\n return !!val && (typeof val === 'object' || typeof val === 'function') && typeof (val as any).then === 'function';\n}\n\nexport function isElement<T extends Element>(val: any): val is T {\n return !!(val && val.nodeName && val.nodeType === 1);\n}\n\nexport const isArray = Array.isArray;\n\nexport function isBase64(val: string): boolean {\n // eslint-disable-next-line regexp/no-unused-capturing-group, regexp/no-super-linear-backtracking\n const reg = /^\\s*data:([a-z]+\\/[\\d+.a-z-]+(;[a-z-]+=[\\da-z-]+)?)?(;base64)?,([\\s\\w!$%&'()*+,./:;=?@~-]*?)\\s*$/i;\n return reg.test(val);\n}\n\nexport function assertError(condition: boolean, error: any) {\n if (condition) {\n throw new Error(error);\n }\n}\n","import type { MaybeProperty } from './property';\nimport { defined } from 'cesium';\nimport { isFunction } from './is';\n\n/**\n * Determines if two Cesium objects are equal.\n *\n * This function not only judges whether the instances are equal,\n * but also judges the equals method in the example.\n *\n * @param left The first Cesium object\n * @param right The second Cesium object\n * @returns Returns true if the two Cesium objects are equal, otherwise false\n */\nexport function cesiumEquals(left: any, right: any): boolean {\n return left === right || (isFunction(left?.equals) && left.equals(right)) || (isFunction(right?.equals) && right.equals(left));\n}\n\n/**\n * Determines if the Cesium property is a constant.\n *\n * @param value Cesium property\n */\nexport function isCesiumConstant(value: MaybeProperty): boolean {\n return !defined(value) || !!value.isConstant;\n}\n","import type { Event, JulianDate, MaterialProperty, TextureMagnificationFilter, TextureMinificationFilter } from 'cesium';\n\nimport { Material } from 'cesium';\n\n/**\n * Cesium.Material.fabric parameters\n */\nexport interface CesiumMaterialFabricOptions<U> {\n /**\n * Used to declare what material the fabric object will ultimately generate. If it's an official built-in one, use the official built-in one directly; otherwise, create a custom material and cache it.\n */\n type: string;\n /**\n * Can nest another level of child fabric to form a composite material\n */\n materials?: Material;\n /**\n * glsl code\n */\n source?: string;\n components?: {\n diffuse?: string;\n alpha?: string;\n };\n /**\n * Pass variables to glsl code\n */\n uniforms?: U & Record<string, any>;\n}\n\n/**\n * Cesium.Material parameters\n */\nexport interface CesiumMaterialConstructorOptions<U> {\n /**\n * Strict mode\n */\n strict?: boolean;\n /**\n * translucent\n */\n translucent?: boolean | ((...params: any[]) => any);\n /**\n * Minification filter\n */\n minificationFilter?: TextureMinificationFilter;\n /**\n * Magnification filter\n */\n magnificationFilter?: TextureMagnificationFilter;\n /**\n * Matrix configuration\n */\n fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.Material`\n */\nexport class CesiumMaterial<U> extends Material {\n constructor(options: CesiumMaterialConstructorOptions<U>) {\n super(options);\n }\n\n /**\n * Matrix configuration\n */\n declare fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.MaterialProperty`\n */\nexport interface CesiumMaterialProperty<V> extends MaterialProperty {\n get isConstant(): boolean;\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void>;\n\n getType: (time: JulianDate) => string;\n\n getValue: (time: JulianDate, result?: V) => V;\n\n equals: (other?: any) => boolean;\n}\n\n/**\n * Get material from cache, alias of `Material._materialCache.getMaterial`\n */\nexport function getMaterialCache<T extends Material = CesiumMaterial<any>>(type: string): T | undefined {\n return (Material as any)._materialCache.getMaterial(type);\n}\n\n/**\n * Add material to Cesium's material cache, alias of `Material._materialCache.addMaterial`\n */\nexport function addMaterialCache(type: string, material: CesiumMaterialConstructorOptions<any>): void {\n return (Material as any)._materialCache.addMaterial(type, material);\n}\n","import type { Event, JulianDate, Property } from 'cesium';\nimport { CallbackProperty, ConstantProperty, defined } from 'cesium';\nimport { isFunction } from './is';\n\nexport type MaybeProperty<T = any> = T | { getValue: (time?: JulianDate) => T };\n\nexport type MaybePropertyOrGetter<T = any> = MaybeProperty<T> | (() => T);\n\n/**\n * Is Cesium.Property\n * @param value - The target object\n */\nexport function isProperty(value: any): value is Property {\n return value && isFunction(value.getValue);\n}\n\n/**\n * Converts a value that may be a Property into its target value, @see {toProperty} for the reverse operation\n * ```typescript\n * toPropertyValue('val') //=> 'val'\n * toPropertyValue(new ConstantProperty('val')) //=> 'val'\n * toPropertyValue(new CallbackProperty(()=>'val')) //=> 'val'\n * ```\n *\n * @param value - The value to convert\n */\nexport function toPropertyValue<T = unknown>(value: MaybeProperty<T>, time?: JulianDate): T {\n return isProperty(value) ? value.getValue(time as any) : value;\n}\n\nexport type PropertyCallback<T = any> = (time: JulianDate, result?: T) => T;\n\n/**\n * Converts a value that may be a Property into a Property object, @see {toPropertyValue} for the reverse operation\n *\n * @param value - The property value or getter to convert, can be undefined or null\n * @param isConstant - The second parameter for converting to CallbackProperty\n * @returns Returns the converted Property object, if value is undefined or null, returns undefined\n */\nexport function toProperty<T>(value?: MaybePropertyOrGetter<T>, isConstant = false): Property {\n return isProperty(value)\n ? value\n : isFunction(value)\n ? (new CallbackProperty(value, isConstant) as any)\n : new ConstantProperty(value);\n}\n\n/**\n * Create a Cesium property key\n *\n * @param scope The host object\n * @param field The property name\n * @param maybeProperty Optional property or getter\n * @param readonly Whether the property is read-only\n */\nexport function createPropertyField<T>(\n scope: any,\n field: string,\n maybeProperty?: MaybePropertyOrGetter<T>,\n readonly?: boolean,\n) {\n let removeOwnerListener: VoidFunction | undefined;\n // 自身内部变化时也触发载体的`definitionChanged`\n // Trigger the carrier's `definitionChanged` when its own internal state changes\n const ownerBinding = (value: any) => {\n removeOwnerListener?.();\n if (defined(value?.definitionChanged)) {\n removeOwnerListener = value?.definitionChanged?.addEventListener(() => {\n scope.definitionChanged.raiseEvent(scope, field, value, value);\n });\n }\n };\n\n const privateField = `_${field}`;\n const property = toProperty(maybeProperty);\n scope[privateField] = property;\n ownerBinding(property);\n\n if (readonly) {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n });\n }\n else {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n set(value) {\n const previous = scope[privateField];\n if (scope[privateField] !== value) {\n scope[privateField] = value;\n ownerBinding(value);\n if (defined(scope.definitionChanged)) {\n scope.definitionChanged.raiseEvent(scope, field, value, previous);\n }\n }\n },\n });\n }\n}\n\nexport interface CreateCesiumAttributeOptions {\n readonly?: boolean;\n toProperty?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n\n shallowClone?: boolean;\n}\n\nexport function createCesiumAttribute<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumAttributeOptions = {},\n) {\n const allowToProperty = !!options.toProperty;\n const shallowClone = !!options.shallowClone;\n const changedEventKey = options.changedEventKey || 'definitionChanged';\n const changedEvent = Reflect.get(scope, changedEventKey) as Event;\n const privateKey = `_${String(key)}`;\n const attribute = allowToProperty ? toProperty(value) : value;\n Reflect.set(scope, privateKey, attribute);\n\n const obj: any = {\n get() {\n const value = Reflect.get(scope, privateKey);\n if (shallowClone) {\n return Array.isArray(value) ? [...value] : { ...value };\n }\n else {\n return value;\n }\n },\n };\n\n let previousListener: VoidFunction | undefined;\n\n const serial = (property: Property, previous?: any) => {\n previousListener?.();\n previousListener = property?.definitionChanged?.addEventListener(() => {\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, property, previous);\n });\n };\n\n if (!options.readonly) {\n // 初始化是父子级绑定监听\n if (allowToProperty && isProperty(value)) {\n serial(value);\n }\n\n obj.set = (value: any) => {\n if (allowToProperty && !isProperty(value)) {\n throw new Error(`The value of ${String(key)} must be a Cesium.Property object`);\n }\n const previous = Reflect.get(scope, privateKey);\n\n if (previous !== value) {\n Reflect.set(scope, privateKey, value);\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, value, previous);\n if (allowToProperty) {\n // 重新绑定监听\n serial(value);\n }\n }\n };\n }\n\n Object.defineProperty(scope, key, obj);\n}\n\nexport interface CreateCesiumPropertyOptions {\n readonly?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n}\nexport function createCesiumProperty<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumPropertyOptions = {},\n) {\n return createCesiumAttribute(scope, key, value, { ...options, toProperty: true });\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n\\n float dis = distance(st, vec2(0.5, 0.5));\\n\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n\\n if(dis > 0.47) {\\n float perDis = 0.5 / 1.0;\\n float disNum;\\n float bl = .0;\\n for(int i = 0; i <= 9; i++) {\\n if(float(i) <= 1.0) {\\n disNum = perDis * float(i) - dis;\\n if(disNum > 0.0) {\\n if(disNum < perDis) {\\n bl = 1.0 - disNum / perDis;\\n } else if(disNum - perDis < perDis) {\\n bl = 1.0 - abs(1.0 - disNum / perDis);\\n }\\n float alpha = 1.0 - (0.5 - dis) / 0.03;\\n if(material.alpha < alpha) {\\n material.alpha = alpha;\\n }\\n }\\n }\\n }\\n }\\n return material;\\n}\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { EllipseRadarScanMaterialSource } from './source';\n\nexport const EllipseRadarScanMaterialType = 'EllipseRadarScan';\n\nexport interface EllipseRadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(EllipseRadarScanMaterialType, {\n fabric: {\n type: EllipseRadarScanMaterialType,\n source: EllipseRadarScanMaterialSource,\n uniforms: { ...EllipseRadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { EllipseRadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { EllipseRadarScanMaterialDefaultUniforms, EllipseRadarScanMaterialType } from './material';\n\n/**\n * `EllipseRadarScanMaterialProperty`构建参数\n */\nexport interface EllipseRadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {\n constructor(options: EllipseRadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return EllipseRadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms {\n const uniforms = EllipseRadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: EllipseRadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\n\\n\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n return material;\\n}\\ncircular\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { RadarScanMaterialSource } from './source';\n\nexport const RadarScanMaterialType = 'RadarScan';\n\nexport interface RadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(RadarScanMaterialType, {\n fabric: {\n type: RadarScanMaterialType,\n source: RadarScanMaterialSource,\n uniforms: { ...RadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { RadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { RadarScanMaterialDefaultUniforms, RadarScanMaterialType } from './material';\n\n/**\n * `RadarScanMaterialProperty`构建参数\n */\nexport interface RadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {\n constructor(options: RadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return RadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms {\n const uniforms = RadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: RadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","import { addMaterialCache, getMaterialCache } from '@vesium/shared';\nimport { buildModuleUrl, Color, Material } from 'cesium';\n\nexport interface WaterRippleMaterialUniforms {\n baseWaterColor: Color;\n blendColor: Color;\n specularMap: string;\n normalMap: string;\n frequency: number;\n animationSpeed: number;\n amplitude: number;\n specularIntensity: number;\n fadeFactor: number;\n}\n\nexport const WaterRippleMaterialType = 'WaterRipple';\n\nexport const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms = {\n baseWaterColor: new Color(0.2, 0.3, 0.6, 1),\n blendColor: new Color(0, 1, 0.699, 1),\n specularMap: Material.DefaultImageId,\n normalMap: buildModuleUrl('Assets/Textures/waterNormals.jpg'),\n frequency: 10000,\n animationSpeed: 0.01,\n amplitude: 1,\n specularIntensity: 0.5,\n fadeFactor: 1,\n};\n\nconst WaterRippleMaterial = getMaterialCache('Water')!;\n\n/**\n * 水波纹材质\n */\naddMaterialCache(WaterRippleMaterialType, {\n fabric: {\n type: WaterRippleMaterialType,\n source: WaterRippleMaterial.fabric.source,\n uniforms: { ...WaterRippleMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.baseWaterColor.alpha < 1 || uniforms.blendColor.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { WaterRippleMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { WaterRippleMaterialDefaultUniforms, WaterRippleMaterialType } from './material';\n\n/**\n * `WaterRippleMaterialProperty`构建参数\n */\nexport interface WaterRippleMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default new Color(0.2, 0.3, 0.6, 1)\n */\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n blendColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 镜面反射贴图\n * @default Material.DefaultImageId\n */\n specularMap?: MaybeProperty<string | undefined>;\n\n /**\n * 法线贴图\n * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')\n */\n normalMap?: MaybeProperty<string | undefined>;\n\n /**\n * 频率\n * @default 10000\n */\n frequency?: MaybeProperty<number | undefined>;\n\n /**\n * 动画速度\n * @default 0.01\n */\n animationSpeed?: MaybeProperty<number | undefined>;\n\n /**\n * 波幅\n * @default 1\n */\n amplitude?: MaybeProperty<number | undefined>;\n\n /**\n * 镜面反射强度\n * @default 0.5\n */\n specularIntensity?: MaybeProperty<number | undefined>;\n\n /**\n * 衰落因子\n * @default 1\n */\n fadeFactor?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {\n constructor(options: WaterRippleMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'baseWaterColor', options.baseWaterColor);\n createPropertyField(this, 'blendColor', options.blendColor);\n createPropertyField(this, 'specularMap', options.specularMap);\n createPropertyField(this, 'normalMap', options.normalMap);\n createPropertyField(this, 'frequency', options.frequency);\n createPropertyField(this, 'animationSpeed', options.animationSpeed);\n createPropertyField(this, 'amplitude', options.amplitude);\n createPropertyField(this, 'specularIntensity', options.specularIntensity);\n createPropertyField(this, 'fadeFactor', options.fadeFactor);\n }\n\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n blendColor?: MaybeProperty<Color | undefined>;\n\n specularMap?: MaybeProperty<string | undefined>;\n\n normalMap?: MaybeProperty<string | undefined>;\n\n frequency?: MaybeProperty<number | undefined>;\n\n animationSpeed?: MaybeProperty<number | undefined>;\n\n amplitude?: MaybeProperty<number | undefined>;\n\n specularIntensity?: MaybeProperty<number | undefined>;\n\n fadeFactor?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.baseWaterColor)\n && isCesiumConstant(this.blendColor)\n && isCesiumConstant(this.specularMap)\n && isCesiumConstant(this.normalMap)\n && isCesiumConstant(this.frequency)\n && isCesiumConstant(this.animationSpeed)\n && isCesiumConstant(this.amplitude)\n && isCesiumConstant(this.specularIntensity)\n && isCesiumConstant(this.fadeFactor)\n );\n }\n\n getType(_time?: JulianDate): string {\n return WaterRippleMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms {\n const uniforms = WaterRippleMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n baseWaterColor: toPropertyValue(this.baseWaterColor, time) ?? uniforms.baseWaterColor,\n blendColor: toPropertyValue(this.blendColor, time) ?? uniforms.blendColor,\n specularMap: toPropertyValue(this.specularMap, time) ?? uniforms.specularMap,\n normalMap: toPropertyValue(this.normalMap, time) ?? uniforms.normalMap,\n frequency: toPropertyValue(this.frequency, time) ?? uniforms.frequency,\n animationSpeed: toPropertyValue(this.animationSpeed, time) ?? uniforms.animationSpeed,\n amplitude: toPropertyValue(this.amplitude, time) ?? uniforms.amplitude,\n specularIntensity: toPropertyValue(this.specularIntensity, time) ?? uniforms.specularIntensity,\n fadeFactor: toPropertyValue(this.fadeFactor, time) ?? uniforms.fadeFactor,\n });\n return data;\n }\n\n equals(other?: WaterRippleMaterialProperty): boolean {\n return (\n cesiumEquals(this.baseWaterColor, other?.baseWaterColor)\n && cesiumEquals(this.blendColor, other?.blendColor)\n && cesiumEquals(this.specularMap, other?.specularMap)\n && cesiumEquals(this.normalMap, other?.normalMap)\n && cesiumEquals(this.frequency, other?.frequency)\n && cesiumEquals(this.animationSpeed, other?.animationSpeed)\n && cesiumEquals(this.amplitude, other?.amplitude)\n && cesiumEquals(this.specularIntensity, other?.specularIntensity)\n && cesiumEquals(this.fadeFactor, other?.fadeFactor)\n );\n }\n}\n"],"names":["isFunction","val","cesiumEquals","left","right","isCesiumConstant","value","defined","getMaterialCache","type","Material","addMaterialCache","material","isProperty","toPropertyValue","time","toProperty","isConstant","CallbackProperty","ConstantProperty","createPropertyField","scope","field","maybeProperty","readonly","removeOwnerListener","ownerBinding","_a","privateField","property","previous","EllipseRadarScanMaterialSource","EllipseRadarScanMaterialType","EllipseRadarScanMaterialDefaultUniforms","Color","uniforms","EllipseRadarScanMaterialProperty","options","__publicField","Event","_time","result","other","RadarScanMaterialSource","RadarScanMaterialType","RadarScanMaterialDefaultUniforms","RadarScanMaterialProperty","WaterRippleMaterialType","WaterRippleMaterialDefaultUniforms","buildModuleUrl","WaterRippleMaterial","WaterRippleMaterialProperty"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.min.mjs","sources":["../../shared/src/is.ts","../../shared/src/cesiumUtils.ts","../../shared/src/material.ts","../../shared/src/property.ts","../material/ellipseRadarScan/source.glsl?raw","../material/ellipseRadarScan/material.ts","../material/ellipseRadarScan/property.ts","../material/radarScan/source.glsl?raw","../material/radarScan/material.ts","../material/radarScan/property.ts","../material/waterRipple/material.ts","../material/waterRipple/property.ts"],"sourcesContent":["import type { AnyFn } from './types';\n\nconst toString = Object.prototype.toString;\n\nexport function isDef<T = any>(val?: T): val is T {\n return typeof val !== 'undefined';\n}\n\nexport function isBoolean(val: any): val is boolean {\n return typeof val === 'boolean';\n}\n\nexport function isFunction<T extends AnyFn>(val: any): val is T {\n return typeof val === 'function';\n}\n\nexport function isNumber(val: any): val is number {\n return typeof val === 'number';\n}\n\nexport function isString(val: unknown): val is string {\n return typeof val === 'string';\n}\n\nexport function isObject(val: any): val is object {\n return toString.call(val) === '[object Object]';\n}\n\nexport function isWindow(val: any): val is Window {\n return typeof window !== 'undefined' && toString.call(val) === '[object Window]';\n}\n\nexport function isPromise<T extends Promise<any>>(val: any): val is T {\n return !!val && (typeof val === 'object' || typeof val === 'function') && typeof (val as any).then === 'function';\n}\n\nexport function isElement<T extends Element>(val: any): val is T {\n return !!(val && val.nodeName && val.nodeType === 1);\n}\n\nexport const isArray = Array.isArray;\n\nexport function isBase64(val: string): boolean {\n // eslint-disable-next-line regexp/no-unused-capturing-group, regexp/no-super-linear-backtracking\n const reg = /^\\s*data:([a-z]+\\/[\\d+.a-z-]+(;[a-z-]+=[\\da-z-]+)?)?(;base64)?,([\\s\\w!$%&'()*+,./:;=?@~-]*?)\\s*$/i;\n return reg.test(val);\n}\n\nexport function assertError(condition: boolean, error: any) {\n if (condition) {\n throw new Error(error);\n }\n}\n","import type { MaybeProperty } from './property';\nimport { defined } from 'cesium';\nimport { isFunction } from './is';\n\n/**\n * Determines if two Cesium objects are equal.\n *\n * This function not only judges whether the instances are equal,\n * but also judges the equals method in the example.\n *\n * @param left The first Cesium object\n * @param right The second Cesium object\n * @returns Returns true if the two Cesium objects are equal, otherwise false\n */\nexport function cesiumEquals(left: any, right: any): boolean {\n return left === right || (isFunction(left?.equals) && left.equals(right)) || (isFunction(right?.equals) && right.equals(left));\n}\n\n/**\n * Determines if the Cesium property is a constant.\n *\n * @param value Cesium property\n */\nexport function isCesiumConstant(value: MaybeProperty): boolean {\n return !defined(value) || !!value.isConstant;\n}\n","import type { Event, JulianDate, MaterialProperty, TextureMagnificationFilter, TextureMinificationFilter } from 'cesium';\n\nimport { Material } from 'cesium';\n\n/**\n * Cesium.Material.fabric parameters\n */\nexport interface CesiumMaterialFabricOptions<U> {\n /**\n * Used to declare what material the fabric object will ultimately generate. If it's an official built-in one, use the official built-in one directly; otherwise, create a custom material and cache it.\n */\n type: string;\n /**\n * Can nest another level of child fabric to form a composite material\n */\n materials?: Material;\n /**\n * glsl code\n */\n source?: string;\n components?: {\n diffuse?: string;\n alpha?: string;\n };\n /**\n * Pass variables to glsl code\n */\n uniforms?: U & Record<string, any>;\n}\n\n/**\n * Cesium.Material parameters\n */\nexport interface CesiumMaterialConstructorOptions<U> {\n /**\n * Strict mode\n */\n strict?: boolean;\n /**\n * translucent\n */\n translucent?: boolean | ((...params: any[]) => any);\n /**\n * Minification filter\n */\n minificationFilter?: TextureMinificationFilter;\n /**\n * Magnification filter\n */\n magnificationFilter?: TextureMagnificationFilter;\n /**\n * Matrix configuration\n */\n fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.Material`\n */\nexport class CesiumMaterial<U> extends Material {\n constructor(options: CesiumMaterialConstructorOptions<U>) {\n super(options);\n }\n\n /**\n * Matrix configuration\n */\n declare fabric: CesiumMaterialFabricOptions<U>;\n}\n\n/**\n * Only as a type fix for `Cesium.MaterialProperty`\n */\nexport interface CesiumMaterialProperty<V> extends MaterialProperty {\n get isConstant(): boolean;\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void>;\n\n getType: (time: JulianDate) => string;\n\n getValue: (time: JulianDate, result?: V) => V;\n\n equals: (other?: any) => boolean;\n}\n\n/**\n * Get material from cache, alias of `Material._materialCache.getMaterial`\n */\nexport function getMaterialCache<T extends Material = CesiumMaterial<any>>(type: string): T | undefined {\n return (Material as any)._materialCache.getMaterial(type);\n}\n\n/**\n * Add material to Cesium's material cache, alias of `Material._materialCache.addMaterial`\n */\nexport function addMaterialCache(type: string, material: CesiumMaterialConstructorOptions<any>): void {\n return (Material as any)._materialCache.addMaterial(type, material);\n}\n","import type { Event, JulianDate, Property } from 'cesium';\nimport { CallbackProperty, ConstantProperty, defined } from 'cesium';\nimport { isFunction } from './is';\n\nexport type MaybeProperty<T = any> = T | { getValue: (time?: JulianDate) => T };\n\nexport type MaybePropertyOrGetter<T = any> = MaybeProperty<T> | (() => T);\n\n/**\n * Is Cesium.Property\n * @param value - The target object\n */\nexport function isProperty(value: any): value is Property {\n return value && isFunction(value.getValue);\n}\n\n/**\n * Converts a value that may be a Property into its target value, @see {toProperty} for the reverse operation\n * ```typescript\n * toPropertyValue('val') //=> 'val'\n * toPropertyValue(new ConstantProperty('val')) //=> 'val'\n * toPropertyValue(new CallbackProperty(()=>'val')) //=> 'val'\n * ```\n *\n * @param value - The value to convert\n */\nexport function toPropertyValue<T = unknown>(value: MaybeProperty<T>, time?: JulianDate): T {\n return isProperty(value) ? value.getValue(time as any) : value;\n}\n\nexport type PropertyCallback<T = any> = (time: JulianDate, result?: T) => T;\n\n/**\n * Converts a value that may be a Property into a Property object, @see {toPropertyValue} for the reverse operation\n *\n * @param value - The property value or getter to convert, can be undefined or null\n * @param isConstant - The second parameter for converting to CallbackProperty\n * @returns Returns the converted Property object, if value is undefined or null, returns undefined\n */\nexport function toProperty<T>(value?: MaybePropertyOrGetter<T>, isConstant = false): Property {\n return isProperty(value)\n ? value\n : isFunction(value)\n ? (new CallbackProperty(value, isConstant) as any)\n : new ConstantProperty(value);\n}\n\n/**\n * Create a Cesium property key\n *\n * @param scope The host object\n * @param field The property name\n * @param maybeProperty Optional property or getter\n * @param readonly Whether the property is read-only\n */\nexport function createPropertyField<T>(\n scope: any,\n field: string,\n maybeProperty?: MaybePropertyOrGetter<T>,\n readonly?: boolean,\n) {\n let removeOwnerListener: VoidFunction | undefined;\n // 自身内部变化时也触发载体的`definitionChanged`\n // Trigger the carrier's `definitionChanged` when its own internal state changes\n const ownerBinding = (value: any) => {\n removeOwnerListener?.();\n if (defined(value?.definitionChanged)) {\n removeOwnerListener = value?.definitionChanged?.addEventListener(() => {\n scope.definitionChanged.raiseEvent(scope, field, value, value);\n });\n }\n };\n\n const privateField = `_${field}`;\n const property = toProperty(maybeProperty);\n scope[privateField] = property;\n ownerBinding(property);\n\n if (readonly) {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n });\n }\n else {\n Object.defineProperty(scope, field, {\n get() {\n return scope[privateField];\n },\n set(value) {\n const previous = scope[privateField];\n if (scope[privateField] !== value) {\n scope[privateField] = value;\n ownerBinding(value);\n if (defined(scope.definitionChanged)) {\n scope.definitionChanged.raiseEvent(scope, field, value, previous);\n }\n }\n },\n });\n }\n}\n\nexport interface CreateCesiumAttributeOptions {\n readonly?: boolean;\n toProperty?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n\n shallowClone?: boolean;\n}\n\nexport function createCesiumAttribute<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumAttributeOptions = {},\n) {\n const allowToProperty = !!options.toProperty;\n const shallowClone = !!options.shallowClone;\n const changedEventKey = options.changedEventKey || 'definitionChanged';\n const changedEvent = Reflect.get(scope, changedEventKey) as Event;\n const privateKey = `_${String(key)}`;\n const attribute = allowToProperty ? toProperty(value) : value;\n Reflect.set(scope, privateKey, attribute);\n\n const obj: any = {\n get() {\n const value = Reflect.get(scope, privateKey);\n if (shallowClone) {\n return Array.isArray(value) ? [...value] : { ...value };\n }\n else {\n return value;\n }\n },\n };\n\n let previousListener: VoidFunction | undefined;\n\n const serial = (property: Property, previous?: any) => {\n previousListener?.();\n previousListener = property?.definitionChanged?.addEventListener(() => {\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, property, previous);\n });\n };\n\n if (!options.readonly) {\n // 初始化是父子级绑定监听\n if (allowToProperty && isProperty(value)) {\n serial(value);\n }\n\n obj.set = (value: any) => {\n if (allowToProperty && !isProperty(value)) {\n throw new Error(`The value of ${String(key)} must be a Cesium.Property object`);\n }\n const previous = Reflect.get(scope, privateKey);\n\n if (previous !== value) {\n Reflect.set(scope, privateKey, value);\n changedEvent?.raiseEvent.bind(changedEvent)(scope, key, value, previous);\n if (allowToProperty) {\n // 重新绑定监听\n serial(value);\n }\n }\n };\n }\n\n Object.defineProperty(scope, key, obj);\n}\n\nexport interface CreateCesiumPropertyOptions {\n readonly?: boolean;\n /**\n * The event name that triggers the change\n * @default 'definitionChanged'\n */\n changedEventKey?: string;\n}\nexport function createCesiumProperty<Scope extends object>(\n scope: Scope,\n key: keyof Scope,\n value: any,\n options: CreateCesiumPropertyOptions = {},\n) {\n return createCesiumAttribute(scope, key, value, { ...options, toProperty: true });\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n\\n float dis = distance(st, vec2(0.5, 0.5));\\n\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n\\n if(dis > 0.47) {\\n float perDis = 0.5 / 1.0;\\n float disNum;\\n float bl = .0;\\n for(int i = 0; i <= 9; i++) {\\n if(float(i) <= 1.0) {\\n disNum = perDis * float(i) - dis;\\n if(disNum > 0.0) {\\n if(disNum < perDis) {\\n bl = 1.0 - disNum / perDis;\\n } else if(disNum - perDis < perDis) {\\n bl = 1.0 - abs(1.0 - disNum / perDis);\\n }\\n float alpha = 1.0 - (0.5 - dis) / 0.03;\\n if(material.alpha < alpha) {\\n material.alpha = alpha;\\n }\\n }\\n }\\n }\\n }\\n return material;\\n}\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { EllipseRadarScanMaterialSource } from './source';\n\nexport const EllipseRadarScanMaterialType = 'EllipseRadarScan';\n\nexport interface EllipseRadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const EllipseRadarScanMaterialDefaultUniforms: EllipseRadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(EllipseRadarScanMaterialType, {\n fabric: {\n type: EllipseRadarScanMaterialType,\n source: EllipseRadarScanMaterialSource,\n uniforms: { ...EllipseRadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { EllipseRadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { EllipseRadarScanMaterialDefaultUniforms, EllipseRadarScanMaterialType } from './material';\n\n/**\n * `EllipseRadarScanMaterialProperty`构建参数\n */\nexport interface EllipseRadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class EllipseRadarScanMaterialProperty implements CesiumMaterialProperty<EllipseRadarScanMaterialUniforms> {\n constructor(options: EllipseRadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return EllipseRadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: EllipseRadarScanMaterialUniforms): EllipseRadarScanMaterialUniforms {\n const uniforms = EllipseRadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: EllipseRadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","export default \"uniform vec4 color;\\nuniform float speed;\\n\\n#define PI 3.14159265359\\n\\n\\n\\n\\nczm_material czm_getMaterial(czm_materialInput materialInput) {\\n czm_material material = czm_getDefaultMaterial(materialInput);\\n vec2 st = materialInput.st;\\n vec2 scrPt = st * 2.0 - 1.0;\\n float time = czm_frameNumber * speed / 1000.0;\\n mat2 rot;\\n float theta = -time * 1.0 * PI - 2.2;\\n float cosTheta, sinTheta;\\n cosTheta = cos(theta);\\n sinTheta = sin(theta);\\n rot[0][0] = cosTheta;\\n rot[0][1] = -sinTheta;\\n rot[1][0] = sinTheta;\\n rot[1][1] = cosTheta;\\n vec2 scrPtRot = rot * scrPt;\\n float angle = 1.0 - (atan(scrPtRot.y, scrPtRot.x) / 6.2831 + 0.5);\\n float falloff = length(scrPtRot);\\n material.alpha = pow(angle, 2.0) * falloff;\\n material.diffuse = color.rgb;\\n return material;\\n}\\ncircular\\n\"","import { addMaterialCache } from '@vesium/shared';\nimport { Color } from 'cesium';\nimport { RadarScanMaterialSource } from './source';\n\nexport const RadarScanMaterialType = 'RadarScan';\n\nexport interface RadarScanMaterialUniforms {\n color: Color;\n speed: number;\n}\n\nexport const RadarScanMaterialDefaultUniforms: RadarScanMaterialUniforms = {\n color: Color.YELLOW,\n speed: 10,\n};\n\n/**\n * 雷达扫描\n */\naddMaterialCache(RadarScanMaterialType, {\n fabric: {\n type: RadarScanMaterialType,\n source: RadarScanMaterialSource,\n uniforms: { ...RadarScanMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.color.alpha < 1 || uniforms.color.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { RadarScanMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { RadarScanMaterialDefaultUniforms, RadarScanMaterialType } from './material';\n\n/**\n * `RadarScanMaterialProperty`构建参数\n */\nexport interface RadarScanMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default Color.YELLOW\n */\n color?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n speed?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class RadarScanMaterialProperty implements CesiumMaterialProperty<RadarScanMaterialUniforms> {\n constructor(options: RadarScanMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'color', options.color);\n createPropertyField(this, 'speed', options.speed);\n }\n\n color?: MaybeProperty<Color | undefined>;\n\n speed?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.color)\n && isCesiumConstant(this.speed)\n );\n }\n\n getType(_time?: JulianDate): string {\n return RadarScanMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: RadarScanMaterialUniforms): RadarScanMaterialUniforms {\n const uniforms = RadarScanMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n color: toPropertyValue(this.color, time) ?? uniforms.color,\n speed: toPropertyValue(this.speed, time) ?? uniforms.speed,\n });\n return data;\n }\n\n equals(other?: RadarScanMaterialProperty): boolean {\n return (\n cesiumEquals(this.color, other?.color)\n && cesiumEquals(this.speed, other?.speed)\n );\n }\n}\n","import { addMaterialCache, getMaterialCache } from '@vesium/shared';\nimport { buildModuleUrl, Color, Material } from 'cesium';\n\nexport interface WaterRippleMaterialUniforms {\n baseWaterColor: Color;\n blendColor: Color;\n specularMap: string;\n normalMap: string;\n frequency: number;\n animationSpeed: number;\n amplitude: number;\n specularIntensity: number;\n fadeFactor: number;\n}\n\nexport const WaterRippleMaterialType = 'WaterRipple';\n\nexport const WaterRippleMaterialDefaultUniforms: WaterRippleMaterialUniforms = {\n baseWaterColor: new Color(0.2, 0.3, 0.6, 1),\n blendColor: new Color(0, 1, 0.699, 1),\n specularMap: Material.DefaultImageId,\n normalMap: buildModuleUrl('Assets/Textures/waterNormals.jpg'),\n frequency: 10000,\n animationSpeed: 0.01,\n amplitude: 1,\n specularIntensity: 0.5,\n fadeFactor: 1,\n};\n\nconst WaterRippleMaterial = getMaterialCache('Water')!;\n\n/**\n * 水波纹材质\n */\naddMaterialCache(WaterRippleMaterialType, {\n fabric: {\n type: WaterRippleMaterialType,\n source: WaterRippleMaterial.fabric.source,\n uniforms: { ...WaterRippleMaterialDefaultUniforms },\n },\n translucent(material) {\n const uniforms = material.uniforms;\n return uniforms.baseWaterColor.alpha < 1 || uniforms.blendColor.alpha < 1;\n },\n});\n","import type { CesiumMaterialProperty, MaybeProperty } from '@vesium/shared';\nimport type { Color, JulianDate } from 'cesium';\nimport type { WaterRippleMaterialUniforms } from './material';\n\nimport { cesiumEquals, createPropertyField, isCesiumConstant, toPropertyValue } from '@vesium/shared';\nimport { Event } from 'cesium';\nimport { WaterRippleMaterialDefaultUniforms, WaterRippleMaterialType } from './material';\n\n/**\n * `WaterRippleMaterialProperty`构建参数\n */\nexport interface WaterRippleMaterialPropertyConstructorOptions {\n /**\n * 基础水色\n * @default new Color(0.2, 0.3, 0.6, 1)\n */\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 混合色\n * @default new Color(0, 1, 0.699, 1)\n */\n blendColor?: MaybeProperty<Color | undefined>;\n\n /**\n * 镜面反射贴图\n * @default Material.DefaultImageId\n */\n specularMap?: MaybeProperty<string | undefined>;\n\n /**\n * 法线贴图\n * @default buildModuleUrl('Assets/Textures/waterNormals.jpg')\n */\n normalMap?: MaybeProperty<string | undefined>;\n\n /**\n * 频率\n * @default 10000\n */\n frequency?: MaybeProperty<number | undefined>;\n\n /**\n * 动画速度\n * @default 0.01\n */\n animationSpeed?: MaybeProperty<number | undefined>;\n\n /**\n * 波幅\n * @default 1\n */\n amplitude?: MaybeProperty<number | undefined>;\n\n /**\n * 镜面反射强度\n * @default 0.5\n */\n specularIntensity?: MaybeProperty<number | undefined>;\n\n /**\n * 衰落因子\n * @default 1\n */\n fadeFactor?: MaybeProperty<number | undefined>;\n}\n\n/**\n * 水波纹\n */\nexport class WaterRippleMaterialProperty implements CesiumMaterialProperty<WaterRippleMaterialUniforms> {\n constructor(options: WaterRippleMaterialPropertyConstructorOptions = {}) {\n createPropertyField(this, 'baseWaterColor', options.baseWaterColor);\n createPropertyField(this, 'blendColor', options.blendColor);\n createPropertyField(this, 'specularMap', options.specularMap);\n createPropertyField(this, 'normalMap', options.normalMap);\n createPropertyField(this, 'frequency', options.frequency);\n createPropertyField(this, 'animationSpeed', options.animationSpeed);\n createPropertyField(this, 'amplitude', options.amplitude);\n createPropertyField(this, 'specularIntensity', options.specularIntensity);\n createPropertyField(this, 'fadeFactor', options.fadeFactor);\n }\n\n baseWaterColor?: MaybeProperty<Color | undefined>;\n\n blendColor?: MaybeProperty<Color | undefined>;\n\n specularMap?: MaybeProperty<string | undefined>;\n\n normalMap?: MaybeProperty<string | undefined>;\n\n frequency?: MaybeProperty<number | undefined>;\n\n animationSpeed?: MaybeProperty<number | undefined>;\n\n amplitude?: MaybeProperty<number | undefined>;\n\n specularIntensity?: MaybeProperty<number | undefined>;\n\n fadeFactor?: MaybeProperty<number | undefined>;\n\n get isConstant(): boolean {\n return (\n isCesiumConstant(this.baseWaterColor)\n && isCesiumConstant(this.blendColor)\n && isCesiumConstant(this.specularMap)\n && isCesiumConstant(this.normalMap)\n && isCesiumConstant(this.frequency)\n && isCesiumConstant(this.animationSpeed)\n && isCesiumConstant(this.amplitude)\n && isCesiumConstant(this.specularIntensity)\n && isCesiumConstant(this.fadeFactor)\n );\n }\n\n getType(_time?: JulianDate): string {\n return WaterRippleMaterialType;\n }\n\n /**\n * @internal\n */\n private _definitionChanged = new Event();\n\n get definitionChanged(): Event<(scope: this, field: string, value: any, previous: any) => void> {\n return this._definitionChanged;\n }\n\n getValue(time: JulianDate, result?: WaterRippleMaterialUniforms): WaterRippleMaterialUniforms {\n const uniforms = WaterRippleMaterialDefaultUniforms;\n const data = Object.assign(result ?? {}, {\n baseWaterColor: toPropertyValue(this.baseWaterColor, time) ?? uniforms.baseWaterColor,\n blendColor: toPropertyValue(this.blendColor, time) ?? uniforms.blendColor,\n specularMap: toPropertyValue(this.specularMap, time) ?? uniforms.specularMap,\n normalMap: toPropertyValue(this.normalMap, time) ?? uniforms.normalMap,\n frequency: toPropertyValue(this.frequency, time) ?? uniforms.frequency,\n animationSpeed: toPropertyValue(this.animationSpeed, time) ?? uniforms.animationSpeed,\n amplitude: toPropertyValue(this.amplitude, time) ?? uniforms.amplitude,\n specularIntensity: toPropertyValue(this.specularIntensity, time) ?? uniforms.specularIntensity,\n fadeFactor: toPropertyValue(this.fadeFactor, time) ?? uniforms.fadeFactor,\n });\n return data;\n }\n\n equals(other?: WaterRippleMaterialProperty): boolean {\n return (\n cesiumEquals(this.baseWaterColor, other?.baseWaterColor)\n && cesiumEquals(this.blendColor, other?.blendColor)\n && cesiumEquals(this.specularMap, other?.specularMap)\n && cesiumEquals(this.normalMap, other?.normalMap)\n && cesiumEquals(this.frequency, other?.frequency)\n && cesiumEquals(this.animationSpeed, other?.animationSpeed)\n && cesiumEquals(this.amplitude, other?.amplitude)\n && cesiumEquals(this.specularIntensity, other?.specularIntensity)\n && cesiumEquals(this.fadeFactor, other?.fadeFactor)\n );\n }\n}\n"],"names":["isFunction","val","cesiumEquals","left","right","isCesiumConstant","value","defined","getMaterialCache","type","Material","addMaterialCache","material","isProperty","toPropertyValue","time","toProperty","isConstant","CallbackProperty","ConstantProperty","createPropertyField","scope","field","maybeProperty","readonly","removeOwnerListener","ownerBinding","_a","privateField","property","previous","EllipseRadarScanMaterialSource","EllipseRadarScanMaterialType","EllipseRadarScanMaterialDefaultUniforms","Color","uniforms","EllipseRadarScanMaterialProperty","options","__publicField","Event","_time","result","other","RadarScanMaterialSource","RadarScanMaterialType","RadarScanMaterialDefaultUniforms","RadarScanMaterialProperty","WaterRippleMaterialType","WaterRippleMaterialDefaultUniforms","buildModuleUrl","WaterRippleMaterial","WaterRippleMaterialProperty"],"mappings":"iSAYO,SAASA,EAA4BC,EAAoB,CAC9D,OAAO,OAAOA,GAAQ,UACxB,CCAgB,SAAAC,EAAaC,EAAWC,EAAqB,CAC3D,OAAOD,IAASC,GAAUJ,EAAiBG,GAAA,MAAM,GAAKA,EAAK,OAAOC,CAAK,GAAOJ,EAAkBI,GAAA,MAAM,GAAKA,EAAM,OAAOD,CAAI,CAC9H,CAOO,SAASE,EAAiBC,EAA+B,CAC9D,MAAO,CAACC,EAAQD,CAAK,GAAK,CAAC,CAACA,EAAM,UACpC,CC+DO,SAASE,EAA2DC,EAA6B,CAC9F,OAAAC,EAAiB,eAAe,YAAYD,CAAI,CAC1D,CAKgB,SAAAE,EAAiBF,EAAcG,EAAuD,CACpG,OAAQF,EAAiB,eAAe,YAAYD,EAAMG,CAAQ,CACpE,CCrFO,SAASC,EAAWP,EAA+B,CACjD,OAAAA,GAASN,EAAWM,EAAM,QAAQ,CAC3C,CAYgB,SAAAQ,EAA6BR,EAAyBS,EAAsB,CAC1F,OAAOF,EAAWP,CAAK,EAAIA,EAAM,SAASS,CAAW,EAAIT,CAC3D,CAWgB,SAAAU,EAAcV,EAAkCW,EAAa,GAAiB,CAC5F,OAAOJ,EAAWP,CAAK,EACnBA,EACAN,EAAWM,CAAK,EACb,IAAIY,EAAiBZ,EAAOW,CAAU,EACvC,IAAIE,EAAiBb,CAAK,CAClC,CAUO,SAASc,EACdC,EACAC,EACAC,EACAC,EACA,CACI,IAAAC,EAGE,MAAAC,EAAgBpB,GAAe,OACbmB,IAAA,EAClBlB,EAAeD,GAAA,iBAAiB,IACZmB,GAAAE,EAAOrB,GAAA,oBAAP,KAA0B,OAAAqB,EAAA,iBAAiB,IAAM,CACrEN,EAAM,kBAAkB,WAAWA,EAAOC,EAAOhB,EAAOA,CAAK,CAAA,CAAA,EAGnE,EAEMsB,EAAe,IAAIN,CAAK,GACxBO,EAAWb,EAAWO,CAAa,EACzCF,EAAMO,CAAY,EAAIC,EACtBH,EAAaG,CAAQ,EAUZ,OAAA,eAAeR,EAAOC,EAAO,CAClC,KAAM,CACJ,OAAOD,EAAMO,CAAY,CAC3B,EACA,IAAItB,EAAO,CACH,MAAAwB,EAAWT,EAAMO,CAAY,EAC/BP,EAAMO,CAAY,IAAMtB,IAC1Be,EAAMO,CAAY,EAAItB,EACtBoB,EAAapB,CAAK,EACdC,EAAQc,EAAM,iBAAiB,GACjCA,EAAM,kBAAkB,WAAWA,EAAOC,EAAOhB,EAAOwB,CAAQ,EAEpE,CACF,CACD,CAEL,CCtGA,MAAeC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECIFC,EAA+B,mBAO/BC,EAA4E,CACvF,MAAOC,EAAM,OACb,MAAO,EACT,EAKAvB,EAAiBqB,EAA8B,CAC7C,OAAQ,CACN,KAAMA,EACN,OAAQD,EACR,SAAU,CAAE,GAAGE,CAAwC,CACzD,EACA,YAAYrB,EAAU,CACpB,MAAMuB,EAAWvB,EAAS,SAC1B,OAAOuB,EAAS,MAAM,MAAQ,GAAKA,EAAS,MAAM,MAAQ,CAAA,CAE9D,CAAC,ECDM,MAAMC,CAAqG,CAChH,YAAYC,EAA8D,GAAI,CAK9EC,EAAA,KAAA,OAAA,EAEAA,EAAA,KAAA,OAAA,EAgBQA,EAAA,KAAA,qBAAqB,IAAIC,CAAM,EAtBjBnB,EAAA,KAAM,QAASiB,EAAQ,KAAK,EAC5BjB,EAAA,KAAM,QAASiB,EAAQ,KAAK,CAAA,CAOlD,IAAI,YAAsB,CACxB,OACEhC,EAAiB,KAAK,KAAK,GACxBA,EAAiB,KAAK,KAAK,CAAA,CAIlC,QAAQmC,EAA4B,CAC3B,OAAAR,CAAA,CAQT,IAAI,mBAA4F,CAC9F,OAAO,KAAK,kBAAA,CAGd,SAASjB,EAAkB0B,EAA6E,CACtG,MAAMN,EAAWF,EAKV,OAJM,OAAO,OAAOQ,GAAU,CAAA,EAAI,CACvC,MAAO3B,EAAgB,KAAK,MAAOC,CAAI,GAAKoB,EAAS,MACrD,MAAOrB,EAAgB,KAAK,MAAOC,CAAI,GAAKoB,EAAS,KAAA,CACtD,CACM,CAGT,OAAOO,EAAmD,CAEtD,OAAAxC,EAAa,KAAK,MAAcwC,GAAA,KAAK,GAClCxC,EAAa,KAAK,MAAOwC,GAAO,KAAK,CAAA,CAG9C,CCzEA,MAAeC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECIFC,EAAwB,YAOxBC,EAA8D,CACzE,MAAOX,EAAM,OACb,MAAO,EACT,EAKAvB,EAAiBiC,EAAuB,CACtC,OAAQ,CACN,KAAMA,EACN,OAAQD,EACR,SAAU,CAAE,GAAGE,CAAiC,CAClD,EACA,YAAYjC,EAAU,CACpB,MAAMuB,EAAWvB,EAAS,SAC1B,OAAOuB,EAAS,MAAM,MAAQ,GAAKA,EAAS,MAAM,MAAQ,CAAA,CAE9D,CAAC,ECDM,MAAMW,CAAuF,CAClG,YAAYT,EAAuD,GAAI,CAKvEC,EAAA,KAAA,OAAA,EAEAA,EAAA,KAAA,OAAA,EAgBQA,EAAA,KAAA,qBAAqB,IAAIC,CAAM,EAtBjBnB,EAAA,KAAM,QAASiB,EAAQ,KAAK,EAC5BjB,EAAA,KAAM,QAASiB,EAAQ,KAAK,CAAA,CAOlD,IAAI,YAAsB,CACxB,OACEhC,EAAiB,KAAK,KAAK,GACxBA,EAAiB,KAAK,KAAK,CAAA,CAIlC,QAAQmC,EAA4B,CAC3B,OAAAI,CAAA,CAQT,IAAI,mBAA4F,CAC9F,OAAO,KAAK,kBAAA,CAGd,SAAS7B,EAAkB0B,EAA+D,CACxF,MAAMN,EAAWU,EAKV,OAJM,OAAO,OAAOJ,GAAU,CAAA,EAAI,CACvC,MAAO3B,EAAgB,KAAK,MAAOC,CAAI,GAAKoB,EAAS,MACrD,MAAOrB,EAAgB,KAAK,MAAOC,CAAI,GAAKoB,EAAS,KAAA,CACtD,CACM,CAGT,OAAOO,EAA4C,CAE/C,OAAAxC,EAAa,KAAK,MAAcwC,GAAA,KAAK,GAClCxC,EAAa,KAAK,MAAOwC,GAAO,KAAK,CAAA,CAG9C,CC1DO,MAAMK,EAA0B,cAE1BC,EAAkE,CAC7E,eAAgB,IAAId,EAAM,GAAK,GAAK,GAAK,CAAC,EAC1C,WAAY,IAAIA,EAAM,EAAG,EAAG,KAAO,CAAC,EACpC,YAAaxB,EAAS,eACtB,UAAWuC,EAAe,kCAAkC,EAC5D,UAAW,IACX,eAAgB,IAChB,UAAW,EACX,kBAAmB,GACnB,WAAY,CACd,EAEMC,EAAsB1C,EAAiB,OAAO,EAKpDG,EAAiBoC,EAAyB,CACxC,OAAQ,CACN,KAAMA,EACN,OAAQG,EAAoB,OAAO,OACnC,SAAU,CAAE,GAAGF,CAAmC,CACpD,EACA,YAAYpC,EAAU,CACpB,MAAMuB,EAAWvB,EAAS,SAC1B,OAAOuB,EAAS,eAAe,MAAQ,GAAKA,EAAS,WAAW,MAAQ,CAAA,CAE5E,CAAC,EC0BM,MAAMgB,CAA2F,CACtG,YAAYd,EAAyD,GAAI,CAYzEC,EAAA,KAAA,gBAAA,EAEAA,EAAA,KAAA,YAAA,EAEAA,EAAA,KAAA,aAAA,EAEAA,EAAA,KAAA,WAAA,EAEAA,EAAA,KAAA,WAAA,EAEAA,EAAA,KAAA,gBAAA,EAEAA,EAAA,KAAA,WAAA,EAEAA,EAAA,KAAA,mBAAA,EAEAA,EAAA,KAAA,YAAA,EAuBQA,EAAA,KAAA,qBAAqB,IAAIC,CAAM,EAlDjBnB,EAAA,KAAM,iBAAkBiB,EAAQ,cAAc,EAC9CjB,EAAA,KAAM,aAAciB,EAAQ,UAAU,EACtCjB,EAAA,KAAM,cAAeiB,EAAQ,WAAW,EACxCjB,EAAA,KAAM,YAAaiB,EAAQ,SAAS,EACpCjB,EAAA,KAAM,YAAaiB,EAAQ,SAAS,EACpCjB,EAAA,KAAM,iBAAkBiB,EAAQ,cAAc,EAC9CjB,EAAA,KAAM,YAAaiB,EAAQ,SAAS,EACpCjB,EAAA,KAAM,oBAAqBiB,EAAQ,iBAAiB,EACpDjB,EAAA,KAAM,aAAciB,EAAQ,UAAU,CAAA,CAqB5D,IAAI,YAAsB,CACxB,OACEhC,EAAiB,KAAK,cAAc,GACjCA,EAAiB,KAAK,UAAU,GAChCA,EAAiB,KAAK,WAAW,GACjCA,EAAiB,KAAK,SAAS,GAC/BA,EAAiB,KAAK,SAAS,GAC/BA,EAAiB,KAAK,cAAc,GACpCA,EAAiB,KAAK,SAAS,GAC/BA,EAAiB,KAAK,iBAAiB,GACvCA,EAAiB,KAAK,UAAU,CAAA,CAIvC,QAAQmC,EAA4B,CAC3B,OAAAO,CAAA,CAQT,IAAI,mBAA4F,CAC9F,OAAO,KAAK,kBAAA,CAGd,SAAShC,EAAkB0B,EAAmE,CAC5F,MAAMN,EAAWa,EAYV,OAXM,OAAO,OAAOP,GAAU,CAAA,EAAI,CACvC,eAAgB3B,EAAgB,KAAK,eAAgBC,CAAI,GAAKoB,EAAS,eACvE,WAAYrB,EAAgB,KAAK,WAAYC,CAAI,GAAKoB,EAAS,WAC/D,YAAarB,EAAgB,KAAK,YAAaC,CAAI,GAAKoB,EAAS,YACjE,UAAWrB,EAAgB,KAAK,UAAWC,CAAI,GAAKoB,EAAS,UAC7D,UAAWrB,EAAgB,KAAK,UAAWC,CAAI,GAAKoB,EAAS,UAC7D,eAAgBrB,EAAgB,KAAK,eAAgBC,CAAI,GAAKoB,EAAS,eACvE,UAAWrB,EAAgB,KAAK,UAAWC,CAAI,GAAKoB,EAAS,UAC7D,kBAAmBrB,EAAgB,KAAK,kBAAmBC,CAAI,GAAKoB,EAAS,kBAC7E,WAAYrB,EAAgB,KAAK,WAAYC,CAAI,GAAKoB,EAAS,UAAA,CAChE,CACM,CAGT,OAAOO,EAA8C,CAEjD,OAAAxC,EAAa,KAAK,eAAuBwC,GAAA,cAAc,GACpDxC,EAAa,KAAK,WAAYwC,GAAO,UAAU,GAC/CxC,EAAa,KAAK,YAAoBwC,GAAA,WAAW,GACjDxC,EAAa,KAAK,UAAWwC,GAAO,SAAS,GAC7CxC,EAAa,KAAK,UAAkBwC,GAAA,SAAS,GAC7CxC,EAAa,KAAK,kBAAuB,cAAc,GACvDA,EAAa,KAAK,UAAWwC,GAAO,SAAS,GAC7CxC,EAAa,KAAK,kBAA0BwC,GAAA,iBAAiB,GAC7DxC,EAAa,KAAK,WAAYwC,GAAO,UAAU,CAAA,CAGxD"}