@antv/l7-layers 2.8.32 → 2.8.35
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/Geometry/index.d.ts +1 -1
- package/es/Geometry/index.js +4 -1
- package/es/Geometry/index.js.map +1 -1
- package/es/Geometry/models/billboard.d.ts +29 -0
- package/es/Geometry/models/billboard.js +222 -0
- package/es/Geometry/models/billboard.js.map +1 -0
- package/es/Geometry/models/index.d.ts +1 -1
- package/es/Geometry/models/index.js +3 -1
- package/es/Geometry/models/index.js.map +1 -1
- package/es/Geometry/models/plane.d.ts +13 -11
- package/es/Geometry/models/plane.js +134 -110
- package/es/Geometry/models/plane.js.map +1 -1
- package/es/canvas/models/canvas.js +5 -3
- package/es/canvas/models/canvas.js.map +1 -1
- package/es/core/BaseLayer.d.ts +5 -1
- package/es/core/BaseLayer.js +47 -0
- package/es/core/BaseLayer.js.map +1 -1
- package/es/core/interface.d.ts +5 -0
- package/es/core/interface.js.map +1 -1
- package/es/heatmap/index.d.ts +2 -0
- package/es/heatmap/index.js +9 -0
- package/es/heatmap/index.js.map +1 -1
- package/es/heatmap/models/heatmap.js +1 -0
- package/es/heatmap/models/heatmap.js.map +1 -1
- package/es/index.js.map +1 -1
- package/es/line/index.d.ts +1 -1
- package/es/line/index.js +1 -0
- package/es/line/index.js.map +1 -1
- package/es/line/models/index.d.ts +1 -1
- package/es/line/models/index.js +3 -1
- package/es/line/models/index.js.map +1 -1
- package/es/line/models/line.js +1 -0
- package/es/line/models/line.js.map +1 -1
- package/es/line/models/linearline.d.ts +20 -0
- package/es/line/models/linearline.js +267 -0
- package/es/line/models/linearline.js.map +1 -0
- package/es/point/models/fill.js +1 -0
- package/es/point/models/fill.js.map +1 -1
- package/es/point/models/normal.js +1 -0
- package/es/point/models/normal.js.map +1 -1
- package/es/point/models/simplePoint.js +1 -0
- package/es/point/models/simplePoint.js.map +1 -1
- package/es/polygon/models/fill.js +1 -0
- package/es/polygon/models/fill.js.map +1 -1
- package/es/utils/layerData.d.ts +2 -0
- package/es/utils/layerData.js +152 -0
- package/es/utils/layerData.js.map +1 -0
- package/lib/Geometry/index.js +4 -1
- package/lib/Geometry/index.js.map +1 -1
- package/lib/Geometry/models/billboard.js +233 -0
- package/lib/Geometry/models/billboard.js.map +1 -0
- package/lib/Geometry/models/index.js +4 -1
- package/lib/Geometry/models/index.js.map +1 -1
- package/lib/Geometry/models/plane.js +133 -108
- package/lib/Geometry/models/plane.js.map +1 -1
- package/lib/canvas/models/canvas.js +5 -3
- package/lib/canvas/models/canvas.js.map +1 -1
- package/lib/core/BaseLayer.js +47 -0
- package/lib/core/BaseLayer.js.map +1 -1
- package/lib/core/interface.js.map +1 -1
- package/lib/heatmap/index.js +9 -0
- package/lib/heatmap/index.js.map +1 -1
- package/lib/heatmap/models/heatmap.js +1 -0
- package/lib/heatmap/models/heatmap.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/line/index.js +1 -0
- package/lib/line/index.js.map +1 -1
- package/lib/line/models/index.js +4 -1
- package/lib/line/models/index.js.map +1 -1
- package/lib/line/models/line.js +1 -0
- package/lib/line/models/line.js.map +1 -1
- package/lib/line/models/linearline.js +283 -0
- package/lib/line/models/linearline.js.map +1 -0
- package/lib/point/models/fill.js +1 -0
- package/lib/point/models/fill.js.map +1 -1
- package/lib/point/models/normal.js +1 -0
- package/lib/point/models/normal.js.map +1 -1
- package/lib/point/models/simplePoint.js +1 -0
- package/lib/point/models/simplePoint.js.map +1 -1
- package/lib/polygon/models/fill.js +1 -0
- package/lib/polygon/models/fill.js.map +1 -1
- package/lib/utils/layerData.js +163 -0
- package/lib/utils/layerData.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,233 @@
|
|
|
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
|
|
14
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
|
|
16
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _l7Core = require("@antv/l7-core");
|
|
27
|
+
|
|
28
|
+
var _l7Utils = require("@antv/l7-utils");
|
|
29
|
+
|
|
30
|
+
var _BaseModel2 = _interopRequireDefault(require("../../core/BaseModel"));
|
|
31
|
+
|
|
32
|
+
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); }; }
|
|
33
|
+
|
|
34
|
+
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; } }
|
|
35
|
+
|
|
36
|
+
var planeFrag = "\nuniform sampler2D u_texture;\nuniform float u_opacity;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"picking\"\nvoid main() {\n gl_FragColor = texture2D(u_texture, vec2(v_uv.x, 1.0 - v_uv.y));\n gl_FragColor.a *= u_opacity;\n gl_FragColor = filterColor(gl_FragColor);\n}\n";
|
|
37
|
+
var planeVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform float u_raisingHeight: 0.0;\nuniform mat4 u_Mvp;\nuniform float u_opacity;\nuniform vec2 u_size: [1.0, 1.0];\nuniform mat2 u_RotateMatrix;\n\nattribute vec3 a_Extrude;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nattribute vec3 a_Color;\n\nvarying vec3 v_Color;\nvarying vec2 v_uv;\n\n#pragma include \"projection\"\n#pragma include \"picking\"\nvoid main() {\n vec3 extrude = a_Extrude;\n v_Color = a_Color;\n v_uv = a_Uv;\n\n float raiseHeight = u_raisingHeight;\n if(u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT || u_CoordinateSystem == COORDINATE_SYSTEM_LNGLAT_OFFSET) {\n float mapboxZoomScale = 4.0/pow(2.0, 21.0 - u_Zoom);\n raiseHeight = u_raisingHeight * mapboxZoomScale;\n }\n\n // \u8BA1\u7B97\u7ECF\u7EAC\u5EA6\u70B9\u4F4D\u5750\u6807\n vec4 project_pos = project_position(vec4(a_Position.xy, 0.0, 1.0));\n\n // \u8BA1\u7B97\u7ED5 z \u8F74\u65CB\u8F6C\u540E\u7684\u504F\u79FB\n vec2 offsetXY = project_pixel(u_RotateMatrix * vec2(extrude.x * u_size.x, 0.0));\n // \u7ED5 z \u8F74\u65CB\u8F6C\n float x = project_pos.x + offsetXY.x;\n float y = project_pos.y + offsetXY.y;\n // z \u8F74\u4E0D\u53C2\u4E0E\u65CB\u8F6C\n float z = project_pixel(extrude.y * u_size.y + raiseHeight);\n\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n // gl_Position = u_Mvp * (vec4(project_pos.xy, a_Position.z, 1.0));\n gl_Position = u_Mvp * (vec4(x, y, z, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(x , y, z , 1.0));\n }\n\n setPickingColor(a_PickingColor);\n}\n";
|
|
38
|
+
|
|
39
|
+
var BillBoardModel = function (_BaseModel) {
|
|
40
|
+
(0, _inherits2.default)(BillBoardModel, _BaseModel);
|
|
41
|
+
|
|
42
|
+
var _super = _createSuper(BillBoardModel);
|
|
43
|
+
|
|
44
|
+
function BillBoardModel() {
|
|
45
|
+
var _this;
|
|
46
|
+
|
|
47
|
+
(0, _classCallCheck2.default)(this, BillBoardModel);
|
|
48
|
+
|
|
49
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
50
|
+
args[_key] = arguments[_key];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
54
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
|
|
55
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImage", void 0);
|
|
56
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImageLoaded", false);
|
|
57
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapTexture", void 0);
|
|
58
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "radian", 0);
|
|
59
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
|
|
60
|
+
var _ref = _this.layer.getLayerConfig(),
|
|
61
|
+
_ref$center = _ref.center,
|
|
62
|
+
center = _ref$center === void 0 ? [120, 30] : _ref$center;
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
size: 4,
|
|
66
|
+
indices: [0, 1, 2, 2, 3, 0],
|
|
67
|
+
vertices: [].concat((0, _toConsumableArray2.default)(center), [1, 1], (0, _toConsumableArray2.default)(center), [0, 1], (0, _toConsumableArray2.default)(center), [0, 0], (0, _toConsumableArray2.default)(center), [1, 0])
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
return _this;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
(0, _createClass2.default)(BillBoardModel, [{
|
|
74
|
+
key: "getUninforms",
|
|
75
|
+
value: function getUninforms() {
|
|
76
|
+
var _ref2 = this.layer.getLayerConfig(),
|
|
77
|
+
opacity = _ref2.opacity,
|
|
78
|
+
_ref2$width = _ref2.width,
|
|
79
|
+
width = _ref2$width === void 0 ? 1 : _ref2$width,
|
|
80
|
+
_ref2$height = _ref2.height,
|
|
81
|
+
height = _ref2$height === void 0 ? 1 : _ref2$height,
|
|
82
|
+
_ref2$raisingHeight = _ref2.raisingHeight,
|
|
83
|
+
raisingHeight = _ref2$raisingHeight === void 0 ? 0 : _ref2$raisingHeight;
|
|
84
|
+
|
|
85
|
+
var rotateFlag = 1;
|
|
86
|
+
|
|
87
|
+
if (this.mapService.version === 'GAODE2.x' || this.mapService.version === 'GAODE1.x') {
|
|
88
|
+
rotateFlag = -1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
this.radian = rotateFlag * Math.PI * (this.mapService.getRotation() % 360) / 180;
|
|
92
|
+
return {
|
|
93
|
+
u_raisingHeight: Number(raisingHeight),
|
|
94
|
+
u_RotateMatrix: new Float32Array([Math.cos(this.radian), Math.sin(this.radian), -Math.sin(this.radian), Math.cos(this.radian)]),
|
|
95
|
+
u_opacity: opacity || 1,
|
|
96
|
+
u_texture: this.texture,
|
|
97
|
+
u_size: [width, height]
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "clearModels",
|
|
102
|
+
value: function clearModels() {
|
|
103
|
+
var _this$texture;
|
|
104
|
+
|
|
105
|
+
this.terrainImage = null;
|
|
106
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
107
|
+
}
|
|
108
|
+
}, {
|
|
109
|
+
key: "initModels",
|
|
110
|
+
value: function initModels() {
|
|
111
|
+
var _ref3 = this.layer.getLayerConfig(),
|
|
112
|
+
_ref3$mask = _ref3.mask,
|
|
113
|
+
mask = _ref3$mask === void 0 ? false : _ref3$mask,
|
|
114
|
+
_ref3$maskInside = _ref3.maskInside,
|
|
115
|
+
maskInside = _ref3$maskInside === void 0 ? true : _ref3$maskInside,
|
|
116
|
+
mapTexture = _ref3.mapTexture,
|
|
117
|
+
drawCanvas = _ref3.drawCanvas;
|
|
118
|
+
|
|
119
|
+
this.mapTexture = mapTexture;
|
|
120
|
+
var createTexture2D = this.rendererService.createTexture2D;
|
|
121
|
+
this.texture = createTexture2D({
|
|
122
|
+
height: 0,
|
|
123
|
+
width: 0
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
if (drawCanvas) {
|
|
127
|
+
this.updateTexture(drawCanvas);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return [this.layer.buildLayerModel({
|
|
131
|
+
moduleName: 'geometry_billboard',
|
|
132
|
+
vertexShader: planeVert,
|
|
133
|
+
fragmentShader: planeFrag,
|
|
134
|
+
triangulation: this.planeGeometryTriangulation,
|
|
135
|
+
primitive: _l7Core.gl.TRIANGLES,
|
|
136
|
+
depth: {
|
|
137
|
+
enable: true
|
|
138
|
+
},
|
|
139
|
+
blend: this.getBlend(),
|
|
140
|
+
stencil: (0, _l7Utils.getMask)(mask, maskInside)
|
|
141
|
+
})];
|
|
142
|
+
}
|
|
143
|
+
}, {
|
|
144
|
+
key: "buildModels",
|
|
145
|
+
value: function buildModels() {
|
|
146
|
+
return this.initModels();
|
|
147
|
+
}
|
|
148
|
+
}, {
|
|
149
|
+
key: "updateTexture",
|
|
150
|
+
value: function updateTexture(drawCanvas) {
|
|
151
|
+
var createTexture2D = this.rendererService.createTexture2D;
|
|
152
|
+
|
|
153
|
+
var _ref4 = this.layer.getLayerConfig(),
|
|
154
|
+
_ref4$canvasWidth = _ref4.canvasWidth,
|
|
155
|
+
canvasWidth = _ref4$canvasWidth === void 0 ? 1 : _ref4$canvasWidth,
|
|
156
|
+
_ref4$canvasHeight = _ref4.canvasHeight,
|
|
157
|
+
canvasHeight = _ref4$canvasHeight === void 0 ? 1 : _ref4$canvasHeight;
|
|
158
|
+
|
|
159
|
+
var canvas = document.createElement('canvas');
|
|
160
|
+
canvas.width = canvasWidth;
|
|
161
|
+
canvas.height = canvasHeight;
|
|
162
|
+
var ctx = canvas.getContext('2d');
|
|
163
|
+
|
|
164
|
+
if (ctx) {
|
|
165
|
+
drawCanvas(canvas);
|
|
166
|
+
this.texture = createTexture2D({
|
|
167
|
+
data: canvas,
|
|
168
|
+
width: canvas.width,
|
|
169
|
+
height: canvas.height,
|
|
170
|
+
wrapS: _l7Core.gl.CLAMP_TO_EDGE,
|
|
171
|
+
wrapT: _l7Core.gl.CLAMP_TO_EDGE
|
|
172
|
+
});
|
|
173
|
+
this.layerService.updateLayerRenderList();
|
|
174
|
+
this.layerService.renderLayers();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}, {
|
|
178
|
+
key: "getConfigSchema",
|
|
179
|
+
value: function getConfigSchema() {
|
|
180
|
+
return {
|
|
181
|
+
properties: {
|
|
182
|
+
opacity: {
|
|
183
|
+
type: 'number',
|
|
184
|
+
minimum: 0,
|
|
185
|
+
maximum: 1
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}, {
|
|
191
|
+
key: "registerBuiltinAttributes",
|
|
192
|
+
value: function registerBuiltinAttributes() {
|
|
193
|
+
this.styleAttributeService.registerStyleAttribute({
|
|
194
|
+
name: 'extrude',
|
|
195
|
+
type: _l7Core.AttributeType.Attribute,
|
|
196
|
+
descriptor: {
|
|
197
|
+
name: 'a_Extrude',
|
|
198
|
+
buffer: {
|
|
199
|
+
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
200
|
+
data: [],
|
|
201
|
+
type: _l7Core.gl.FLOAT
|
|
202
|
+
},
|
|
203
|
+
size: 3,
|
|
204
|
+
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
205
|
+
var extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];
|
|
206
|
+
var extrudeIndex = attributeIdx % 4 * 3;
|
|
207
|
+
return [extrude[extrudeIndex], extrude[extrudeIndex + 1], extrude[extrudeIndex + 2]];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
this.styleAttributeService.registerStyleAttribute({
|
|
212
|
+
name: 'uv',
|
|
213
|
+
type: _l7Core.AttributeType.Attribute,
|
|
214
|
+
descriptor: {
|
|
215
|
+
name: 'a_Uv',
|
|
216
|
+
buffer: {
|
|
217
|
+
usage: _l7Core.gl.DYNAMIC_DRAW,
|
|
218
|
+
data: [],
|
|
219
|
+
type: _l7Core.gl.FLOAT
|
|
220
|
+
},
|
|
221
|
+
size: 2,
|
|
222
|
+
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
223
|
+
return [vertex[2], vertex[3]];
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}]);
|
|
229
|
+
return BillBoardModel;
|
|
230
|
+
}(_BaseModel2.default);
|
|
231
|
+
|
|
232
|
+
exports.default = BillBoardModel;
|
|
233
|
+
//# sourceMappingURL=billboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/Geometry/models/billboard.ts"],"names":["BillBoardModel","layer","getLayerConfig","center","size","indices","vertices","opacity","width","height","raisingHeight","rotateFlag","mapService","version","radian","Math","PI","getRotation","u_raisingHeight","Number","u_RotateMatrix","Float32Array","cos","sin","u_opacity","u_texture","texture","u_size","terrainImage","destroy","mask","maskInside","mapTexture","drawCanvas","createTexture2D","rendererService","updateTexture","buildLayerModel","moduleName","vertexShader","planeVert","fragmentShader","planeFrag","triangulation","planeGeometryTriangulation","primitive","gl","TRIANGLES","depth","enable","blend","getBlend","stencil","initModels","canvasWidth","canvasHeight","canvas","document","createElement","ctx","getContext","data","wrapS","CLAMP_TO_EDGE","wrapT","layerService","updateLayerRenderList","renderLayers","properties","type","minimum","maximum","styleAttributeService","registerStyleAttribute","name","AttributeType","Attribute","descriptor","buffer","usage","DYNAMIC_DRAW","FLOAT","update","feature","featureIdx","vertex","attributeIdx","extrude","extrudeIndex","BaseModel"],"mappings":"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","sourcesContent":["import {\n AttributeType,\n gl,\n IAttrubuteAndElements,\n IEncodeFeature,\n IModelUniform,\n ITexture2D,\n} from '@antv/l7-core';\nimport { getMask, isMini } from '@antv/l7-utils';\nimport BaseModel from '../../core/BaseModel';\nimport { IGeometryLayerStyleOptions } from '../../core/interface';\nimport planeFrag from '../shaders/billboard_frag.glsl';\nimport planeVert from '../shaders/billboard_vert.glsl';\n\nexport default class BillBoardModel extends BaseModel {\n protected texture: ITexture2D;\n protected terrainImage: HTMLImageElement;\n protected terrainImageLoaded: boolean = false;\n protected mapTexture: string | undefined;\n private radian: number = 0; // 旋转的弧度\n\n public planeGeometryTriangulation = () => {\n const {\n center = [120, 30],\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n return {\n size: 4,\n indices: [0, 1, 2, 2, 3, 0],\n vertices: [\n ...center,\n ...[1, 1],\n ...center,\n ...[0, 1],\n ...center,\n ...[0, 0],\n ...center,\n ...[1, 0],\n ],\n };\n };\n\n public getUninforms(): IModelUniform {\n const {\n opacity,\n width = 1,\n height = 1,\n raisingHeight = 0,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n\n /**\n * rotateFlag\n * L7MAP 1\n * MAPBOX 1\n * GAODE2.x -1\n * GAODE1.x -1\n */\n let rotateFlag = 1;\n if (\n this.mapService.version === 'GAODE2.x' ||\n this.mapService.version === 'GAODE1.x'\n ) {\n rotateFlag = -1;\n }\n // 控制图标的旋转角度(绕 Z 轴旋转)\n this.radian =\n (rotateFlag * Math.PI * (this.mapService.getRotation() % 360)) / 180;\n\n return {\n u_raisingHeight: Number(raisingHeight),\n u_RotateMatrix: new Float32Array([\n // z\n Math.cos(this.radian),\n Math.sin(this.radian),\n -Math.sin(this.radian),\n Math.cos(this.radian),\n ]),\n u_opacity: opacity || 1,\n u_texture: this.texture,\n u_size: [width, height],\n };\n }\n\n public clearModels(): void {\n // @ts-ignore\n this.terrainImage = null;\n this.texture?.destroy();\n }\n\n public initModels() {\n const {\n mask = false,\n maskInside = true,\n mapTexture,\n drawCanvas,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n this.mapTexture = mapTexture;\n\n const { createTexture2D } = this.rendererService;\n this.texture = createTexture2D({\n height: 0,\n width: 0,\n });\n\n if (drawCanvas) {\n this.updateTexture(drawCanvas);\n }\n\n return [\n this.layer.buildLayerModel({\n moduleName: 'geometry_billboard',\n vertexShader: planeVert,\n fragmentShader: planeFrag,\n triangulation: this.planeGeometryTriangulation,\n primitive: gl.TRIANGLES,\n // primitive: gl.LINES,\n depth: { enable: true },\n blend: this.getBlend(),\n stencil: getMask(mask, maskInside),\n }),\n ];\n }\n\n public buildModels() {\n return this.initModels();\n }\n\n public updateTexture(drawCanvas: (canvas: HTMLCanvasElement) => void): void {\n const { createTexture2D } = this.rendererService;\n\n const {\n canvasWidth = 1,\n canvasHeight = 1,\n } = this.layer.getLayerConfig() as IGeometryLayerStyleOptions;\n const canvas = document.createElement('canvas');\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n const ctx = canvas.getContext('2d');\n if (ctx) {\n drawCanvas(canvas);\n this.texture = createTexture2D({\n data: canvas,\n width: canvas.width,\n height: canvas.height,\n wrapS: gl.CLAMP_TO_EDGE,\n wrapT: gl.CLAMP_TO_EDGE,\n });\n this.layerService.updateLayerRenderList();\n this.layerService.renderLayers();\n }\n }\n\n protected getConfigSchema() {\n return {\n properties: {\n opacity: {\n type: 'number',\n minimum: 0,\n maximum: 1,\n },\n },\n };\n }\n\n protected registerBuiltinAttributes() {\n this.styleAttributeService.registerStyleAttribute({\n name: 'extrude',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Extrude',\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 extrude = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0];\n const extrudeIndex = (attributeIdx % 4) * 3;\n return [\n extrude[extrudeIndex],\n extrude[extrudeIndex + 1],\n extrude[extrudeIndex + 2],\n ];\n },\n },\n });\n // point layer size;\n this.styleAttributeService.registerStyleAttribute({\n name: 'uv',\n type: AttributeType.Attribute,\n descriptor: {\n name: 'a_Uv',\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 return [vertex[2], vertex[3]];\n },\n },\n });\n }\n}\n"],"file":"billboard.js"}
|
|
@@ -7,13 +7,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _billboard = _interopRequireDefault(require("./billboard"));
|
|
11
|
+
|
|
10
12
|
var _plane = _interopRequireDefault(require("./plane"));
|
|
11
13
|
|
|
12
14
|
var _sprite = _interopRequireDefault(require("./sprite"));
|
|
13
15
|
|
|
14
16
|
var GeometryModels = {
|
|
15
17
|
plane: _plane.default,
|
|
16
|
-
sprite: _sprite.default
|
|
18
|
+
sprite: _sprite.default,
|
|
19
|
+
billboard: _billboard.default
|
|
17
20
|
};
|
|
18
21
|
var _default = GeometryModels;
|
|
19
22
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Geometry/models/index.ts"],"names":["GeometryModels","plane","PlaneModel","sprite","SpriteModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA,IAAMA,cAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAEC,cADmD;AAE1DC,EAAAA,MAAM,EAAEC;
|
|
1
|
+
{"version":3,"sources":["../../../src/Geometry/models/index.ts"],"names":["GeometryModels","plane","PlaneModel","sprite","SpriteModel","billboard","BillBoardModel"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AAGA,IAAMA,cAAmD,GAAG;AAC1DC,EAAAA,KAAK,EAAEC,cADmD;AAE1DC,EAAAA,MAAM,EAAEC,eAFkD;AAG1DC,EAAAA,SAAS,EAAEC;AAH+C,CAA5D;eAKeN,c","sourcesContent":["import BillBoardModel from './billboard';\nimport PlaneModel from './plane';\nimport SpriteModel from './sprite';\nexport type GeometryModelType = 'plane' | 'sprite' | 'billboard';\n\nconst GeometryModels: { [key in GeometryModelType]: any } = {\n plane: PlaneModel,\n sprite: SpriteModel,\n billboard: BillBoardModel,\n};\nexport default GeometryModels;\n"],"file":"index.js"}
|
|
@@ -56,9 +56,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
56
56
|
|
|
57
57
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
58
58
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "texture", void 0);
|
|
59
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImage", void 0);
|
|
60
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "terrainImageLoaded", false);
|
|
59
61
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mapTexture", void 0);
|
|
60
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "positions", void 0);
|
|
61
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "indices", void 0);
|
|
62
62
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryTriangulation", function () {
|
|
63
63
|
var _this2;
|
|
64
64
|
|
|
@@ -79,11 +79,8 @@ var PlaneModel = function (_BaseModel) {
|
|
|
79
79
|
indices = _this$initPlane.indices,
|
|
80
80
|
positions = _this$initPlane.positions;
|
|
81
81
|
|
|
82
|
-
_this.positions = positions;
|
|
83
|
-
_this.indices = indices;
|
|
84
|
-
|
|
85
82
|
if (terrainTexture) {
|
|
86
|
-
_this.loadTerrainTexture();
|
|
83
|
+
_this.loadTerrainTexture(positions, indices);
|
|
87
84
|
}
|
|
88
85
|
|
|
89
86
|
return {
|
|
@@ -92,13 +89,6 @@ var PlaneModel = function (_BaseModel) {
|
|
|
92
89
|
size: 5
|
|
93
90
|
};
|
|
94
91
|
});
|
|
95
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "planeGeometryUpdateTriangulation", function () {
|
|
96
|
-
return {
|
|
97
|
-
vertices: _this.positions,
|
|
98
|
-
indices: _this.indices,
|
|
99
|
-
size: 5
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
92
|
return _this;
|
|
103
93
|
}
|
|
104
94
|
|
|
@@ -132,9 +122,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
132
122
|
var _ref2 = this.mapService.lngLatToCoord([x + lng, -y + lat]),
|
|
133
123
|
_ref3 = (0, _slicedToArray2.default)(_ref2, 2),
|
|
134
124
|
a = _ref3[0],
|
|
135
|
-
|
|
125
|
+
_b = _ref3[1];
|
|
136
126
|
|
|
137
|
-
positions.push(a,
|
|
127
|
+
positions.push(a, _b, 0);
|
|
138
128
|
} else {
|
|
139
129
|
positions.push(x + lng, -y + lat, 0);
|
|
140
130
|
}
|
|
@@ -148,12 +138,12 @@ var PlaneModel = function (_BaseModel) {
|
|
|
148
138
|
for (var _ix = 0; _ix < gridX; _ix++) {
|
|
149
139
|
var _a = _ix + gridX1 * _iy;
|
|
150
140
|
|
|
151
|
-
var
|
|
141
|
+
var _b2 = _ix + gridX1 * (_iy + 1);
|
|
152
142
|
|
|
153
143
|
var c = _ix + 1 + gridX1 * (_iy + 1);
|
|
154
144
|
var d = _ix + 1 + gridX1 * _iy;
|
|
155
|
-
indices.push(_a,
|
|
156
|
-
indices.push(
|
|
145
|
+
indices.push(_a, _b2, d);
|
|
146
|
+
indices.push(_b2, c, d);
|
|
157
147
|
}
|
|
158
148
|
}
|
|
159
149
|
|
|
@@ -192,6 +182,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
192
182
|
value: function clearModels() {
|
|
193
183
|
var _this$texture2;
|
|
194
184
|
|
|
185
|
+
this.terrainImage = null;
|
|
195
186
|
(_this$texture2 = this.texture) === null || _this$texture2 === void 0 ? void 0 : _this$texture2.destroy();
|
|
196
187
|
}
|
|
197
188
|
}, {
|
|
@@ -228,101 +219,42 @@ var PlaneModel = function (_BaseModel) {
|
|
|
228
219
|
}
|
|
229
220
|
})];
|
|
230
221
|
}
|
|
231
|
-
}, {
|
|
232
|
-
key: "getImageData",
|
|
233
|
-
value: function getImageData(img) {
|
|
234
|
-
var canvas = document.createElement('canvas');
|
|
235
|
-
var ctx = canvas.getContext('2d');
|
|
236
|
-
var width = img.width,
|
|
237
|
-
height = img.height;
|
|
238
|
-
canvas.width = width;
|
|
239
|
-
canvas.height = height;
|
|
240
|
-
ctx.drawImage(img, 0, 0, width, height);
|
|
241
|
-
var imageData = ctx.getImageData(0, 0, width, height);
|
|
242
|
-
return imageData;
|
|
243
|
-
}
|
|
244
|
-
}, {
|
|
245
|
-
key: "loadTerrainTexture",
|
|
246
|
-
value: function loadTerrainTexture() {
|
|
247
|
-
var _this3 = this;
|
|
248
|
-
|
|
249
|
-
var _ref6 = this.layer.getLayerConfig(),
|
|
250
|
-
_ref6$mask = _ref6.mask,
|
|
251
|
-
mask = _ref6$mask === void 0 ? false : _ref6$mask,
|
|
252
|
-
_ref6$maskInside = _ref6.maskInside,
|
|
253
|
-
maskInside = _ref6$maskInside === void 0 ? true : _ref6$maskInside,
|
|
254
|
-
_ref6$widthSegments = _ref6.widthSegments,
|
|
255
|
-
widthSegments = _ref6$widthSegments === void 0 ? 1 : _ref6$widthSegments,
|
|
256
|
-
_ref6$heightSegments = _ref6.heightSegments,
|
|
257
|
-
heightSegments = _ref6$heightSegments === void 0 ? 1 : _ref6$heightSegments,
|
|
258
|
-
terrainTexture = _ref6.terrainTexture,
|
|
259
|
-
_ref6$rgb2height = _ref6.rgb2height,
|
|
260
|
-
rgb2height = _ref6$rgb2height === void 0 ? function (r, g, b) {
|
|
261
|
-
return r + g + b;
|
|
262
|
-
} : _ref6$rgb2height;
|
|
263
|
-
|
|
264
|
-
var terrainImage = new Image();
|
|
265
|
-
terrainImage.crossOrigin = 'anonymous';
|
|
266
|
-
|
|
267
|
-
terrainImage.onload = function () {
|
|
268
|
-
var imgWidth = terrainImage.width;
|
|
269
|
-
var imgHeight = terrainImage.height;
|
|
270
|
-
|
|
271
|
-
var imageData = _this3.getImageData(terrainImage).data;
|
|
272
|
-
|
|
273
|
-
var gridX = Math.floor(widthSegments);
|
|
274
|
-
var gridY = Math.floor(heightSegments);
|
|
275
|
-
var gridX1 = gridX + 1;
|
|
276
|
-
var gridY1 = gridY + 1;
|
|
277
|
-
var widthStep = imgWidth / gridX;
|
|
278
|
-
var heihgtStep = imgHeight / gridY;
|
|
279
|
-
|
|
280
|
-
for (var iy = 0; iy < gridY1; iy++) {
|
|
281
|
-
var imgIndexY = Math.floor(iy * heihgtStep);
|
|
282
|
-
var imgLen = imgIndexY * imgWidth;
|
|
283
|
-
|
|
284
|
-
for (var ix = 0; ix < gridX1; ix++) {
|
|
285
|
-
var imgIndexX = Math.floor(ix * widthStep);
|
|
286
|
-
var imgDataIndex = (imgLen + imgIndexX) * 4;
|
|
287
|
-
var r = imageData[imgDataIndex];
|
|
288
|
-
var g = imageData[imgDataIndex + 1];
|
|
289
|
-
var b = imageData[imgDataIndex + 2];
|
|
290
|
-
var z = (iy * gridX1 + ix) * 5 + 2;
|
|
291
|
-
_this3.positions[z] = rgb2height(r, g, b);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
_this3.layer.models = [_this3.layer.buildLayerModel({
|
|
296
|
-
moduleName: 'geometry_plane',
|
|
297
|
-
vertexShader: planeVert,
|
|
298
|
-
fragmentShader: planeFrag,
|
|
299
|
-
triangulation: _this3.planeGeometryUpdateTriangulation,
|
|
300
|
-
primitive: _l7Core.gl.TRIANGLES,
|
|
301
|
-
depth: {
|
|
302
|
-
enable: true
|
|
303
|
-
},
|
|
304
|
-
blend: _this3.getBlend(),
|
|
305
|
-
stencil: (0, _l7Utils.getMask)(mask, maskInside),
|
|
306
|
-
cull: {
|
|
307
|
-
enable: true,
|
|
308
|
-
face: _l7Core.gl.BACK
|
|
309
|
-
}
|
|
310
|
-
})];
|
|
311
|
-
|
|
312
|
-
_this3.layerService.renderLayers();
|
|
313
|
-
};
|
|
314
|
-
|
|
315
|
-
terrainImage.src = terrainTexture;
|
|
316
|
-
}
|
|
317
222
|
}, {
|
|
318
223
|
key: "buildModels",
|
|
319
224
|
value: function buildModels() {
|
|
320
225
|
return this.initModels();
|
|
321
226
|
}
|
|
227
|
+
}, {
|
|
228
|
+
key: "createModelData",
|
|
229
|
+
value: function createModelData(options) {
|
|
230
|
+
if (options) {
|
|
231
|
+
var _ref6 = this.layer.getLayerConfig(),
|
|
232
|
+
oldwidthSegments = _ref6.widthSegments,
|
|
233
|
+
oldheightSegments = _ref6.heightSegments,
|
|
234
|
+
oldwidth = _ref6.width,
|
|
235
|
+
oldheight = _ref6.height;
|
|
236
|
+
|
|
237
|
+
var _ref7 = options,
|
|
238
|
+
widthSegments = _ref7.widthSegments,
|
|
239
|
+
heightSegments = _ref7.heightSegments,
|
|
240
|
+
width = _ref7.width,
|
|
241
|
+
height = _ref7.height;
|
|
242
|
+
this.layer.style({
|
|
243
|
+
widthSegments: widthSegments !== undefined ? widthSegments : oldwidthSegments,
|
|
244
|
+
heightSegments: heightSegments !== undefined ? heightSegments : oldheightSegments,
|
|
245
|
+
width: width !== undefined ? width : oldwidth,
|
|
246
|
+
height: height !== undefined ? height : oldheight
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
var oldFeatures = this.layer.getEncodedData();
|
|
251
|
+
var res = this.styleAttributeService.createAttributesAndIndices(oldFeatures, this.planeGeometryTriangulation);
|
|
252
|
+
return res;
|
|
253
|
+
}
|
|
322
254
|
}, {
|
|
323
255
|
key: "updateTexture",
|
|
324
256
|
value: function updateTexture(mapTexture) {
|
|
325
|
-
var
|
|
257
|
+
var _this3 = this;
|
|
326
258
|
|
|
327
259
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
328
260
|
|
|
@@ -331,7 +263,7 @@ var PlaneModel = function (_BaseModel) {
|
|
|
331
263
|
img.crossOrigin = 'anonymous';
|
|
332
264
|
|
|
333
265
|
img.onload = function () {
|
|
334
|
-
|
|
266
|
+
_this3.texture = createTexture2D({
|
|
335
267
|
data: img,
|
|
336
268
|
width: img.width,
|
|
337
269
|
height: img.height,
|
|
@@ -339,9 +271,9 @@ var PlaneModel = function (_BaseModel) {
|
|
|
339
271
|
wrapT: _l7Core.gl.CLAMP_TO_EDGE
|
|
340
272
|
});
|
|
341
273
|
|
|
342
|
-
|
|
274
|
+
_this3.layerService.updateLayerRenderList();
|
|
343
275
|
|
|
344
|
-
|
|
276
|
+
_this3.layerService.renderLayers();
|
|
345
277
|
};
|
|
346
278
|
|
|
347
279
|
img.src = mapTexture;
|
|
@@ -352,6 +284,99 @@ var PlaneModel = function (_BaseModel) {
|
|
|
352
284
|
});
|
|
353
285
|
}
|
|
354
286
|
}
|
|
287
|
+
}, {
|
|
288
|
+
key: "getImageData",
|
|
289
|
+
value: function getImageData(img) {
|
|
290
|
+
var canvas = document.createElement('canvas');
|
|
291
|
+
var ctx = canvas.getContext('2d');
|
|
292
|
+
var width = img.width,
|
|
293
|
+
height = img.height;
|
|
294
|
+
canvas.width = width;
|
|
295
|
+
canvas.height = height;
|
|
296
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
297
|
+
var imageData = ctx.getImageData(0, 0, width, height);
|
|
298
|
+
return imageData;
|
|
299
|
+
}
|
|
300
|
+
}, {
|
|
301
|
+
key: "translateVertex",
|
|
302
|
+
value: function translateVertex(positions, indices, image, widthSegments, heightSegments, rgb2height) {
|
|
303
|
+
var imgWidth = image.width;
|
|
304
|
+
var imgHeight = image.height;
|
|
305
|
+
var imageData = this.getImageData(image).data;
|
|
306
|
+
var gridX = Math.floor(widthSegments);
|
|
307
|
+
var gridY = Math.floor(heightSegments);
|
|
308
|
+
var gridX1 = gridX + 1;
|
|
309
|
+
var gridY1 = gridY + 1;
|
|
310
|
+
var widthStep = imgWidth / gridX;
|
|
311
|
+
var heihgtStep = imgHeight / gridY;
|
|
312
|
+
|
|
313
|
+
for (var iy = 0; iy < gridY1; iy++) {
|
|
314
|
+
var imgIndexY = Math.floor(iy * heihgtStep);
|
|
315
|
+
var imgLen = imgIndexY * imgWidth;
|
|
316
|
+
|
|
317
|
+
for (var ix = 0; ix < gridX1; ix++) {
|
|
318
|
+
var imgIndexX = Math.floor(ix * widthStep);
|
|
319
|
+
var imgDataIndex = (imgLen + imgIndexX) * 4;
|
|
320
|
+
var _r = imageData[imgDataIndex];
|
|
321
|
+
var _g = imageData[imgDataIndex + 1];
|
|
322
|
+
var _b3 = imageData[imgDataIndex + 2];
|
|
323
|
+
var z = (iy * gridX1 + ix) * 5 + 2;
|
|
324
|
+
positions[z] = rgb2height(_r, _g, _b3);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
var oldFeatures = this.layer.getEncodedData();
|
|
329
|
+
var modelData = this.styleAttributeService.createAttributesAndIndices(oldFeatures, function () {
|
|
330
|
+
return {
|
|
331
|
+
vertices: positions,
|
|
332
|
+
indices: indices,
|
|
333
|
+
size: 5
|
|
334
|
+
};
|
|
335
|
+
});
|
|
336
|
+
this.layer.updateModelData(modelData);
|
|
337
|
+
this.layerService.renderLayers();
|
|
338
|
+
}
|
|
339
|
+
}, {
|
|
340
|
+
key: "loadTerrainTexture",
|
|
341
|
+
value: function loadTerrainTexture(positions, indices) {
|
|
342
|
+
var _this4 = this;
|
|
343
|
+
|
|
344
|
+
var _ref8 = this.layer.getLayerConfig(),
|
|
345
|
+
_ref8$widthSegments = _ref8.widthSegments,
|
|
346
|
+
widthSegments = _ref8$widthSegments === void 0 ? 1 : _ref8$widthSegments,
|
|
347
|
+
_ref8$heightSegments = _ref8.heightSegments,
|
|
348
|
+
heightSegments = _ref8$heightSegments === void 0 ? 1 : _ref8$heightSegments,
|
|
349
|
+
terrainTexture = _ref8.terrainTexture,
|
|
350
|
+
_ref8$rgb2height = _ref8.rgb2height,
|
|
351
|
+
rgb2height = _ref8$rgb2height === void 0 ? function (r, g, b) {
|
|
352
|
+
return r + g + b;
|
|
353
|
+
} : _ref8$rgb2height;
|
|
354
|
+
|
|
355
|
+
if (this.terrainImage) {
|
|
356
|
+
if (this.terrainImageLoaded) {
|
|
357
|
+
this.translateVertex(positions, indices, this.terrainImage, widthSegments, heightSegments, rgb2height);
|
|
358
|
+
} else {
|
|
359
|
+
this.terrainImage.onload = function () {
|
|
360
|
+
_this4.translateVertex(positions, indices, _this4.terrainImage, widthSegments, heightSegments, rgb2height);
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
} else {
|
|
364
|
+
var terrainImage = new Image();
|
|
365
|
+
this.terrainImage = terrainImage;
|
|
366
|
+
terrainImage.crossOrigin = 'anonymous';
|
|
367
|
+
|
|
368
|
+
terrainImage.onload = function () {
|
|
369
|
+
_this4.terrainImageLoaded = true;
|
|
370
|
+
setTimeout(function () {
|
|
371
|
+
return _this4.layer.emit('terrainImageLoaded', null);
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
_this4.translateVertex(positions, indices, terrainImage, widthSegments, heightSegments, rgb2height);
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
terrainImage.src = terrainTexture;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
355
380
|
}, {
|
|
356
381
|
key: "getConfigSchema",
|
|
357
382
|
value: function getConfigSchema() {
|