@deck.gl/geo-layers 8.10.0-alpha.7 → 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 (114) hide show
  1. package/dist/dist.dev.js +2374 -19037
  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/mvt-layer.js +15 -6
  12. package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
  13. package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
  14. package/dist/es5/s2-layer/s2-layer.js.map +1 -1
  15. package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
  16. package/{src/tile-3d-layer/tile-3d-layer.ts → dist/es5/tile-3d-layer/tile-3d-layer.ts.disabled} +9 -9
  17. package/dist/es5/tile-layer/tile-layer.js +19 -9
  18. package/dist/es5/tile-layer/tile-layer.js.map +1 -1
  19. package/dist/es5/tileset-2d/tile-2d-traversal.js.map +1 -1
  20. package/dist/es5/tileset-2d/tileset-2d.js +1 -1
  21. package/dist/es5/tileset-2d/tileset-2d.js.map +1 -1
  22. package/dist/es5/tileset-2d/utils.js +2 -3
  23. package/dist/es5/tileset-2d/utils.js.map +1 -1
  24. package/dist/es5/trips-layer/trips-layer.js.map +1 -1
  25. package/dist/es5/wms-layer/wms-layer.js +6 -8
  26. package/dist/es5/wms-layer/wms-layer.js.map +1 -1
  27. package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
  28. package/dist/esm/geohash-layer/geohash-layer.js.map +1 -1
  29. package/dist/esm/great-circle-layer/great-circle-layer.js.map +1 -1
  30. package/dist/esm/h3-layers/h3-cluster-layer.js +5 -0
  31. package/dist/esm/h3-layers/h3-cluster-layer.js.map +1 -1
  32. package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
  33. package/dist/esm/index.js +0 -1
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/mesh-layer/mesh-layer.ts.disabled +176 -0
  36. package/dist/esm/mvt-layer/mvt-layer.js +6 -1
  37. package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
  38. package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
  39. package/dist/esm/s2-layer/s2-layer.js.map +1 -1
  40. package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
  41. package/dist/esm/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  42. package/dist/esm/tile-layer/tile-layer.js +10 -6
  43. package/dist/esm/tile-layer/tile-layer.js.map +1 -1
  44. package/dist/esm/tileset-2d/tile-2d-traversal.js.map +1 -1
  45. package/dist/esm/tileset-2d/tileset-2d.js +1 -1
  46. package/dist/esm/tileset-2d/tileset-2d.js.map +1 -1
  47. package/dist/esm/tileset-2d/utils.js +2 -2
  48. package/dist/esm/tileset-2d/utils.js.map +1 -1
  49. package/dist/esm/trips-layer/trips-layer.js.map +1 -1
  50. package/dist/esm/wms-layer/wms-layer.js +5 -5
  51. package/dist/esm/wms-layer/wms-layer.js.map +1 -1
  52. package/dist.min.js +29 -161
  53. package/package.json +14 -14
  54. package/src/geo-cell-layer/GeoCellLayer.ts +1 -1
  55. package/src/geohash-layer/geohash-layer.ts +2 -2
  56. package/src/great-circle-layer/great-circle-layer.ts +1 -1
  57. package/src/h3-layers/h3-cluster-layer.ts +6 -2
  58. package/src/h3-layers/h3-hexagon-layer.ts +2 -2
  59. package/src/index.ts +4 -2
  60. package/src/mesh-layer/mesh-layer.ts.disabled +176 -0
  61. package/src/mvt-layer/mvt-layer.ts +16 -6
  62. package/src/quadkey-layer/quadkey-layer.ts +3 -2
  63. package/src/s2-layer/s2-layer.ts +2 -2
  64. package/src/terrain-layer/terrain-layer.ts +2 -2
  65. package/src/tile-3d-layer/tile-3d-layer.ts.disabled +436 -0
  66. package/src/tile-layer/tile-layer.ts +20 -10
  67. package/src/tileset-2d/tile-2d-traversal.ts +1 -1
  68. package/src/tileset-2d/tileset-2d.ts +6 -7
  69. package/src/tileset-2d/utils.ts +4 -4
  70. package/src/trips-layer/trips-layer.ts +3 -3
  71. package/src/wms-layer/wms-layer.ts +10 -8
  72. package/typed/geo-cell-layer/GeoCellLayer.d.ts +1 -1
  73. package/typed/geo-cell-layer/GeoCellLayer.d.ts.map +1 -1
  74. package/typed/geohash-layer/geohash-layer.d.ts +2 -2
  75. package/typed/geohash-layer/geohash-layer.d.ts.map +1 -1
  76. package/typed/great-circle-layer/great-circle-layer.d.ts +2 -2
  77. package/typed/great-circle-layer/great-circle-layer.d.ts.map +1 -1
  78. package/typed/h3-layers/h3-cluster-layer.d.ts +7 -2
  79. package/typed/h3-layers/h3-cluster-layer.d.ts.map +1 -1
  80. package/typed/h3-layers/h3-hexagon-layer.d.ts +2 -2
  81. package/typed/h3-layers/h3-hexagon-layer.d.ts.map +1 -1
  82. package/typed/index.d.ts +0 -2
  83. package/typed/index.d.ts.map +1 -1
  84. package/typed/mvt-layer/mvt-layer.d.ts +9 -1
  85. package/typed/mvt-layer/mvt-layer.d.ts.map +1 -1
  86. package/typed/quadkey-layer/quadkey-layer.d.ts +2 -2
  87. package/typed/quadkey-layer/quadkey-layer.d.ts.map +1 -1
  88. package/typed/s2-layer/s2-layer.d.ts +2 -2
  89. package/typed/s2-layer/s2-layer.d.ts.map +1 -1
  90. package/typed/terrain-layer/terrain-layer.d.ts +2 -2
  91. package/typed/terrain-layer/terrain-layer.d.ts.map +1 -1
  92. package/typed/tile-layer/tile-layer.d.ts +7 -2
  93. package/typed/tile-layer/tile-layer.d.ts.map +1 -1
  94. package/typed/tileset-2d/tile-2d-traversal.d.ts +1 -1
  95. package/typed/tileset-2d/tile-2d-traversal.d.ts.map +1 -1
  96. package/typed/tileset-2d/tileset-2d.d.ts +4 -4
  97. package/typed/tileset-2d/tileset-2d.d.ts.map +1 -1
  98. package/typed/tileset-2d/utils.d.ts +2 -2
  99. package/typed/tileset-2d/utils.d.ts.map +1 -1
  100. package/typed/trips-layer/trips-layer.d.ts +3 -3
  101. package/typed/trips-layer/trips-layer.d.ts.map +1 -1
  102. package/typed/wms-layer/wms-layer.d.ts.map +1 -1
  103. package/dist/es5/mesh-layer/mesh-layer.js +0 -212
  104. package/dist/es5/mesh-layer/mesh-layer.js.map +0 -1
  105. package/dist/es5/tile-3d-layer/tile-3d-layer.js +0 -512
  106. package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +0 -1
  107. package/dist/esm/mesh-layer/mesh-layer.js +0 -177
  108. package/dist/esm/mesh-layer/mesh-layer.js.map +0 -1
  109. package/dist/esm/tile-3d-layer/tile-3d-layer.js +0 -443
  110. package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +0 -1
  111. package/typed/mesh-layer/mesh-layer.d.ts +0 -38
  112. package/typed/mesh-layer/mesh-layer.d.ts.map +0 -1
  113. package/typed/tile-3d-layer/tile-3d-layer.d.ts +0 -62
  114. package/typed/tile-3d-layer/tile-3d-layer.d.ts.map +0 -1
@@ -1,212 +0,0 @@
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
-
14
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
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 _experimental = require("@luma.gl/experimental");
23
-
24
- var _core = require("@luma.gl/core");
25
-
26
- var _meshLayers = require("@deck.gl/mesh-layers");
27
-
28
- var _meshLayerVertex = _interopRequireDefault(require("./mesh-layer-vertex.glsl"));
29
-
30
- var _meshLayerFragment = _interopRequireDefault(require("./mesh-layer-fragment.glsl"));
31
-
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
33
-
34
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
-
36
- 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); }; }
37
-
38
- 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; } }
39
-
40
- function validateGeometryAttributes(attributes) {
41
- var hasColorAttribute = attributes.COLOR_0 || attributes.colors;
42
-
43
- if (!hasColorAttribute) {
44
- attributes.colors = {
45
- constant: true,
46
- value: new Float32Array([1, 1, 1])
47
- };
48
- }
49
- }
50
-
51
- var defaultProps = {
52
- pbrMaterial: {
53
- type: 'object',
54
- value: null
55
- },
56
- featureIds: {
57
- type: 'array',
58
- value: null,
59
- optional: true
60
- }
61
- };
62
-
63
- var MeshLayer = function (_SimpleMeshLayer) {
64
- (0, _inherits2.default)(MeshLayer, _SimpleMeshLayer);
65
-
66
- var _super = _createSuper(MeshLayer);
67
-
68
- function MeshLayer() {
69
- (0, _classCallCheck2.default)(this, MeshLayer);
70
- return _super.apply(this, arguments);
71
- }
72
-
73
- var _proto = MeshLayer.prototype;
74
-
75
- _proto.getShaders = function getShaders() {
76
- var shaders = (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "getShaders", this).call(this);
77
- var modules = shaders.modules;
78
- modules.push(_core.pbr);
79
- return _objectSpread(_objectSpread({}, shaders), {}, {
80
- vs: _meshLayerVertex.default,
81
- fs: _meshLayerFragment.default
82
- });
83
- };
84
-
85
- _proto.initializeState = function initializeState() {
86
- var featureIds = this.props.featureIds;
87
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "initializeState", this).call(this);
88
- var attributeManager = this.getAttributeManager();
89
-
90
- if (featureIds) {
91
- attributeManager.add({
92
- featureIdsPickingColors: {
93
- type: 5121,
94
- size: 3,
95
- noAlloc: true,
96
- update: this.calculateFeatureIdsPickingColors
97
- }
98
- });
99
- }
100
- };
101
-
102
- _proto.updateState = function updateState(params) {
103
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "updateState", this).call(this, params);
104
- var props = params.props,
105
- oldProps = params.oldProps;
106
-
107
- if (props.pbrMaterial !== oldProps.pbrMaterial) {
108
- this.updatePbrMaterialUniforms(props.pbrMaterial);
109
- }
110
- };
111
-
112
- _proto.draw = function draw(opts) {
113
- var featureIds = this.props.featureIds;
114
-
115
- if (!this.state.model) {
116
- return;
117
- }
118
-
119
- this.state.model.setUniforms({
120
- u_Camera: this.state.model.getUniforms().project_uCameraPosition,
121
- pickFeatureIds: Boolean(featureIds)
122
- });
123
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "draw", this).call(this, opts);
124
- };
125
-
126
- _proto.getModel = function getModel(mesh) {
127
- var _this$props = this.props,
128
- id = _this$props.id,
129
- pbrMaterial = _this$props.pbrMaterial;
130
- var materialParser = this.parseMaterial(pbrMaterial, mesh);
131
- this.setState({
132
- materialParser: materialParser
133
- });
134
- var shaders = this.getShaders();
135
- validateGeometryAttributes(mesh.attributes);
136
- var model = new _core.Model(this.context.gl, _objectSpread(_objectSpread({}, this.getShaders()), {}, {
137
- id: id,
138
- geometry: mesh,
139
- defines: _objectSpread(_objectSpread(_objectSpread({}, shaders.defines), materialParser === null || materialParser === void 0 ? void 0 : materialParser.defines), {}, {
140
- HAS_UV_REGIONS: mesh.attributes.uvRegions
141
- }),
142
- parameters: materialParser === null || materialParser === void 0 ? void 0 : materialParser.parameters,
143
- isInstanced: true
144
- }));
145
- return model;
146
- };
147
-
148
- _proto.updatePbrMaterialUniforms = function updatePbrMaterialUniforms(pbrMaterial) {
149
- var model = this.state.model;
150
-
151
- if (model) {
152
- var mesh = this.props.mesh;
153
- var materialParser = this.parseMaterial(pbrMaterial, mesh);
154
- this.setState({
155
- materialParser: materialParser
156
- });
157
- model.setUniforms(materialParser.uniforms);
158
- }
159
- };
160
-
161
- _proto.parseMaterial = function parseMaterial(pbrMaterial, mesh) {
162
- var _this$state$materialP;
163
-
164
- var unlit = Boolean(pbrMaterial.pbrMetallicRoughness && pbrMaterial.pbrMetallicRoughness.baseColorTexture);
165
- (_this$state$materialP = this.state.materialParser) === null || _this$state$materialP === void 0 ? void 0 : _this$state$materialP.delete();
166
- return new _experimental.GLTFMaterialParser(this.context.gl, {
167
- attributes: {
168
- NORMAL: mesh.attributes.normals,
169
- TEXCOORD_0: mesh.attributes.texCoords
170
- },
171
- material: _objectSpread({
172
- unlit: unlit
173
- }, pbrMaterial),
174
- pbrDebug: false,
175
- imageBasedLightingEnvironment: null,
176
- lights: true,
177
- useTangents: false
178
- });
179
- };
180
-
181
- _proto.calculateFeatureIdsPickingColors = function calculateFeatureIdsPickingColors(attribute) {
182
- var featureIds = this.props.featureIds;
183
- var value = new Uint8ClampedArray(featureIds.length * attribute.size);
184
- var pickingColor = [];
185
-
186
- for (var index = 0; index < featureIds.length; index++) {
187
- this.encodePickingColor(featureIds[index], pickingColor);
188
- value[index * 3] = pickingColor[0];
189
- value[index * 3 + 1] = pickingColor[1];
190
- value[index * 3 + 2] = pickingColor[2];
191
- }
192
-
193
- attribute.value = value;
194
- };
195
-
196
- _proto.finalizeState = function finalizeState(context) {
197
- var _this$state$materialP2;
198
-
199
- (0, _get2.default)((0, _getPrototypeOf2.default)(MeshLayer.prototype), "finalizeState", this).call(this, context);
200
- (_this$state$materialP2 = this.state.materialParser) === null || _this$state$materialP2 === void 0 ? void 0 : _this$state$materialP2.delete();
201
- this.setState({
202
- materialParser: null
203
- });
204
- };
205
-
206
- return MeshLayer;
207
- }(_meshLayers.SimpleMeshLayer);
208
-
209
- exports.default = MeshLayer;
210
- MeshLayer.layerName = 'MeshLayer';
211
- MeshLayer.defaultProps = defaultProps;
212
- //# sourceMappingURL=mesh-layer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mesh-layer/mesh-layer.ts"],"names":["validateGeometryAttributes","attributes","hasColorAttribute","COLOR_0","colors","constant","value","Float32Array","defaultProps","pbrMaterial","type","featureIds","optional","MeshLayer","getShaders","shaders","modules","push","pbr","vs","fs","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","Model","context","gl","geometry","defines","HAS_UV_REGIONS","uvRegions","parameters","isInstanced","uniforms","unlit","pbrMetallicRoughness","baseColorTexture","delete","GLTFMaterialParser","NORMAL","normals","TEXCOORD_0","texCoords","material","pbrDebug","imageBasedLightingEnvironment","lights","useTangents","attribute","Uint8ClampedArray","length","pickingColor","index","encodePickingColor","finalizeState","SimpleMeshLayer","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"}