@antv/l7-layers 2.6.4 → 2.6.8
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.
- package/es/core/BaseLayer.js +5 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/BaseModel.d.ts +4 -0
- package/es/core/BaseModel.js +19 -2
- package/es/core/BaseModel.js.map +1 -1
- package/es/index.d.ts +2 -1
- package/es/index.js +2 -1
- package/es/index.js.map +1 -1
- package/es/line/models/arc.js +6 -4
- package/es/line/models/arc.js.map +1 -1
- package/es/point/models/extrude.js +1 -1
- package/es/point/models/extrude.js.map +1 -1
- package/es/polygon/models/extrude.js +8 -2
- package/es/polygon/models/extrude.js.map +1 -1
- package/es/utils/dataMappingStyle.d.ts +1 -0
- package/es/utils/dataMappingStyle.js +4 -0
- package/es/utils/dataMappingStyle.js.map +1 -1
- package/es/wind/index.d.ts +36 -0
- package/es/wind/index.js +91 -0
- package/es/wind/index.js.map +1 -0
- package/es/wind/models/index.d.ts +5 -0
- package/es/wind/models/index.js +6 -0
- package/es/wind/models/index.js.map +1 -0
- package/es/wind/models/utils.d.ts +19 -0
- package/es/wind/models/utils.js +201 -0
- package/es/wind/models/utils.js.map +1 -0
- package/es/wind/models/wind.d.ts +31 -0
- package/es/wind/models/wind.js +298 -0
- package/es/wind/models/wind.js.map +1 -0
- package/es/wind/models/windRender.d.ts +104 -0
- package/es/wind/models/windRender.js +346 -0
- package/es/wind/models/windRender.js.map +1 -0
- package/es/wind/models/windShader.d.ts +12 -0
- package/es/wind/models/windShader.js +7 -0
- package/es/wind/models/windShader.js.map +1 -0
- package/lib/core/BaseLayer.js +5 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/BaseModel.js +19 -2
- package/lib/core/BaseModel.js.map +1 -1
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -1
- package/lib/line/models/arc.js +6 -4
- package/lib/line/models/arc.js.map +1 -1
- package/lib/point/models/extrude.js +1 -1
- package/lib/point/models/extrude.js.map +1 -1
- package/lib/polygon/models/extrude.js +8 -2
- package/lib/polygon/models/extrude.js.map +1 -1
- package/lib/utils/dataMappingStyle.js +4 -0
- package/lib/utils/dataMappingStyle.js.map +1 -1
- package/lib/wind/index.js +104 -0
- package/lib/wind/index.js.map +1 -0
- package/lib/wind/models/index.js +17 -0
- package/lib/wind/models/index.js.map +1 -0
- package/lib/wind/models/utils.js +228 -0
- package/lib/wind/models/utils.js.map +1 -0
- package/lib/wind/models/wind.js +310 -0
- package/lib/wind/models/wind.js.map +1 -0
- package/lib/wind/models/windRender.js +340 -0
- package/lib/wind/models/windRender.js.map +1 -0
- package/lib/wind/models/windShader.js +19 -0
- package/lib/wind/models/windShader.js.map +1 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/line/models/arc.ts"],"names":["lineStyleObj","solid","dash","ArcModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","forward","lineTexture","iconStep","segmentNumber","thetaOffset","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","push","useLinearColor","sourceColorArr","targetColorArr","getDirty","bind","u_thetaOffset","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_blur","u_lineDir","u_texture","u_line_texture","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_arc2d_vert","fragmentShader","line_arc_frag","triangulation","LineArcTriangulation","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineArcTriangulation } from '../../core/triangulation';\nimport line_arc_frag from '../shaders/line_arc_frag.glsl';\nimport line_arc2d_vert from '../shaders/line_arc_vert.glsl';\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class ArcModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5],\n forward = true,\n lineTexture = false,\n iconStep = 100,\n segmentNumber = 30,\n thetaOffset = 0.314,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n return {\n u_thetaOffset: thetaOffset,\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n segmentNumber,\n u_line_type: lineStyleObj[lineType || 'solid'],\n u_dash_array: dashArray,\n u_blur: 0.9,\n u_lineDir: forward ? 1 : -1,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n // console.log('animateOption', animateOption)\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n segmentNumber = 30,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'arc2dline',\n vertexShader: line_arc2d_vert,\n fragmentShader: line_arc_frag,\n triangulation: LineArcTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n segmentNumber,\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'instance', // 弧线起始点信息\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Instance',\n buffer: {\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 4,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4], vertex[5], vertex[6]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"arc.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/line/models/arc.ts"],"names":["lineStyleObj","solid","dash","ArcModel","createTexture2D","rendererService","texture","update","data","iconService","getCanvas","layer","render","mag","gl","NEAREST","min","premultiplyAlpha","width","height","canvasHeight","getLayerConfig","opacity","sourceColor","targetColor","textureBlend","lineType","dashArray","forward","lineTexture","iconStep","segmentNumber","thetaOffset","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","rowCount","dataTexture","length","flipY","format","LUMINANCE","type","FLOAT","push","useLinearColor","sourceColorArr","targetColorArr","getDirty","bind","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_thetaOffset","u_opacity","u_textureBlend","u_line_type","u_dash_array","u_blur","u_lineDir","u_texture","u_line_texture","u_icon_step","u_textSize","u_linearColor","u_sourceColor","u_targetColor","animateOption","u_aimate","animateOption2Array","u_time","getLayerAnimateTime","updateTexture","on","buildModels","destroy","off","buildLayerModel","moduleName","vertexShader","line_arc2d_vert","fragmentShader","line_arc_frag","triangulation","LineArcTriangulation","depth","enable","blend","getBlend","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","feature","featureIdx","vertex","attributeIdx","Array","isArray","STATIC_DRAW","iconMap","getIconMap","x","y","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAnimateOption,\n IEncodeFeature,\n ILayerConfig,\n IModel,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\n\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel from '../../core/BaseModel';\nimport { ILineLayerStyleOptions, lineStyleType } from '../../core/interface';\nimport { LineArcTriangulation } from '../../core/triangulation';\nimport line_arc_frag from '../shaders/line_arc_frag.glsl';\nimport line_arc2d_vert from '../shaders/line_arc_vert.glsl';\nconst lineStyleObj: { [key: string]: number } = {\n solid: 0.0,\n dash: 1.0,\n};\nexport default class ArcModel extends BaseModel {\n protected texture: ITexture2D;\n public getUninforms(): IModelUniform {\n const {\n opacity,\n sourceColor,\n targetColor,\n textureBlend = 'normal',\n lineType = 'solid',\n dashArray = [10, 5],\n forward = true,\n lineTexture = false,\n iconStep = 100,\n segmentNumber = 30,\n thetaOffset = 0.314,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({ opacity, thetaOffset })\n ) {\n this.judgeStyleAttributes({ opacity, thetaOffset });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n if (dashArray.length === 2) {\n dashArray.push(0, 0);\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n if (this.rendererService.getDirty()) {\n this.texture.bind();\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_thetaOffset: isNumber(thetaOffset) ? thetaOffset : 0.0,\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n u_textureBlend: textureBlend === 'normal' ? 0.0 : 1.0,\n segmentNumber,\n u_line_type: lineStyleObj[lineType || 'solid'],\n u_dash_array: dashArray,\n u_blur: 0.9,\n u_lineDir: forward ? 1 : -1,\n\n // 纹理支持参数\n u_texture: this.texture, // 贴图\n u_line_texture: lineTexture ? 1.0 : 0.0, // 传入线的标识\n u_icon_step: iconStep,\n u_textSize: [1024, this.iconService.canvasHeight || 128],\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n };\n }\n\n public getAnimateUniforms(): IModelUniform {\n const { animateOption } = this.layer.getLayerConfig() as ILayerConfig;\n // console.log('animateOption', animateOption)\n return {\n u_aimate: this.animateOption2Array(animateOption as IAnimateOption),\n u_time: this.layer.getLayerAnimateTime(),\n };\n }\n\n public initModels(): IModel[] {\n this.updateTexture();\n this.iconService.on('imageUpdate', this.updateTexture);\n\n return this.buildModels();\n }\n\n public clearModels() {\n this.texture?.destroy();\n this.dataTexture?.destroy();\n this.iconService.off('imageUpdate', this.updateTexture);\n }\n\n public buildModels(): IModel[] {\n const {\n segmentNumber = 30,\n } = this.layer.getLayerConfig() as ILineLayerStyleOptions;\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'arc2dline',\n vertexShader: line_arc2d_vert,\n fragmentShader: line_arc_frag,\n triangulation: LineArcTriangulation,\n depth: { enable: false },\n blend: this.getBlend(),\n segmentNumber,\n }),\n ];\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 1 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'instance', // 弧线起始点信息\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Instance',\n buffer: {\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 4,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n return [vertex[3], vertex[4], vertex[5], vertex[6]];\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_iconMapUV',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 2,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const iconMap = this.iconService.getIconMap();\n const { texture } = feature;\n const { x, y } = iconMap[texture as string] || { x: 0, y: 0 };\n return [x, y];\n },\n },\n });\n }\n\n private updateTexture = () => {\n const { createTexture2D } = this.rendererService;\n if (this.texture) {\n this.texture.update({\n data: this.iconService.getCanvas(),\n });\n this.layer.render();\n return;\n }\n this.texture = createTexture2D({\n data: this.iconService.getCanvas(),\n mag: gl.NEAREST,\n min: gl.NEAREST,\n premultiplyAlpha: false,\n width: 1024,\n height: this.iconService.canvasHeight || 128,\n });\n };\n}\n"],"file":"arc.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","sourceColor","targetColor","opacityLinear","enable","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","Number","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","BACK","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude_vert.glsl';\ninterface IPointLayerStyleOptions {\n depth: boolean;\n opacity: styleSingle;\n offsets: styleOffset;\n\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n\n lightEnable: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n return {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity || 1.0,\n // u_offsets: offsets || [0, 0],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n depth = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: gl.BACK,\n },\n depth: {\n enable: depth,\n },\n // primitive: gl.POINTS,\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\n }\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/point/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","sourceColor","targetColor","opacityLinear","enable","dir","lightEnable","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","useLinearColor","sourceColorArr","targetColorArr","u_globel","mapService","version","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","u_linearColor","u_sourceColor","u_targetColor","u_opacitylinear","Number","u_opacitylinear_dir","u_lightEnable","buildModels","depth","buildLayerModel","moduleName","vertexShader","pointExtrudeVert","fragmentShader","pointExtrudeFrag","triangulation","PointExtrudeTriangulation","blend","getBlend","cull","face","FRONT","BACK","destroy","isGlobel","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","buffersize","Array","isArray","STATIC_DRAW","normal","coordinates","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleOffset, styleSingle } from '../../core/BaseModel';\nimport { PointExtrudeTriangulation } from '../../core/triangulation';\nimport { lglt2xyz } from '../../earth/utils';\nimport { calculateCentroid } from '../../utils/geo';\nimport pointExtrudeFrag from '../shaders/extrude_frag.glsl';\nimport pointExtrudeVert from '../shaders/extrude_vert.glsl';\ninterface IPointLayerStyleOptions {\n depth: boolean;\n opacity: styleSingle;\n offsets: styleOffset;\n\n sourceColor?: string; // 可选参数、设置渐变色的起始颜色(all)\n targetColor?: string; // 可选参数、设置渐变色的终点颜色(all)\n opacityLinear?: {\n enable: boolean;\n dir: string;\n };\n\n lightEnable: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n\n sourceColor,\n targetColor,\n\n opacityLinear = {\n enable: false,\n dir: 'up',\n },\n\n lightEnable = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n if (\n this.dataTextureTest &&\n this.dataTextureNeedUpdate({\n opacity,\n })\n ) {\n this.judgeStyleAttributes({\n opacity,\n });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n // 转化渐变色\n let useLinearColor = 0; // 默认不生效\n let sourceColorArr = [0, 0, 0, 0];\n let targetColorArr = [0, 0, 0, 0];\n if (sourceColor && targetColor) {\n sourceColorArr = rgb2arr(sourceColor);\n targetColorArr = rgb2arr(targetColor);\n useLinearColor = 1;\n }\n\n return {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n u_globel: this.mapService.version === 'GLOBEL' ? 1 : 0,\n\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n // u_opacity: opacity || 1.0,\n // u_offsets: offsets || [0, 0],\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n\n // 渐变色支持参数\n u_linearColor: useLinearColor,\n u_sourceColor: sourceColorArr,\n u_targetColor: targetColorArr,\n\n // 透明度渐变\n u_opacitylinear: Number(opacityLinear.enable),\n u_opacitylinear_dir: opacityLinear.dir === 'up' ? 1.0 : 0.0,\n\n // 光照计算开关\n u_lightEnable: Number(lightEnable),\n };\n }\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n // GAODE1.x GAODE2.x MAPBOX\n const {\n depth = true,\n } = this.layer.getLayerConfig() as IPointLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'pointExtrude2',\n vertexShader: pointExtrudeVert,\n fragmentShader: pointExtrudeFrag,\n triangulation: PointExtrudeTriangulation,\n blend: this.getBlend(),\n cull: {\n enable: true,\n face: this.mapService.version === 'MAPBOX' ? gl.FRONT : gl.BACK,\n },\n depth: {\n enable: depth,\n },\n // primitive: gl.POINTS,\n }),\n ];\n }\n public clearModels() {\n this.dataTexture?.destroy();\n }\n protected registerBuiltinAttributes() {\n // TODO: 判断当前的点图层的模型是普通地图模式还是地球模式\n const isGlobel = this.mapService.version === 'GLOBEL';\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size } = feature;\n if (size) {\n let buffersize: number[] = [];\n if (Array.isArray(size)) {\n buffersize =\n size.length === 2 ? [size[0], size[0], size[1]] : size;\n }\n if (!Array.isArray(size)) {\n buffersize = [size, size, size];\n }\n return buffersize;\n } else {\n return [2, 2, 2];\n }\n },\n },\n });\n\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n this.styleAttributeService.registerStyleAttribute({\n name: 'pos',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Pos',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (feature: IEncodeFeature, featureIdx: number) => {\n const coordinates = calculateCentroid(feature.coordinates);\n if (isGlobel) {\n // TODO: 在地球模式下需要将传入 shader 的经纬度转化成对应的 xyz 坐标\n return lglt2xyz([coordinates[0], coordinates[1]]) as [\n number,\n number,\n number,\n ];\n } else {\n return [coordinates[0], coordinates[1], 0];\n }\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
|
|
@@ -30,6 +30,8 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
|
|
|
30
30
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
31
|
|
|
32
32
|
var polygonExtrudeFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
33
|
+
var polygonExtrudePickLightFrag = "uniform float u_opacity: 1.0;\nvarying vec4 v_Color;\nvarying mat4 styleMappingMat; // \u4F20\u9012\u4ECE\u7247\u5143\u4E2D\u4F20\u9012\u7684\u6620\u5C04\u6570\u636E\n#pragma include \"picking\"\nvarying float v_lightWeight;\n\nvoid main() {\n float opacity = styleMappingMat[0][0];\n gl_FragColor = v_Color;\n // gl_FragColor.a *= u_opacity;\n gl_FragColor.a *= opacity;\n gl_FragColor = filterColorWithLight(gl_FragColor, v_lightWeight);\n}\n";
|
|
34
|
+
var polygonExtrudePickLightVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvarying float v_lightWeight;\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n v_lightWeight = lightWeight;\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
33
35
|
var polygonExtrudeVert = "precision highp float;\n\n#define ambientRatio 0.5\n#define diffuseRatio 0.3\n#define specularRatio 0.2\n\nattribute vec4 a_Color;\nattribute vec3 a_Position;\nattribute vec3 a_Normal;\nattribute float a_Size;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nuniform float u_opacity: 1.0;\nvarying mat4 styleMappingMat; // \u7528\u4E8E\u5C06\u5728\u9876\u70B9\u7740\u8272\u5668\u4E2D\u8BA1\u7B97\u597D\u7684\u6837\u5F0F\u503C\u4F20\u9012\u7ED9\u7247\u5143\n\n#pragma include \"styleMapping\"\n#pragma include \"styleMappingCalOpacity\"\n\n#pragma include \"projection\"\n#pragma include \"light\"\n#pragma include \"picking\"\n\nvoid main() {\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n styleMappingMat = mat4(\n 0.0, 0.0, 0.0, 0.0, // opacity - strokeOpacity - strokeWidth - empty\n 0.0, 0.0, 0.0, 0.0, // strokeR - strokeG - strokeB - strokeA\n 0.0, 0.0, 0.0, 0.0, // offsets[0] - offsets[1]\n 0.0, 0.0, 0.0, 0.0\n );\n\n float rowCount = u_cellTypeLayout[0][0]; // \u5F53\u524D\u7684\u6570\u636E\u7EB9\u7406\u6709\u51E0\u884C\n float columnCount = u_cellTypeLayout[0][1]; // \u5F53\u770B\u5230\u6570\u636E\u7EB9\u7406\u6709\u51E0\u5217\n float columnWidth = 1.0/columnCount; // \u5217\u5BBD\n float rowHeight = 1.0/rowCount; // \u884C\u9AD8\n float cellCount = calCellCount(); // opacity - strokeOpacity - strokeWidth - stroke - offsets\n float id = a_vertexId; // \u7B2Cn\u4E2A\u9876\u70B9\n float cellCurrentRow = floor(id * cellCount / columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u884C\n float cellCurrentColumn = mod(id * cellCount, columnCount) + 1.0; // \u8D77\u59CB\u70B9\u5728\u7B2C\u51E0\u5217\n \n // cell \u56FA\u5B9A\u987A\u5E8F opacity -> strokeOpacity -> strokeWidth -> stroke ... \n // \u6309\u987A\u5E8F\u4ECE cell \u4E2D\u53D6\u503C\u3001\u82E5\u6CA1\u6709\u5219\u81EA\u52A8\u5F80\u4E0B\u53D6\u503C\n float textureOffset = 0.0; // \u5728 cell \u4E2D\u53D6\u503C\u7684\u504F\u79FB\u91CF\n\n vec2 opacityAndOffset = calOpacityAndOffset(cellCurrentRow, cellCurrentColumn, columnCount, textureOffset, columnWidth, rowHeight);\n styleMappingMat[0][0] = opacityAndOffset.r;\n textureOffset = opacityAndOffset.g;\n // cal style mapping - \u6570\u636E\u7EB9\u7406\u6620\u5C04\u90E8\u5206\u7684\u8BA1\u7B97\n vec4 pos = vec4(a_Position.xy, a_Position.z * a_Size, 1.0);\n vec4 project_pos = project_position(pos);\n\n // gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xyz * vec3(1.0, 1.0, -1.0), 1.0));\n gl_Position = u_Mvp * (vec4(project_pos.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n\n float lightWeight = calc_lighting(pos);\n // v_Color = a_Color;\n v_Color = vec4(a_Color.rgb * lightWeight, a_Color.w);\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
34
36
|
|
|
35
37
|
var ExtrudeModel = function (_BaseModel) {
|
|
@@ -94,10 +96,14 @@ var ExtrudeModel = function (_BaseModel) {
|
|
|
94
96
|
}, {
|
|
95
97
|
key: "buildModels",
|
|
96
98
|
value: function buildModels() {
|
|
99
|
+
var _ref2 = this.layer.getLayerConfig(),
|
|
100
|
+
_ref2$pickLight = _ref2.pickLight,
|
|
101
|
+
pickLight = _ref2$pickLight === void 0 ? false : _ref2$pickLight;
|
|
102
|
+
|
|
97
103
|
return [this.layer.buildLayerModel({
|
|
98
104
|
moduleName: 'polygonExtrude',
|
|
99
|
-
vertexShader: polygonExtrudeVert,
|
|
100
|
-
fragmentShader: polygonExtrudeFrag,
|
|
105
|
+
vertexShader: pickLight ? polygonExtrudePickLightVert : polygonExtrudeVert,
|
|
106
|
+
fragmentShader: pickLight ? polygonExtrudePickLightFrag : polygonExtrudeFrag,
|
|
101
107
|
triangulation: _triangulation.PolygonExtrudeTriangulation
|
|
102
108
|
})];
|
|
103
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","buildLayerModel","moduleName","vertexShader","polygonExtrudeVert","fragmentShader","polygonExtrudeFrag","triangulation","PolygonExtrudeTriangulation","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../../src/polygon/models/extrude.ts"],"names":["ExtrudeModel","layer","getLayerConfig","opacity","dataTextureTest","dataTextureNeedUpdate","judgeStyleAttributes","encodeData","getEncodedData","calDataFrame","cellLength","cellProperties","data","width","height","rowCount","dataTexture","length","createTexture2D","flipY","format","gl","LUMINANCE","type","FLOAT","u_dataTexture","u_cellTypeLayout","getCellTypeLayout","u_opacity","buildModels","pickLight","buildLayerModel","moduleName","vertexShader","polygonExtrudePickLightVert","polygonExtrudeVert","fragmentShader","polygonExtrudePickLightFrag","polygonExtrudeFrag","triangulation","PolygonExtrudeTriangulation","destroy","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","STATIC_DRAW","size","update","feature","featureIdx","vertex","attributeIdx","normal","DYNAMIC_DRAW","Array","isArray","BaseModel"],"mappings":"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","sourcesContent":["import { AttributeType, gl, IEncodeFeature, IModel } from '@antv/l7-core';\nimport { isNumber } from 'lodash';\nimport BaseModel, { styleSingle } from '../../core/BaseModel';\nimport { PolygonExtrudeTriangulation } from '../../core/triangulation';\nimport polygonExtrudeFrag from '../shaders/polygon_extrude_frag.glsl';\nimport polygonExtrudePickLightFrag from '../shaders/polygon_extrude_picklight_frag.glsl';\nimport polygonExtrudePickLightVert from '../shaders/polygon_extrude_picklight_vert.glsl';\nimport polygonExtrudeVert from '../shaders/polygon_extrude_vert.glsl';\n\ninterface IPolygonLayerStyleOptions {\n opacity: styleSingle;\n pickLight: boolean;\n}\nexport default class ExtrudeModel extends BaseModel {\n public getUninforms() {\n const {\n opacity = 1,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n\n if (this.dataTextureTest && this.dataTextureNeedUpdate({ opacity })) {\n this.judgeStyleAttributes({ opacity });\n const encodeData = this.layer.getEncodedData();\n const { data, width, height } = this.calDataFrame(\n this.cellLength,\n encodeData,\n this.cellProperties,\n );\n this.rowCount = height; // 当前数据纹理有多少行\n\n this.dataTexture =\n this.cellLength > 0 && data.length > 0\n ? this.createTexture2D({\n flipY: true,\n data,\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width,\n height,\n })\n : this.createTexture2D({\n flipY: true,\n data: [1],\n format: gl.LUMINANCE,\n type: gl.FLOAT,\n width: 1,\n height: 1,\n });\n }\n\n return {\n u_dataTexture: this.dataTexture, // 数据纹理 - 有数据映射的时候纹理中带数据,若没有任何数据映射时纹理是 [1]\n u_cellTypeLayout: this.getCellTypeLayout(),\n\n u_opacity: isNumber(opacity) ? opacity : 1.0,\n };\n }\n\n public initModels(): IModel[] {\n return this.buildModels();\n }\n\n public buildModels(): IModel[] {\n const {\n pickLight = false,\n } = this.layer.getLayerConfig() as IPolygonLayerStyleOptions;\n return [\n this.layer.buildLayerModel({\n moduleName: 'polygonExtrude',\n vertexShader: pickLight\n ? polygonExtrudePickLightVert\n : polygonExtrudeVert,\n fragmentShader: pickLight\n ? polygonExtrudePickLightFrag\n : polygonExtrudeFrag,\n triangulation: PolygonExtrudeTriangulation,\n }),\n ];\n }\n\n public clearModels() {\n this.dataTexture?.destroy();\n }\n\n protected registerBuiltinAttributes() {\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'normal',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Normal',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.STATIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 3,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n normal: number[],\n ) => {\n return normal;\n },\n },\n });\n\n this.styleAttributeService.registerStyleAttribute({\n name: 'size',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Size',\n buffer: {\n // give the WebGL driver a hint that this buffer may change\n usage: gl.DYNAMIC_DRAW,\n data: [],\n type: gl.FLOAT,\n },\n size: 1,\n update: (\n feature: IEncodeFeature,\n featureIdx: number,\n vertex: number[],\n attributeIdx: number,\n ) => {\n const { size = 10 } = feature;\n return Array.isArray(size) ? [size[0]] : [size as number];\n },\n },\n });\n }\n}\n"],"file":"extrude.js"}
|
|
@@ -47,6 +47,10 @@ function handleStyleDataMapping(configToUpdate, layer) {
|
|
|
47
47
|
if (configToUpdate.textOffset) {
|
|
48
48
|
handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
if (configToUpdate.thetaOffset) {
|
|
52
|
+
handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);
|
|
53
|
+
}
|
|
50
54
|
}
|
|
51
55
|
|
|
52
56
|
function handleStyleFloat(fieldName, layer, styleFloat) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","styleFloat","value","undefined","length","styleOffsets","styleColor"],"mappings":";;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../src/utils/dataMappingStyle.ts"],"names":["WIDTH","registerStyleAttribute","fieldName","layer","field","values","updateOptions","updateStyleAttribute","handleStyleDataMapping","configToUpdate","opacity","handleStyleFloat","strokeWidth","strokeOpacity","stroke","handleStyleColor","offsets","handleStyleOffsets","textOffset","thetaOffset","styleFloat","value","undefined","length","styleOffsets","styleColor"],"mappings":"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","sourcesContent":["import {\n gl,\n ILayer,\n IStyleAttributeUpdateOptions,\n ITexture2D,\n StyleAttributeField,\n StyleAttributeOption,\n} from '@antv/l7-core';\nimport { rgb2arr } from '@antv/l7-utils';\nimport { isArray, isFunction, isNumber, isString } from 'lodash';\n/**\n * 该文件中的工具方法主要用于对 style 中的属性进行 数据映射\n */\n\ninterface IConfigToUpdate {\n thetaOffset?: any;\n opacity?: any;\n strokeOpacity?: any;\n stroke?: any;\n strokeWidth?: any;\n offsets?: any;\n textOffset?: any;\n}\n\n// 画布默认的宽度\nconst WIDTH = 1024;\n\n/**\n * 当 style 中使用的 opacity 不是常数的时候根据数据进行映射\n * @param field\n * @param values\n * @param updateOptions\n */\nfunction registerStyleAttribute(\n fieldName: string,\n layer: ILayer,\n field: StyleAttributeField,\n values?: StyleAttributeOption,\n updateOptions?: Partial<IStyleAttributeUpdateOptions>,\n) {\n layer.updateStyleAttribute(fieldName, field, values, updateOptions);\n}\n\n/**\n * 当样式发生变化时判断是否需要进行数据映射\n * @param configToUpdate\n * @param layer\n */\nfunction handleStyleDataMapping(configToUpdate: IConfigToUpdate, layer: any) {\n if (configToUpdate.opacity) {\n // 处理 style 中 opacity 属性的数据映射\n handleStyleFloat('opacity', layer, configToUpdate.opacity);\n }\n\n if (configToUpdate.strokeWidth) {\n // 处理 style 中 strokeWidth 属性的数据映射\n\n handleStyleFloat('strokeWidth', layer, configToUpdate.strokeWidth);\n }\n\n if (configToUpdate.strokeOpacity) {\n // 处理 style 中 strokeOpacity 属性的数据映射\n handleStyleFloat('strokeOpacity', layer, configToUpdate.strokeOpacity);\n }\n\n if (configToUpdate.stroke) {\n // 处理 style 中 stroke (strokeColor) 属性的数据映射\n handleStyleColor('stroke', layer, configToUpdate.stroke);\n }\n\n if (configToUpdate.offsets) {\n // 处理 style 中 offsets 属性的数据映射\n handleStyleOffsets('offsets', layer, configToUpdate.offsets);\n }\n\n if (configToUpdate.textOffset) {\n // 处理 style 中 textOffset 属性的数据映射\n handleStyleOffsets('textOffset', layer, configToUpdate.textOffset);\n }\n\n if (configToUpdate.thetaOffset) {\n // 处理 style 中 thetaOffset 属性的数据映射\n handleStyleFloat('thetaOffset', layer, configToUpdate.thetaOffset);\n }\n}\n\n/**\n * 根据传入参数 float 的类型和值做相应的操作\n */\nfunction handleStyleFloat(fieldName: string, layer: ILayer, styleFloat: any) {\n if (isString(styleFloat)) {\n // 如果传入的 styleFloat 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleFloat, (value: any) => {\n return value;\n });\n } else if (isNumber(styleFloat)) {\n // 传入 number、默认值处理\n registerStyleAttribute(fieldName, layer, [styleFloat], undefined);\n } else if (isArray(styleFloat) && styleFloat.length === 2) {\n // 传入的 styleFloat 是长度为 2 的数组\n if (isString(styleFloat[0]) && isFunction(styleFloat[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else if (\n isString(styleFloat[0]) &&\n isArray(styleFloat[1]) &&\n isNumber(styleFloat[1][0]) &&\n isNumber(styleFloat[1][1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleFloat[0], styleFloat[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [1.0], undefined);\n }\n}\n/**\n * 根据传入参数 offsets 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleOffsets\n */\nfunction handleStyleOffsets(\n fieldName: string,\n layer: ILayer,\n styleOffsets: any,\n) {\n if (isString(styleOffsets)) {\n // 如果传入的 styleOffsets 是 string 类型,那么就认为其对应的是传入数据的字段\n registerStyleAttribute(fieldName, layer, styleOffsets, (value: any) => {\n return value;\n });\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isString(styleOffsets[0]) &&\n isFunction(styleOffsets[1])\n ) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleOffsets[0], styleOffsets[1]);\n } else if (\n isArray(styleOffsets) &&\n styleOffsets.length === 2 &&\n isNumber(styleOffsets[0]) &&\n isNumber(styleOffsets[1])\n ) {\n // 字段映射 [string, [start: number, end: number]]\n registerStyleAttribute(fieldName, layer, styleOffsets, undefined);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, [0, 0], undefined);\n }\n}\n\n/**\n * 根据传入参数 stroke / color 的类型和值做相应的操作\n * @param fieldName\n * @param layer\n * @param styleColor\n */\nfunction handleStyleColor(fieldName: string, layer: ILayer, styleColor: any) {\n if (isString(styleColor)) {\n // 如果传入的 styleColor 是 string 类型,那么就认为其是颜色值\n registerStyleAttribute(fieldName, layer, styleColor, undefined);\n } else if (isArray(styleColor) && styleColor.length === 2) {\n // 传入的 styleColor 是长度为 2 的数组\n if (isString(styleColor[0]) && isFunction(styleColor[1])) {\n // 字段回调函数 [string, callback]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else if (\n isString(styleColor[0]) &&\n isArray(styleColor[1]) &&\n styleColor[1].length > 0\n ) {\n // 字段映射 [string, [start: string, end: string]]\n registerStyleAttribute(fieldName, layer, styleColor[0], styleColor[1]);\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n } else {\n // 兼容\n registerStyleAttribute(fieldName, layer, '#fff', undefined);\n }\n}\n\nexport { handleStyleDataMapping, handleStyleFloat, handleStyleColor };\n"],"file":"dataMappingStyle.js"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
+
|
|
24
|
+
var _BaseLayer2 = _interopRequireDefault(require("../core/BaseLayer"));
|
|
25
|
+
|
|
26
|
+
var _models = _interopRequireDefault(require("./models"));
|
|
27
|
+
|
|
28
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
29
|
+
|
|
30
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
+
|
|
32
|
+
var WindLayer = function (_BaseLayer) {
|
|
33
|
+
(0, _inherits2.default)(WindLayer, _BaseLayer);
|
|
34
|
+
|
|
35
|
+
var _super = _createSuper(WindLayer);
|
|
36
|
+
|
|
37
|
+
function WindLayer() {
|
|
38
|
+
var _this;
|
|
39
|
+
|
|
40
|
+
(0, _classCallCheck2.default)(this, WindLayer);
|
|
41
|
+
|
|
42
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
43
|
+
args[_key] = arguments[_key];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
47
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "type", 'WindLayer');
|
|
48
|
+
return _this;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
(0, _createClass2.default)(WindLayer, [{
|
|
52
|
+
key: "buildModels",
|
|
53
|
+
value: function buildModels() {
|
|
54
|
+
var modelType = this.getModelType();
|
|
55
|
+
this.layerModel = new _models.default[modelType](this);
|
|
56
|
+
this.models = this.layerModel.initModels();
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
key: "rebuildModels",
|
|
60
|
+
value: function rebuildModels() {
|
|
61
|
+
this.models = this.layerModel.buildModels();
|
|
62
|
+
}
|
|
63
|
+
}, {
|
|
64
|
+
key: "renderModels",
|
|
65
|
+
value: function renderModels() {
|
|
66
|
+
if (this.layerModel) {
|
|
67
|
+
this.layerModel.render();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
key: "getConfigSchema",
|
|
74
|
+
value: function getConfigSchema() {
|
|
75
|
+
return {
|
|
76
|
+
properties: {
|
|
77
|
+
opacity: {
|
|
78
|
+
type: 'number',
|
|
79
|
+
minimum: 0,
|
|
80
|
+
maximum: 1
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
key: "getDefaultConfig",
|
|
87
|
+
value: function getDefaultConfig() {
|
|
88
|
+
var type = this.getModelType();
|
|
89
|
+
var defaultConfig = {
|
|
90
|
+
wind: {}
|
|
91
|
+
};
|
|
92
|
+
return defaultConfig[type];
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
key: "getModelType",
|
|
96
|
+
value: function getModelType() {
|
|
97
|
+
return 'wind';
|
|
98
|
+
}
|
|
99
|
+
}]);
|
|
100
|
+
return WindLayer;
|
|
101
|
+
}(_BaseLayer2.default);
|
|
102
|
+
|
|
103
|
+
exports.default = WindLayer;
|
|
104
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/wind/index.ts"],"names":["WindLayer","modelType","getModelType","layerModel","WindModels","models","initModels","buildModels","render","properties","opacity","type","minimum","maximum","defaultConfig","wind","BaseLayer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;IAiBqBA,S;;;;;;;;;;;;;;;uFACG,W;;;;;;WACtB,uBAAqB;AACnB,UAAMC,SAAS,GAAG,KAAKC,YAAL,EAAlB;AACA,WAAKC,UAAL,GAAkB,IAAIC,gBAAWH,SAAX,CAAJ,CAA0B,IAA1B,CAAlB;AACA,WAAKI,MAAL,GAAc,KAAKF,UAAL,CAAgBG,UAAhB,EAAd;AACD;;;WACD,yBAAuB;AACrB,WAAKD,MAAL,GAAc,KAAKF,UAAL,CAAgBI,WAAhB,EAAd;AACD;;;WAED,wBAAsB;AACpB,UAAI,KAAKJ,UAAT,EAAqB;AACnB,aAAKA,UAAL,CAAgBK,MAAhB;AACD;;AAED,aAAO,IAAP;AACD;;;WACD,2BAA4B;AAC1B,aAAO;AACLC,QAAAA,UAAU,EAAE;AACVC,UAAAA,OAAO,EAAE;AACPC,YAAAA,IAAI,EAAE,QADC;AAEPC,YAAAA,OAAO,EAAE,CAFF;AAGPC,YAAAA,OAAO,EAAE;AAHF;AADC;AADP,OAAP;AASD;;;WACD,4BAA6B;AAC3B,UAAMF,IAAI,GAAG,KAAKT,YAAL,EAAb;AACA,UAAMY,aAAa,GAAG;AACpBC,QAAAA,IAAI,EAAE;AADc,OAAtB;AAGA,aAAOD,aAAa,CAACH,IAAD,CAApB;AACD;;;WAED,wBAAwC;AACtC,aAAO,MAAP;AACD;;;EAvCoCK,mB","sourcesContent":["import BaseLayer from '../core/BaseLayer';\nimport WindModels, { WindModelType } from './models';\ninterface IWindLayerStyleOptions {\n uMin?: number;\n uMax?: number;\n vMin?: number;\n vMax?: number;\n fadeOpacity?: number;\n speedFactor?: number;\n dropRate?: number;\n dropRateBump?: number;\n opacity?: number;\n numParticles?: number;\n rampColors?: {\n [key: number]: string;\n };\n sizeScale?: number;\n}\nexport default class WindLayer extends BaseLayer<IWindLayerStyleOptions> {\n public type: string = 'WindLayer';\n public buildModels() {\n const modelType = this.getModelType();\n this.layerModel = new WindModels[modelType](this);\n this.models = this.layerModel.initModels();\n }\n public rebuildModels() {\n this.models = this.layerModel.buildModels();\n }\n\n public renderModels() {\n if (this.layerModel) {\n this.layerModel.render(); // 独立的渲染流程\n }\n\n return this;\n }\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n protected getDefaultConfig() {\n const type = this.getModelType();\n const defaultConfig = {\n wind: {},\n };\n return defaultConfig[type];\n }\n\n protected getModelType(): WindModelType {\n return 'wind';\n }\n}\n"],"file":"index.js"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _wind = _interopRequireDefault(require("./wind"));
|
|
11
|
+
|
|
12
|
+
var WindModels = {
|
|
13
|
+
wind: _wind.default
|
|
14
|
+
};
|
|
15
|
+
var _default = WindModels;
|
|
16
|
+
exports.default = _default;
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wind/models/index.ts"],"names":["WindModels","wind","WindModel"],"mappings":";;;;;;;;;AAAA;;AAGA,IAAMA,UAA2C,GAAG;AAClDC,EAAAA,IAAI,EAAEC;AAD4C,CAApD;eAGeF,U","sourcesContent":["import WindModel from './wind';\nexport type WindModelType = 'wind';\n\nconst WindModels: { [key in WindModelType]: any } = {\n wind: WindModel,\n};\nexport default WindModels;\n"],"file":"index.js"}
|