@deck.gl/geo-layers 8.10.0-alpha.6 → 9.0.0-alpha.3

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.
Files changed (120) hide show
  1. package/dist/dist.dev.js +7621 -22014
  2. package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
  3. package/dist/es5/geohash-layer/geohash-layer.js.map +1 -1
  4. package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
  5. package/dist/es5/h3-layers/h3-cluster-layer.js +10 -1
  6. package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
  7. package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
  8. package/dist/es5/index.js +0 -8
  9. package/dist/es5/index.js.map +1 -1
  10. package/{src/mesh-layer/mesh-layer.ts → dist/es5/mesh-layer/mesh-layer.ts.disabled} +8 -7
  11. package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
  12. package/dist/es5/mvt-layer/mvt-layer.js +15 -6
  13. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  14. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  15. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  16. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  17. package/{src/tile-3d-layer/tile-3d-layer.ts → dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled} +9 -9
  18. package/dist/es5/tile-layer/tile-layer.js +19 -9
  19. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  20. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -1
  21. package/dist/es5/tileset-2d/tileset-2d.js +1 -1
  22. package/dist/es5/tileset-2d/tileset-2d.js.map +1 -1
  23. package/dist/es5/tileset-2d/utils.js +2 -3
  24. package/dist/es5/tileset-2d/utils.js.map +1 -1
  25. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  26. package/dist/es5/wms-layer/wms-layer.js +6 -8
  27. package/dist/es5/wms-layer/wms-layer.js.map +1 -1
  28. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  29. package/dist/esm/geohash-layer/geohash-layer.js.map +1 -1
  30. package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
  31. package/dist/esm/h3-layers/h3-cluster-layer.js +5 -0
  32. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  33. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  34. package/dist/esm/index.js +0 -1
  35. package/dist/esm/index.js.map +1 -1
  36. package/dist/esm/mesh-layer/mesh-layer.ts.disabled +176 -0
  37. package/dist/esm/mvt-layer/find-index-binary.js.map +1 -1
  38. package/dist/esm/mvt-layer/mvt-layer.js +6 -1
  39. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  40. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  41. package/dist/esm/s2-layer/s2-layer.js.map +1 -1
  42. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  43. package/dist/esm/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  44. package/dist/esm/tile-layer/tile-layer.js +10 -6
  45. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  46. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -1
  47. package/dist/esm/tileset-2d/tileset-2d.js +1 -1
  48. package/dist/esm/tileset-2d/tileset-2d.js.map +1 -1
  49. package/dist/esm/tileset-2d/utils.js +2 -2
  50. package/dist/esm/tileset-2d/utils.js.map +1 -1
  51. package/dist/esm/trips-layer/trips-layer.js.map +1 -1
  52. package/dist/esm/wms-layer/wms-layer.js +5 -5
  53. package/dist/esm/wms-layer/wms-layer.js.map +1 -1
  54. package/dist.min.js +29 -227
  55. package/package.json +17 -17
  56. package/src/geo-cell-layer/GeoCellLayer.ts +1 -1
  57. package/src/geohash-layer/geohash-layer.ts +2 -2
  58. package/src/great-circle-layer/great-circle-layer.ts +1 -1
  59. package/src/h3-layers/h3-cluster-layer.ts +6 -2
  60. package/src/h3-layers/h3-hexagon-layer.ts +2 -2
  61. package/src/index.ts +4 -2
  62. package/src/mesh-layer/mesh-layer.ts.disabled +176 -0
  63. package/src/mvt-layer/find-index-binary.ts +6 -6
  64. package/src/mvt-layer/mvt-layer.ts +19 -9
  65. package/src/quadkey-layer/quadkey-layer.ts +3 -2
  66. package/src/s2-layer/s2-layer.ts +2 -2
  67. package/src/terrain-layer/terrain-layer.ts +2 -2
  68. package/src/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  69. package/src/tile-layer/tile-layer.ts +20 -10
  70. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  71. package/src/tileset-2d/tileset-2d.ts +6 -7
  72. package/src/tileset-2d/utils.ts +4 -4
  73. package/src/trips-layer/trips-layer.ts +3 -3
  74. package/src/wms-layer/wms-layer.ts +11 -7
  75. package/typed/geo-cell-layer/GeoCellLayer.d.ts +1 -1
  76. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  77. package/typed/geohash-layer/geohash-layer.d.ts +2 -2
  78. package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
  79. package/typed/great-circle-layer/great-circle-layer.d.ts +2 -2
  80. package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
  81. package/typed/h3-layers/h3-cluster-layer.d.ts +7 -2
  82. package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
  83. package/typed/h3-layers/h3-hexagon-layer.d.ts +2 -2
  84. package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
  85. package/typed/index.d.ts +0 -2
  86. package/typed/index.d.ts.map +1 -1
  87. package/typed/mvt-layer/find-index-binary.d.ts +2 -2
  88. package/typed/mvt-layer/find-index-binary.d.ts.map +1 -1
  89. package/typed/mvt-layer/mvt-layer.d.ts +11 -3
  90. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  91. package/typed/quadkey-layer/quadkey-layer.d.ts +2 -2
  92. package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
  93. package/typed/s2-layer/s2-layer.d.ts +2 -2
  94. package/typed/s2-layer/s2-layer.d.ts.map +1 -1
  95. package/typed/terrain-layer/terrain-layer.d.ts +2 -2
  96. package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
  97. package/typed/tile-layer/tile-layer.d.ts +7 -2
  98. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  99. package/typed/tileset-2d/tile-2d-traversal.d.ts +1 -1
  100. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -1
  101. package/typed/tileset-2d/tileset-2d.d.ts +4 -4
  102. package/typed/tileset-2d/tileset-2d.d.ts.map +1 -1
  103. package/typed/tileset-2d/utils.d.ts +2 -2
  104. package/typed/tileset-2d/utils.d.ts.map +1 -1
  105. package/typed/trips-layer/trips-layer.d.ts +3 -3
  106. package/typed/trips-layer/trips-layer.d.ts.map +1 -1
  107. package/typed/wms-layer/wms-layer.d.ts +2 -1
  108. package/typed/wms-layer/wms-layer.d.ts.map +1 -1
  109. package/dist/es5/mesh-layer/mesh-layer.js +0 -212
  110. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  111. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -512
  112. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  113. package/dist/esm/mesh-layer/mesh-layer.js +0 -177
  114. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  115. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -443
  116. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  117. package/typed/mesh-layer/mesh-layer.d.ts +0 -38
  118. package/typed/mesh-layer/mesh-layer.d.ts.map +0 -1
  119. package/typed/tile-3d-layer/tile-3d-layer.d.ts +0 -62
  120. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +0 -1
@@ -1,177 +0,0 @@
1
- import { GLTFMaterialParser } from '@luma.gl/experimental';
2
- import { Model, pbr } from '@luma.gl/core';
3
- import { SimpleMeshLayer } from '@deck.gl/mesh-layers';
4
- import vs from './mesh-layer-vertex.glsl';
5
- import fs from './mesh-layer-fragment.glsl';
6
-
7
- function validateGeometryAttributes(attributes) {
8
- const hasColorAttribute = attributes.COLOR_0 || attributes.colors;
9
-
10
- if (!hasColorAttribute) {
11
- attributes.colors = {
12
- constant: true,
13
- value: new Float32Array([1, 1, 1])
14
- };
15
- }
16
- }
17
-
18
- const defaultProps = {
19
- pbrMaterial: {
20
- type: 'object',
21
- value: null
22
- },
23
- featureIds: {
24
- type: 'array',
25
- value: null,
26
- optional: true
27
- }
28
- };
29
- export default class MeshLayer extends SimpleMeshLayer {
30
- getShaders() {
31
- const shaders = super.getShaders();
32
- const modules = shaders.modules;
33
- modules.push(pbr);
34
- return { ...shaders,
35
- vs,
36
- fs
37
- };
38
- }
39
-
40
- initializeState() {
41
- const {
42
- featureIds
43
- } = this.props;
44
- super.initializeState();
45
- const attributeManager = this.getAttributeManager();
46
-
47
- if (featureIds) {
48
- attributeManager.add({
49
- featureIdsPickingColors: {
50
- type: 5121,
51
- size: 3,
52
- noAlloc: true,
53
- update: this.calculateFeatureIdsPickingColors
54
- }
55
- });
56
- }
57
- }
58
-
59
- updateState(params) {
60
- super.updateState(params);
61
- const {
62
- props,
63
- oldProps
64
- } = params;
65
-
66
- if (props.pbrMaterial !== oldProps.pbrMaterial) {
67
- this.updatePbrMaterialUniforms(props.pbrMaterial);
68
- }
69
- }
70
-
71
- draw(opts) {
72
- const {
73
- featureIds
74
- } = this.props;
75
-
76
- if (!this.state.model) {
77
- return;
78
- }
79
-
80
- this.state.model.setUniforms({
81
- u_Camera: this.state.model.getUniforms().project_uCameraPosition,
82
- pickFeatureIds: Boolean(featureIds)
83
- });
84
- super.draw(opts);
85
- }
86
-
87
- getModel(mesh) {
88
- const {
89
- id,
90
- pbrMaterial
91
- } = this.props;
92
- const materialParser = this.parseMaterial(pbrMaterial, mesh);
93
- this.setState({
94
- materialParser
95
- });
96
- const shaders = this.getShaders();
97
- validateGeometryAttributes(mesh.attributes);
98
- const model = new Model(this.context.gl, { ...this.getShaders(),
99
- id,
100
- geometry: mesh,
101
- defines: { ...shaders.defines,
102
- ...(materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines),
103
- HAS_UV_REGIONS: mesh.attributes.uvRegions
104
- },
105
- parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
106
- isInstanced: true
107
- });
108
- return model;
109
- }
110
-
111
- updatePbrMaterialUniforms(pbrMaterial) {
112
- const {
113
- model
114
- } = this.state;
115
-
116
- if (model) {
117
- const {
118
- mesh
119
- } = this.props;
120
- const materialParser = this.parseMaterial(pbrMaterial, mesh);
121
- this.setState({
122
- materialParser
123
- });
124
- model.setUniforms(materialParser.uniforms);
125
- }
126
- }
127
-
128
- parseMaterial(pbrMaterial, mesh) {
129
- var _this$state$materialP;
130
-
131
- const unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
132
- (_this$state$materialP = this.state.materialParser) === null || _this$state$materialP === void 0 ? void 0 : _this$state$materialP.delete();
133
- return new GLTFMaterialParser(this.context.gl, {
134
- attributes: {
135
- NORMAL: mesh.attributes.normals,
136
- TEXCOORD_0: mesh.attributes.texCoords
137
- },
138
- material: {
139
- unlit,
140
- ...pbrMaterial
141
- },
142
- pbrDebug: false,
143
- imageBasedLightingEnvironment: null,
144
- lights: true,
145
- useTangents: false
146
- });
147
- }
148
-
149
- calculateFeatureIdsPickingColors(attribute) {
150
- const featureIds = this.props.featureIds;
151
- const value = new Uint8ClampedArray(featureIds.length * attribute.size);
152
- const pickingColor = [];
153
-
154
- for (let index = 0; index < featureIds.length; index++) {
155
- this.encodePickingColor(featureIds[index], pickingColor);
156
- value[index * 3] = pickingColor[0];
157
- value[index * 3 + 1] = pickingColor[1];
158
- value[index * 3 + 2] = pickingColor[2];
159
- }
160
-
161
- attribute.value = value;
162
- }
163
-
164
- finalizeState(context) {
165
- var _this$state$materialP2;
166
-
167
- super.finalizeState(context);
168
- (_this$state$materialP2 = this.state.materialParser) === null || _this$state$materialP2 === void 0 ? void 0 : _this$state$materialP2.delete();
169
- this.setState({
170
- materialParser: null
171
- });
172
- }
173
-
174
- }
175
- MeshLayer.layerName = 'MeshLayer';
176
- MeshLayer.defaultProps = defaultProps;
177
- //# sourceMappingURL=mesh-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["GLTFMaterialParser","Model","pbr","SimpleMeshLayer","vs","fs","validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","getShaders","shaders","modules","push","initializeState","props","attributeManager","getAttributeManager","add","featureIdsPickingColors","size","noAlloc","update","calculateFeatureIdsPickingColors","updateState","params","oldProps","updatePbrMaterialUniforms","draw","opts","state","model","setUniforms","u_Camera","getUniforms","project_uCameraPosition","pickFeatureIds","Boolean","getModel","mesh","id","materialParser","parseMaterial","setState","context","gl","geometry","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","delete","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","finalizeState","layerName"],"mappings":"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","sourcesContent":["import type {NumericArray} from '@math.gl/core';\nimport {GLTFMaterialParser} from '@luma.gl/experimental';\nimport {Model, pbr} from '@luma.gl/core';\nimport GL from '@luma.gl/constants';\nimport type {MeshAttribute, MeshAttributes} from '@loaders.gl/schema';\nimport type {UpdateParameters, DefaultProps, LayerContext} from '@deck.gl/core';\nimport {SimpleMeshLayer, SimpleMeshLayerProps} from '@deck.gl/mesh-layers';\n\nimport vs from './mesh-layer-vertex.glsl';\nimport fs from './mesh-layer-fragment.glsl';\n\nexport type Mesh = {\n attributes: MeshAttributes;\n indices?: MeshAttribute;\n};\n\nfunction validateGeometryAttributes(attributes) {\n const hasColorAttribute = attributes.COLOR_0 || attributes.colors;\n if (!hasColorAttribute) {\n attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};\n }\n}\n\nconst defaultProps: DefaultProps<MeshLayerProps> = {\n pbrMaterial: {type: 'object', value: null},\n featureIds: {type: 'array', value: null, optional: true}\n};\n\n/** All properties supported by MeshLayer. */\nexport type MeshLayerProps<DataT = any> = _MeshLayerProps & SimpleMeshLayerProps<DataT>;\n\n/** Properties added by MeshLayer. */\ntype _MeshLayerProps = {\n /**\n * PBR material object. _lighting must be pbr for this to work\n */\n pbrMaterial?: any; // TODO add type when converting Tile3DLayer\n\n /**\n * List of feature ids.\n */\n featureIds?: NumericArray | null;\n};\n\nexport default class MeshLayer<DataT = any, ExtraProps extends {} = {}> extends SimpleMeshLayer<\n DataT,\n Required<_MeshLayerProps> & ExtraProps\n> {\n static layerName = 'MeshLayer';\n static defaultProps = defaultProps;\n\n getShaders() {\n const shaders = super.getShaders();\n const modules = shaders.modules;\n modules.push(pbr);\n return {...shaders, vs, fs};\n }\n\n initializeState() {\n const {featureIds} = this.props;\n super.initializeState();\n\n const attributeManager = this.getAttributeManager();\n if (featureIds) {\n // attributeManager is always defined in a primitive layer\n attributeManager!.add({\n featureIdsPickingColors: {\n type: GL.UNSIGNED_BYTE,\n size: 3,\n noAlloc: true,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n update: this.calculateFeatureIdsPickingColors\n }\n });\n }\n }\n\n updateState(params: UpdateParameters<this>) {\n super.updateState(params);\n\n const {props, oldProps} = params;\n if (props.pbrMaterial !== oldProps.pbrMaterial) {\n this.updatePbrMaterialUniforms(props.pbrMaterial);\n }\n }\n\n draw(opts) {\n const {featureIds} = this.props;\n if (!this.state.model) {\n return;\n }\n this.state.model.setUniforms({\n // Needed for PBR (TODO: find better way to get it)\n // eslint-disable-next-line camelcase\n u_Camera: this.state.model.getUniforms().project_uCameraPosition,\n pickFeatureIds: Boolean(featureIds)\n });\n\n super.draw(opts);\n }\n\n protected getModel(mesh: Mesh): Model {\n const {id, pbrMaterial} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n const shaders = this.getShaders();\n validateGeometryAttributes(mesh.attributes);\n const model = new Model(this.context.gl, {\n ...this.getShaders(),\n id,\n geometry: mesh,\n defines: {\n ...shaders.defines,\n ...materialParser?.defines,\n HAS_UV_REGIONS: mesh.attributes.uvRegions\n },\n parameters: materialParser?.parameters,\n isInstanced: true\n });\n\n return model;\n }\n\n updatePbrMaterialUniforms(pbrMaterial) {\n const {model} = this.state;\n if (model) {\n const {mesh} = this.props;\n const materialParser = this.parseMaterial(pbrMaterial, mesh);\n // Keep material parser to explicitly remove textures\n this.setState({materialParser});\n model.setUniforms(materialParser.uniforms);\n }\n }\n\n parseMaterial(pbrMaterial, mesh) {\n const unlit = Boolean(\n pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture\n );\n\n this.state.materialParser?.delete();\n\n return new GLTFMaterialParser(this.context.gl, {\n attributes: {NORMAL: mesh.attributes.normals, TEXCOORD_0: mesh.attributes.texCoords},\n material: {unlit, ...pbrMaterial},\n pbrDebug: false,\n imageBasedLightingEnvironment: null,\n lights: true,\n useTangents: false\n });\n }\n\n calculateFeatureIdsPickingColors(attribute) {\n // This updater is only called if featureIds is not null\n const featureIds = this.props.featureIds!;\n const value = new Uint8ClampedArray(featureIds.length * attribute.size);\n\n const pickingColor = [];\n for (let index = 0; index < featureIds.length; index++) {\n this.encodePickingColor(featureIds[index], pickingColor);\n\n value[index * 3] = pickingColor[0];\n value[index * 3 + 1] = pickingColor[1];\n value[index * 3 + 2] = pickingColor[2];\n }\n\n attribute.value = value;\n }\n\n finalizeState(context: LayerContext) {\n super.finalizeState(context);\n this.state.materialParser?.delete();\n this.setState({materialParser: null});\n }\n}\n"],"file":"mesh-layer.js"}
@@ -1,443 +0,0 @@
1
- import { Geometry } from '@luma.gl/core';
2
- import { CompositeLayer, COORDINATE_SYSTEM, log } from '@deck.gl/core';
3
- import { PointCloudLayer } from '@deck.gl/layers';
4
- import { ScenegraphLayer } from '@deck.gl/mesh-layers';
5
- import { default as MeshLayer } from '../mesh-layer/mesh-layer';
6
- import { load } from '@loaders.gl/core';
7
- import { Tileset3D, TILE_TYPE } from '@loaders.gl/tiles';
8
- import { Tiles3DLoader } from '@loaders.gl/3d-tiles';
9
- const SINGLE_DATA = [0];
10
- const defaultProps = {
11
- getPointColor: {
12
- type: 'accessor',
13
- value: [0, 0, 0, 255]
14
- },
15
- pointSize: 1.0,
16
- data: '',
17
- loader: Tiles3DLoader,
18
- onTilesetLoad: {
19
- type: 'function',
20
- value: tileset3d => {}
21
- },
22
- onTileLoad: {
23
- type: 'function',
24
- value: tileHeader => {}
25
- },
26
- onTileUnload: {
27
- type: 'function',
28
- value: tileHeader => {}
29
- },
30
- onTileError: {
31
- type: 'function',
32
- value: (tile, message, url) => {}
33
- },
34
- _getMeshColor: {
35
- type: 'function',
36
- value: tileHeader => [255, 255, 255]
37
- }
38
- };
39
- export default class Tile3DLayer extends CompositeLayer {
40
- constructor(...args) {
41
- super(...args);
42
- this.state = void 0;
43
- }
44
-
45
- initializeState() {
46
- if ('onTileLoadFail' in this.props) {
47
- log.removed('onTileLoadFail', 'onTileError')();
48
- }
49
-
50
- this.state = {
51
- layerMap: {},
52
- tileset3d: null,
53
- activeViewports: {},
54
- lastUpdatedViewports: null
55
- };
56
- }
57
-
58
- get isLoaded() {
59
- const {
60
- tileset3d
61
- } = this.state;
62
- return tileset3d !== null && tileset3d.isLoaded();
63
- }
64
-
65
- shouldUpdateState({
66
- changeFlags
67
- }) {
68
- return changeFlags.somethingChanged;
69
- }
70
-
71
- updateState({
72
- props,
73
- oldProps,
74
- changeFlags
75
- }) {
76
- if (props.data && props.data !== oldProps.data) {
77
- this._loadTileset(props.data);
78
- }
79
-
80
- if (changeFlags.viewportChanged) {
81
- const {
82
- activeViewports
83
- } = this.state;
84
- const viewportsNumber = Object.keys(activeViewports).length;
85
-
86
- if (viewportsNumber) {
87
- this._updateTileset(activeViewports);
88
-
89
- this.state.lastUpdatedViewports = activeViewports;
90
- this.state.activeViewports = {};
91
- }
92
- }
93
-
94
- if (changeFlags.propsChanged) {
95
- const {
96
- layerMap
97
- } = this.state;
98
-
99
- for (const key in layerMap) {
100
- layerMap[key].needsUpdate = true;
101
- }
102
- }
103
- }
104
-
105
- activateViewport(viewport) {
106
- const {
107
- activeViewports,
108
- lastUpdatedViewports
109
- } = this.state;
110
- this.internalState.viewport = viewport;
111
- activeViewports[viewport.id] = viewport;
112
- const lastViewport = lastUpdatedViewports === null || lastUpdatedViewports === void 0 ? void 0 : lastUpdatedViewports[viewport.id];
113
-
114
- if (!lastViewport || !viewport.equals(lastViewport)) {
115
- this.setChangeFlags({
116
- viewportChanged: true
117
- });
118
- this.setNeedsUpdate();
119
- }
120
- }
121
-
122
- getPickingInfo({
123
- info,
124
- sourceLayer
125
- }) {
126
- const sourceTile = sourceLayer && sourceLayer.props.tile;
127
-
128
- if (info.picked) {
129
- info.object = sourceTile;
130
- }
131
-
132
- info.sourceTile = sourceTile;
133
- return info;
134
- }
135
-
136
- filterSubLayer({
137
- layer,
138
- viewport
139
- }) {
140
- const {
141
- tile
142
- } = layer.props;
143
- const {
144
- id: viewportId
145
- } = viewport;
146
- return tile.selected && tile.viewportIds.includes(viewportId);
147
- }
148
-
149
- _updateAutoHighlight(info) {
150
- const sourceTile = info.sourceTile;
151
- const layerCache = this.state.layerMap[sourceTile === null || sourceTile === void 0 ? void 0 : sourceTile.id];
152
-
153
- if (layerCache && layerCache.layer) {
154
- layerCache.layer.updateAutoHighlight(info);
155
- }
156
- }
157
-
158
- async _loadTileset(tilesetUrl) {
159
- const {
160
- loadOptions = {}
161
- } = this.props;
162
- let loader = this.props.loader || this.props.loaders;
163
-
164
- if (Array.isArray(loader)) {
165
- loader = loader[0];
166
- }
167
-
168
- const options = {
169
- loadOptions: { ...loadOptions
170
- }
171
- };
172
- let actualTilesetUrl = tilesetUrl;
173
-
174
- if (loader.preload) {
175
- const preloadOptions = await loader.preload(tilesetUrl, loadOptions);
176
-
177
- if (preloadOptions.url) {
178
- actualTilesetUrl = preloadOptions.url;
179
- }
180
-
181
- if (preloadOptions.headers) {
182
- options.loadOptions.fetch = { ...options.loadOptions.fetch,
183
- headers: preloadOptions.headers
184
- };
185
- }
186
-
187
- Object.assign(options, preloadOptions);
188
- }
189
-
190
- const tilesetJson = await load(actualTilesetUrl, loader, options.loadOptions);
191
- const tileset3d = new Tileset3D(tilesetJson, {
192
- onTileLoad: this._onTileLoad.bind(this),
193
- onTileUnload: this._onTileUnload.bind(this),
194
- onTileError: this.props.onTileError,
195
- ...options
196
- });
197
- this.setState({
198
- tileset3d,
199
- layerMap: {}
200
- });
201
-
202
- this._updateTileset(this.state.activeViewports);
203
-
204
- this.props.onTilesetLoad(tileset3d);
205
- }
206
-
207
- _onTileLoad(tileHeader) {
208
- const {
209
- lastUpdatedViewports
210
- } = this.state;
211
- this.props.onTileLoad(tileHeader);
212
-
213
- this._updateTileset(lastUpdatedViewports);
214
-
215
- this.setNeedsUpdate();
216
- }
217
-
218
- _onTileUnload(tileHeader) {
219
- delete this.state.layerMap[tileHeader.id];
220
- this.props.onTileUnload(tileHeader);
221
- }
222
-
223
- _updateTileset(viewports) {
224
- if (!viewports) {
225
- return;
226
- }
227
-
228
- const {
229
- tileset3d
230
- } = this.state;
231
- const {
232
- timeline
233
- } = this.context;
234
- const viewportsNumber = Object.keys(viewports).length;
235
-
236
- if (!timeline || !viewportsNumber || !tileset3d) {
237
- return;
238
- }
239
-
240
- tileset3d.selectTiles(Object.values(viewports)).then(frameNumber => {
241
- const tilesetChanged = this.state.frameNumber !== frameNumber;
242
-
243
- if (tilesetChanged) {
244
- this.setState({
245
- frameNumber
246
- });
247
- }
248
- });
249
- }
250
-
251
- _getSubLayer(tileHeader, oldLayer) {
252
- if (!tileHeader.content) {
253
- return null;
254
- }
255
-
256
- switch (tileHeader.type) {
257
- case TILE_TYPE.POINTCLOUD:
258
- return this._makePointCloudLayer(tileHeader, oldLayer);
259
-
260
- case TILE_TYPE.SCENEGRAPH:
261
- return this._make3DModelLayer(tileHeader);
262
-
263
- case TILE_TYPE.MESH:
264
- return this._makeSimpleMeshLayer(tileHeader, oldLayer);
265
-
266
- default:
267
- throw new Error(`Tile3DLayer: Failed to render layer of type ${tileHeader.content.type}`);
268
- }
269
- }
270
-
271
- _makePointCloudLayer(tileHeader, oldLayer) {
272
- const {
273
- attributes,
274
- pointCount,
275
- constantRGBA,
276
- cartographicOrigin,
277
- modelMatrix
278
- } = tileHeader.content;
279
- const {
280
- positions,
281
- normals,
282
- colors
283
- } = attributes;
284
-
285
- if (!positions) {
286
- return null;
287
- }
288
-
289
- const data = oldLayer && oldLayer.props.data || {
290
- header: {
291
- vertexCount: pointCount
292
- },
293
- attributes: {
294
- POSITION: positions,
295
- NORMAL: normals,
296
- COLOR_0: colors
297
- }
298
- };
299
- const {
300
- pointSize,
301
- getPointColor
302
- } = this.props;
303
- const SubLayerClass = this.getSubLayerClass('pointcloud', PointCloudLayer);
304
- return new SubLayerClass({
305
- pointSize
306
- }, this.getSubLayerProps({
307
- id: 'pointcloud'
308
- }), {
309
- id: `${this.id}-pointcloud-${tileHeader.id}`,
310
- tile: tileHeader,
311
- data,
312
- coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,
313
- coordinateOrigin: cartographicOrigin,
314
- modelMatrix,
315
- getColor: constantRGBA || getPointColor,
316
- _offset: 0
317
- });
318
- }
319
-
320
- _make3DModelLayer(tileHeader) {
321
- const {
322
- gltf,
323
- instances,
324
- cartographicOrigin,
325
- modelMatrix
326
- } = tileHeader.content;
327
- const SubLayerClass = this.getSubLayerClass('scenegraph', ScenegraphLayer);
328
- return new SubLayerClass({
329
- _lighting: 'pbr'
330
- }, this.getSubLayerProps({
331
- id: 'scenegraph'
332
- }), {
333
- id: `${this.id}-scenegraph-${tileHeader.id}`,
334
- tile: tileHeader,
335
- data: instances || SINGLE_DATA,
336
- scenegraph: gltf,
337
- coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS,
338
- coordinateOrigin: cartographicOrigin,
339
- modelMatrix,
340
- getTransformMatrix: instance => instance.modelMatrix,
341
- getPosition: [0, 0, 0],
342
- _offset: 0
343
- });
344
- }
345
-
346
- _makeSimpleMeshLayer(tileHeader, oldLayer) {
347
- const content = tileHeader.content;
348
- const {
349
- attributes,
350
- indices,
351
- modelMatrix,
352
- cartographicOrigin,
353
- coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,
354
- material,
355
- featureIds
356
- } = content;
357
- const {
358
- _getMeshColor
359
- } = this.props;
360
- const geometry = oldLayer && oldLayer.props.mesh || new Geometry({
361
- drawMode: 4,
362
- attributes: getMeshGeometry(attributes),
363
- indices
364
- });
365
- const SubLayerClass = this.getSubLayerClass('mesh', MeshLayer);
366
- return new SubLayerClass(this.getSubLayerProps({
367
- id: 'mesh'
368
- }), {
369
- id: `${this.id}-mesh-${tileHeader.id}`,
370
- tile: tileHeader,
371
- mesh: geometry,
372
- data: SINGLE_DATA,
373
- getColor: _getMeshColor(tileHeader),
374
- pbrMaterial: material,
375
- modelMatrix,
376
- coordinateOrigin: cartographicOrigin,
377
- coordinateSystem,
378
- featureIds,
379
- _offset: 0
380
- });
381
- }
382
-
383
- renderLayers() {
384
- const {
385
- tileset3d,
386
- layerMap
387
- } = this.state;
388
-
389
- if (!tileset3d) {
390
- return null;
391
- }
392
-
393
- return tileset3d.tiles.map(tile => {
394
- const layerCache = layerMap[tile.id] = layerMap[tile.id] || {
395
- tile
396
- };
397
- let {
398
- layer
399
- } = layerCache;
400
-
401
- if (tile.selected) {
402
- if (!layer) {
403
- layer = this._getSubLayer(tile);
404
- } else if (layerCache.needsUpdate) {
405
- layer = this._getSubLayer(tile, layer);
406
- layerCache.needsUpdate = false;
407
- }
408
- }
409
-
410
- layerCache.layer = layer;
411
- return layer;
412
- }).filter(Boolean);
413
- }
414
-
415
- }
416
- Tile3DLayer.defaultProps = defaultProps;
417
- Tile3DLayer.layerName = 'Tile3DLayer';
418
-
419
- function getMeshGeometry(contentAttributes) {
420
- const attributes = {};
421
- attributes.positions = { ...contentAttributes.positions,
422
- value: new Float32Array(contentAttributes.positions.value)
423
- };
424
-
425
- if (contentAttributes.normals) {
426
- attributes.normals = contentAttributes.normals;
427
- }
428
-
429
- if (contentAttributes.texCoords) {
430
- attributes.texCoords = contentAttributes.texCoords;
431
- }
432
-
433
- if (contentAttributes.colors) {
434
- attributes.colors = contentAttributes.colors;
435
- }
436
-
437
- if (contentAttributes.uvRegions) {
438
- attributes.uvRegions = contentAttributes.uvRegions;
439
- }
440
-
441
- return attributes;
442
- }
443
- //# sourceMappingURL=tile-3d-layer.js.map