@openglobus/og 0.11.7 → 0.12.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.
- package/css/og.css +5 -2
- package/dist/@openglobus/og.css +1 -0
- package/dist/@openglobus/og.esm.js +21 -0
- package/dist/@openglobus/og.esm.js.map +1 -0
- package/dist/@openglobus/og.umd.js +21 -0
- package/dist/@openglobus/og.umd.js.map +1 -0
- package/package.json +11 -11
- package/src/og/Globe.js +18 -6
- package/src/og/camera/Camera.js +70 -79
- package/src/og/camera/PlanetCamera.js +25 -30
- package/src/og/control/DebugInfo.js +2 -2
- package/src/og/control/EarthNavigation.js +26 -17
- package/src/og/control/Lighting.js +52 -73
- package/src/og/control/MouseNavigation.js +30 -29
- package/src/og/control/MouseWheelZoomControl.js +257 -0
- package/src/og/control/Sun.js +3 -3
- package/src/og/control/index.js +2 -0
- package/src/og/control/visibleExtent/Segment.js +1862 -0
- package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
- package/src/og/control/visibleExtent/drawnode.js +751 -0
- package/src/og/entity/BaseBillboard.js +9 -9
- package/src/og/entity/Entity.js +742 -742
- package/src/og/entity/GeoObjectHandler.js +138 -134
- package/src/og/entity/Label.js +7 -7
- package/src/og/entity/LabelHandler.js +2 -1
- package/src/og/layer/CanvasTiles.js +8 -12
- package/src/og/layer/GeoImage.js +2 -10
- package/src/og/layer/GeoTexture2d.js +2 -10
- package/src/og/layer/GeoVideo.js +2 -10
- package/src/og/layer/KML.js +19 -12
- package/src/og/layer/Layer.js +4 -23
- package/src/og/layer/WMS.js +0 -2
- package/src/og/layer/XYZ.js +31 -33
- package/src/og/math/Vec3.js +18 -2
- package/src/og/quadTree/Node.js +48 -93
- package/src/og/quadTree/quadTree.js +1 -1
- package/src/og/renderer/Renderer.js +69 -96
- package/src/og/renderer/RendererEvents.js +3 -1
- package/src/og/scene/Planet.js +171 -173
- package/src/og/segment/Segment.js +99 -268
- package/src/og/segment/Slice.js +45 -0
- package/src/og/shaders/drawnode.js +171 -350
- package/src/og/shaders/geoObject.js +15 -6
- package/src/og/terrain/EmptyTerrain.js +3 -2
- package/src/og/terrain/GlobusTerrain.js +2 -0
- package/src/og/utils/GeoImageCreator.js +5 -1
- package/src/og/utils/Loader.js +1 -1
- package/src/og/utils/PlainSegmentWorker.js +0 -13
- package/src/og/webgl/Handler.js +14 -10
- package/types/Clock.d.ts +94 -0
- package/types/Deferred.d.ts +6 -0
- package/types/Events.d.ts +77 -0
- package/types/Extent.d.ts +166 -0
- package/types/Globe.d.ts +85 -0
- package/types/ImageCanvas.d.ts +123 -0
- package/types/Lock.d.ts +12 -0
- package/types/LonLat.d.ts +108 -0
- package/types/Popup.d.ts +42 -0
- package/types/QueueArray.d.ts +19 -0
- package/types/Rectangle.d.ts +80 -0
- package/types/Stack.d.ts +19 -0
- package/types/ajax.d.ts +24 -0
- package/types/arial.d.ts +48 -0
- package/types/astro/astro.d.ts +38 -0
- package/types/astro/earth.d.ts +7 -0
- package/types/astro/jd.d.ts +254 -0
- package/types/bv/Box.d.ts +30 -0
- package/types/bv/Sphere.d.ts +38 -0
- package/types/bv/index.d.ts +3 -0
- package/types/camera/Camera.d.ts +312 -0
- package/types/camera/Frustum.d.ts +133 -0
- package/types/camera/PlanetCamera.d.ts +219 -0
- package/types/camera/index.d.ts +3 -0
- package/types/cons.d.ts +40 -0
- package/types/control/CompassButton.d.ts +17 -0
- package/types/control/Control.d.ts +104 -0
- package/types/control/DebugInfo.d.ts +15 -0
- package/types/control/EarthCoordinates.d.ts +47 -0
- package/types/control/EarthNavigation.d.ts +43 -0
- package/types/control/GeoImageDragControl.d.ts +6 -0
- package/types/control/KeyboardNavigation.d.ts +21 -0
- package/types/control/LayerSwitcher.d.ts +21 -0
- package/types/control/Lighting.d.ts +16 -0
- package/types/control/MouseNavigation.d.ts +48 -0
- package/types/control/MouseWheelZoomControl.d.ts +45 -0
- package/types/control/ScaleControl.d.ts +22 -0
- package/types/control/ShowFps.d.ts +11 -0
- package/types/control/SimpleNavigation.d.ts +25 -0
- package/types/control/Sun.d.ts +50 -0
- package/types/control/ToggleWireframe.d.ts +12 -0
- package/types/control/TouchNavigation.d.ts +48 -0
- package/types/control/ZoomControl.d.ts +27 -0
- package/types/control/index.d.ts +18 -0
- package/types/ellipsoid/Ellipsoid.d.ts +146 -0
- package/types/ellipsoid/index.d.ts +3 -0
- package/types/ellipsoid/wgs84.d.ts +6 -0
- package/types/entity/BaseBillboard.d.ts +215 -0
- package/types/entity/Billboard.d.ts +94 -0
- package/types/entity/BillboardHandler.d.ts +79 -0
- package/types/entity/Entity.d.ts +348 -0
- package/types/entity/EntityCollection.d.ts +317 -0
- package/types/entity/GeoObject.d.ts +111 -0
- package/types/entity/GeoObjectHandler.d.ts +81 -0
- package/types/entity/Geometry.d.ts +74 -0
- package/types/entity/GeometryHandler.d.ts +76 -0
- package/types/entity/Label.d.ts +189 -0
- package/types/entity/LabelHandler.d.ts +31 -0
- package/types/entity/LabelWorker.d.ts +11 -0
- package/types/entity/PointCloud.d.ts +174 -0
- package/types/entity/PointCloudHandler.d.ts +38 -0
- package/types/entity/Polyline.d.ts +306 -0
- package/types/entity/PolylineHandler.d.ts +18 -0
- package/types/entity/Ray.d.ts +124 -0
- package/types/entity/RayHandler.d.ts +67 -0
- package/types/entity/ShapeHandler.d.ts +22 -0
- package/types/entity/Strip.d.ts +119 -0
- package/types/entity/StripHandler.d.ts +38 -0
- package/types/entity/index.d.ts +8 -0
- package/types/index.core.d.ts +65 -0
- package/types/index.d.ts +45 -0
- package/types/index.webgl.d.ts +7 -0
- package/types/input/KeyboardHandler.d.ts +10 -0
- package/types/input/MouseHandler.d.ts +5 -0
- package/types/input/TouchHandler.d.ts +5 -0
- package/types/input/input.d.ts +34 -0
- package/types/layer/BaseGeoImage.d.ts +94 -0
- package/types/layer/CanvasTiles.d.ts +67 -0
- package/types/layer/GeoImage.d.ts +52 -0
- package/types/layer/GeoTexture2d.d.ts +8 -0
- package/types/layer/GeoVideo.d.ts +55 -0
- package/types/layer/KML.d.ts +68 -0
- package/types/layer/Layer.d.ts +310 -0
- package/types/layer/Material.d.ts +45 -0
- package/types/layer/Vector.d.ts +208 -0
- package/types/layer/WMS.d.ts +61 -0
- package/types/layer/XYZ.d.ts +119 -0
- package/types/layer/index.d.ts +10 -0
- package/types/light/LightSource.d.ts +178 -0
- package/types/math/Line2.d.ts +11 -0
- package/types/math/Line3.d.ts +10 -0
- package/types/math/Mat3.d.ts +65 -0
- package/types/math/Mat4.d.ts +176 -0
- package/types/math/Plane.d.ts +18 -0
- package/types/math/Quat.d.ts +379 -0
- package/types/math/Ray.d.ts +82 -0
- package/types/math/Vec2.d.ts +309 -0
- package/types/math/Vec3.d.ts +467 -0
- package/types/math/Vec4.d.ts +162 -0
- package/types/math/coder.d.ts +43 -0
- package/types/math/index.d.ts +11 -0
- package/types/math.d.ts +261 -0
- package/types/mercator.d.ts +92 -0
- package/types/proj/EPSG3857.d.ts +6 -0
- package/types/proj/EPSG4326.d.ts +6 -0
- package/types/proj/Proj.d.ts +42 -0
- package/types/quadTree/EntityCollectionNode.d.ts +34 -0
- package/types/quadTree/Node.d.ts +60 -0
- package/types/quadTree/quadTree.d.ts +40 -0
- package/types/renderer/Renderer.d.ts +290 -0
- package/types/renderer/RendererEvents.d.ts +237 -0
- package/types/res/images.d.ts +3 -0
- package/types/scene/Axes.d.ts +11 -0
- package/types/scene/BaseNode.d.ts +60 -0
- package/types/scene/Planet.d.ts +576 -0
- package/types/scene/RenderNode.d.ts +142 -0
- package/types/scene/SkyBox.d.ts +10 -0
- package/types/scene/index.d.ts +4 -0
- package/types/segment/Segment.d.ts +275 -0
- package/types/segment/SegmentLonLat.d.ts +17 -0
- package/types/segment/Slice.d.ts +10 -0
- package/types/segment/segmentHelper.d.ts +13 -0
- package/types/shaders/billboard.d.ts +3 -0
- package/types/shaders/depth.d.ts +2 -0
- package/types/shaders/drawnode.d.ts +7 -0
- package/types/shaders/geoObject.d.ts +3 -0
- package/types/shaders/label.d.ts +4 -0
- package/types/shaders/pointCloud.d.ts +2 -0
- package/types/shaders/polyline.d.ts +3 -0
- package/types/shaders/ray.d.ts +2 -0
- package/types/shaders/screenFrame.d.ts +2 -0
- package/types/shaders/shape.d.ts +4 -0
- package/types/shaders/skybox.d.ts +2 -0
- package/types/shaders/toneMapping.d.ts +2 -0
- package/types/shapes/BaseShape.d.ts +250 -0
- package/types/shapes/Sphere.d.ts +41 -0
- package/types/terrain/BilTerrain.d.ts +7 -0
- package/types/terrain/EmptyTerrain.d.ts +73 -0
- package/types/terrain/Geoid.d.ts +26 -0
- package/types/terrain/GlobusTerrain.d.ts +116 -0
- package/types/terrain/MapboxTerrain.d.ts +7 -0
- package/types/terrain/index.d.ts +5 -0
- package/types/utils/FontAtlas.d.ts +15 -0
- package/types/utils/GeoImageCreator.d.ts +30 -0
- package/types/utils/ImagesCacheManager.d.ts +10 -0
- package/types/utils/Loader.d.ts +25 -0
- package/types/utils/NormalMapCreator.d.ts +39 -0
- package/types/utils/PlainSegmentWorker.d.ts +10 -0
- package/types/utils/TerrainWorker.d.ts +9 -0
- package/types/utils/TextureAtlas.d.ts +111 -0
- package/types/utils/VectorTileCreator.d.ts +16 -0
- package/types/utils/colorTable.d.ts +143 -0
- package/types/utils/earcut.d.ts +6 -0
- package/types/utils/shared.d.ts +231 -0
- package/types/webgl/Framebuffer.d.ts +135 -0
- package/types/webgl/Handler.d.ts +417 -0
- package/types/webgl/Multisample.d.ts +89 -0
- package/types/webgl/Program.d.ts +161 -0
- package/types/webgl/ProgramController.d.ts +89 -0
- package/types/webgl/callbacks.d.ts +1 -0
- package/types/webgl/index.d.ts +6 -0
- package/types/webgl/types.d.ts +2 -0
|
@@ -12,26 +12,11 @@ import { Box } from "../bv/Box.js";
|
|
|
12
12
|
import { Vec3 } from "../math/Vec3.js";
|
|
13
13
|
import * as segmentHelper from "../segment/segmentHelper.js";
|
|
14
14
|
import { getMatrixSubArray } from "../utils/shared.js";
|
|
15
|
-
|
|
16
|
-
export const MAX_NORMAL_ZOOM = 7;
|
|
15
|
+
import { Slice } from "./Slice.js";
|
|
17
16
|
|
|
18
17
|
var _tempHigh = new Vec3();
|
|
19
18
|
var _tempLow = new Vec3();
|
|
20
19
|
|
|
21
|
-
var _RenderingSlice = function (p) {
|
|
22
|
-
this.layers = [];
|
|
23
|
-
this.tileOffsetArr = new Float32Array(p.SLICE_SIZE_4);
|
|
24
|
-
this.visibleExtentOffsetArr = new Float32Array(p.SLICE_SIZE_4);
|
|
25
|
-
this.transparentColorArr = new Float32Array(p.SLICE_SIZE_4);
|
|
26
|
-
|
|
27
|
-
this.clear = function () {
|
|
28
|
-
this.layers = null;
|
|
29
|
-
this.tileOffsetArr = null;
|
|
30
|
-
this.visibleExtentOffsetArr = null;
|
|
31
|
-
this.transparentColorArr = null;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
|
|
35
20
|
let _v0 = new Vec3(),
|
|
36
21
|
_v1 = new Vec3(),
|
|
37
22
|
_v2 = new Vec3(),
|
|
@@ -54,8 +39,6 @@ _V[E] = true;
|
|
|
54
39
|
_V[S] = false;
|
|
55
40
|
_V[W] = true;
|
|
56
41
|
|
|
57
|
-
window.BBSC = 100;
|
|
58
|
-
|
|
59
42
|
/**
|
|
60
43
|
* Planet segment Web Mercator tile class that stored and rendered with quad tree.
|
|
61
44
|
* @class
|
|
@@ -110,10 +93,17 @@ class Segment {
|
|
|
110
93
|
*/
|
|
111
94
|
this.bbox = new Box();
|
|
112
95
|
|
|
113
|
-
this._swNorm = null;
|
|
114
|
-
this._nwNorm = null;
|
|
115
|
-
this._seNorm = null;
|
|
116
|
-
this._neNorm = null;
|
|
96
|
+
//this._swNorm = null;
|
|
97
|
+
//this._nwNorm = null;
|
|
98
|
+
//this._seNorm = null;
|
|
99
|
+
//this._neNorm = null;
|
|
100
|
+
|
|
101
|
+
this._sw = new Vec3();
|
|
102
|
+
this._nw = new Vec3();
|
|
103
|
+
this._se = new Vec3();
|
|
104
|
+
this._ne = new Vec3();
|
|
105
|
+
|
|
106
|
+
this.centerNormal = new Vec3();
|
|
117
107
|
|
|
118
108
|
/**
|
|
119
109
|
* Geographical extent.
|
|
@@ -209,6 +199,12 @@ class Segment {
|
|
|
209
199
|
*/
|
|
210
200
|
this.terrainExists = false;
|
|
211
201
|
|
|
202
|
+
/**
|
|
203
|
+
* Means that tree passage reach the segment, and the segment terrain is ready.
|
|
204
|
+
* @type {boolean}
|
|
205
|
+
*/
|
|
206
|
+
this.passReady = false;
|
|
207
|
+
|
|
212
208
|
this.plainVertices = null;
|
|
213
209
|
this.plainVerticesHigh = null;
|
|
214
210
|
this.plainVerticesLow = null;
|
|
@@ -241,7 +237,7 @@ class Segment {
|
|
|
241
237
|
this._inTheQueue = false;
|
|
242
238
|
this._appliedNeighborsZoom = [0, 0, 0, 0];
|
|
243
239
|
|
|
244
|
-
this.
|
|
240
|
+
this._slices = [];
|
|
245
241
|
|
|
246
242
|
this._indexBuffer = null;
|
|
247
243
|
|
|
@@ -250,19 +246,6 @@ class Segment {
|
|
|
250
246
|
this.plainProcessing = false;
|
|
251
247
|
}
|
|
252
248
|
|
|
253
|
-
/**
|
|
254
|
-
* Returns that segment good for rendering with camera by current lod ratio.
|
|
255
|
-
* @public
|
|
256
|
-
* @param {Camera} camera - Camera object.
|
|
257
|
-
* @returns {boolean} -
|
|
258
|
-
*/
|
|
259
|
-
acceptForRendering(camera) {
|
|
260
|
-
return (
|
|
261
|
-
camera.projectedSize(this.bsphere.center, this._plainRadius) <
|
|
262
|
-
256 / this.planet._lodRatio
|
|
263
|
-
);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
249
|
/**
|
|
267
250
|
* Returns entity terrain point.
|
|
268
251
|
* @public
|
|
@@ -946,12 +929,12 @@ class Segment {
|
|
|
946
929
|
|
|
947
930
|
this.clearSegment();
|
|
948
931
|
|
|
949
|
-
var i = this.
|
|
932
|
+
var i = this._slices.length;
|
|
950
933
|
while (i--) {
|
|
951
|
-
this.
|
|
934
|
+
this._slices[i].clear();
|
|
952
935
|
}
|
|
953
936
|
|
|
954
|
-
this.
|
|
937
|
+
this._slices = null;
|
|
955
938
|
|
|
956
939
|
this.node = null;
|
|
957
940
|
|
|
@@ -990,9 +973,6 @@ class Segment {
|
|
|
990
973
|
this.vertexPositionBufferLow = null;
|
|
991
974
|
this.vertexTextureCoordBuffer = null;
|
|
992
975
|
|
|
993
|
-
this._tileOffsetArr = null;
|
|
994
|
-
this._visibleExtentOffsetArr = null;
|
|
995
|
-
|
|
996
976
|
this._projection = null;
|
|
997
977
|
this._appliedNeighborsZoom = null;
|
|
998
978
|
|
|
@@ -1013,22 +993,19 @@ class Segment {
|
|
|
1013
993
|
var coord_sw = ellipsoid.geodeticToCartesian(extent.southWest.lon, extent.southWest.lat);
|
|
1014
994
|
var coord_ne = ellipsoid.geodeticToCartesian(extent.northEast.lon, extent.northEast.lat);
|
|
1015
995
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
extent.southWest.lat
|
|
1025
|
-
);
|
|
996
|
+
var coord_nw = ellipsoid.geodeticToCartesian(
|
|
997
|
+
extent.southWest.lon,
|
|
998
|
+
extent.northEast.lat
|
|
999
|
+
);
|
|
1000
|
+
var coord_se = ellipsoid.geodeticToCartesian(
|
|
1001
|
+
extent.northEast.lon,
|
|
1002
|
+
extent.southWest.lat
|
|
1003
|
+
);
|
|
1026
1004
|
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
}
|
|
1005
|
+
this._sw.copy(coord_sw);
|
|
1006
|
+
this._nw.copy(coord_nw);
|
|
1007
|
+
this._ne.copy(coord_ne);
|
|
1008
|
+
this._se.copy(coord_se);
|
|
1032
1009
|
|
|
1033
1010
|
this.setBoundingVolume3v(coord_sw, coord_ne);
|
|
1034
1011
|
}
|
|
@@ -1057,31 +1034,30 @@ class Segment {
|
|
|
1057
1034
|
this.bsphere.center.z = pn.segment.bsphere.center.z;
|
|
1058
1035
|
this.bsphere.radius = pn.segment.bsphere.radius;
|
|
1059
1036
|
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
let j0 = gridSize * offsetX;
|
|
1037
|
+
let i0 = gridSize * offsetY;
|
|
1038
|
+
let j0 = gridSize * offsetX;
|
|
1063
1039
|
|
|
1064
|
-
|
|
1040
|
+
let pnGsOne = pn.segment.gridSize + 1;
|
|
1065
1041
|
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1042
|
+
let ind_sw = 3 * ((i0 + gridSize) * pnGsOne + j0),
|
|
1043
|
+
ind_nw = 3 * (i0 * pnGsOne + j0),
|
|
1044
|
+
ind_ne = 3 * (i0 * pnGsOne + j0 + gridSize),
|
|
1045
|
+
ind_se = 3 * ((i0 + gridSize) * pnGsOne + j0 + gridSize);
|
|
1070
1046
|
|
|
1071
|
-
|
|
1047
|
+
let pVerts = pn.segment.tempVertices;
|
|
1072
1048
|
|
|
1073
|
-
|
|
1074
|
-
|
|
1049
|
+
let v_sw = new Vec3(pVerts[ind_sw], pVerts[ind_sw + 1], pVerts[ind_sw + 2]),
|
|
1050
|
+
v_ne = new Vec3(pVerts[ind_ne], pVerts[ind_ne + 1], pVerts[ind_ne + 2]);
|
|
1075
1051
|
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1052
|
+
// check for segment zoom
|
|
1053
|
+
let v_nw = new Vec3(pVerts[ind_nw], pVerts[ind_nw + 1], pVerts[ind_nw + 2]),
|
|
1054
|
+
v_se = new Vec3(pVerts[ind_se], pVerts[ind_se + 1], pVerts[ind_se + 2]);
|
|
1055
|
+
|
|
1056
|
+
this._sw.copy(v_sw);
|
|
1057
|
+
this._nw.copy(v_nw);
|
|
1058
|
+
this._ne.copy(v_ne);
|
|
1059
|
+
this._se.copy(v_se);
|
|
1079
1060
|
|
|
1080
|
-
this._swNorm = v_sw.normal();
|
|
1081
|
-
this._nwNorm = v_nw.normal();
|
|
1082
|
-
this._neNorm = v_ne.normal();
|
|
1083
|
-
this._seNorm = v_se.normal();
|
|
1084
|
-
}
|
|
1085
1061
|
} else {
|
|
1086
1062
|
let pseg = pn.segment;
|
|
1087
1063
|
|
|
@@ -1104,10 +1080,10 @@ class Segment {
|
|
|
1104
1080
|
v_rb = new Vec3(bigOne[9], bigOne[10], bigOne[11]);
|
|
1105
1081
|
|
|
1106
1082
|
let vn = new Vec3(
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1083
|
+
bigOne[3] - bigOne[0],
|
|
1084
|
+
bigOne[4] - bigOne[1],
|
|
1085
|
+
bigOne[5] - bigOne[2]
|
|
1086
|
+
),
|
|
1111
1087
|
vw = new Vec3(
|
|
1112
1088
|
bigOne[6] - bigOne[0],
|
|
1113
1089
|
bigOne[7] - bigOne[1],
|
|
@@ -1291,13 +1267,13 @@ class Segment {
|
|
|
1291
1267
|
n.sideSize[2] =
|
|
1292
1268
|
n.sideSize[3] =
|
|
1293
1269
|
this.gridSize =
|
|
1294
|
-
|
|
1270
|
+
p.terrain.gridSizeByZoom[this.tileZoom] || p.terrain.plainGridSize;
|
|
1295
1271
|
|
|
1296
1272
|
n.sideSizeLog2[0] =
|
|
1297
1273
|
n.sideSizeLog2[1] =
|
|
1298
1274
|
n.sideSizeLog2[2] =
|
|
1299
1275
|
n.sideSizeLog2[3] =
|
|
1300
|
-
|
|
1276
|
+
Math.log2(p.terrain.gridSizeByZoom[this.tileZoom] || p.terrain.plainGridSize);
|
|
1301
1277
|
|
|
1302
1278
|
if (this.tileZoom <= p.terrain.maxZoom) {
|
|
1303
1279
|
var nmc = this.planet._normalMapCreator;
|
|
@@ -1484,11 +1460,12 @@ class Segment {
|
|
|
1484
1460
|
|
|
1485
1461
|
var notEmpty = false;
|
|
1486
1462
|
|
|
1487
|
-
var slice = this.
|
|
1463
|
+
var slice = this._slices[sliceIndex];
|
|
1488
1464
|
|
|
1489
1465
|
if (!slice) {
|
|
1490
|
-
slice = this.
|
|
1466
|
+
slice = this._slices[sliceIndex] = new Slice(this);
|
|
1491
1467
|
} else {
|
|
1468
|
+
//TODO: optimization!!!
|
|
1492
1469
|
slice.layers = [];
|
|
1493
1470
|
}
|
|
1494
1471
|
|
|
@@ -1511,40 +1488,7 @@ class Segment {
|
|
|
1511
1488
|
this.planet._renderCompleted = false;
|
|
1512
1489
|
}
|
|
1513
1490
|
|
|
1514
|
-
slice.
|
|
1515
|
-
|
|
1516
|
-
var n4 = n * 4,
|
|
1517
|
-
n3 = n * 3;
|
|
1518
|
-
|
|
1519
|
-
var arr = li.applyMaterial(m);
|
|
1520
|
-
slice.tileOffsetArr[n4] = arr[0];
|
|
1521
|
-
slice.tileOffsetArr[n4 + 1] = arr[1];
|
|
1522
|
-
slice.tileOffsetArr[n4 + 2] = arr[2];
|
|
1523
|
-
slice.tileOffsetArr[n4 + 3] = arr[3];
|
|
1524
|
-
|
|
1525
|
-
arr = this._getLayerExtentOffset(li);
|
|
1526
|
-
slice.visibleExtentOffsetArr[n4] = arr[0];
|
|
1527
|
-
slice.visibleExtentOffsetArr[n4 + 1] = arr[1];
|
|
1528
|
-
slice.visibleExtentOffsetArr[n4 + 2] = arr[2];
|
|
1529
|
-
slice.visibleExtentOffsetArr[n4 + 3] = arr[3];
|
|
1530
|
-
|
|
1531
|
-
slice.transparentColorArr[n4] = li.transparentColor[0];
|
|
1532
|
-
slice.transparentColorArr[n4 + 1] = li.transparentColor[1];
|
|
1533
|
-
slice.transparentColorArr[n4 + 2] = li.transparentColor[2];
|
|
1534
|
-
slice.transparentColorArr[n4 + 3] = li.opacity;
|
|
1535
|
-
|
|
1536
|
-
p._diffuseMaterialArr[n3 + 3] = li.diffuse.x;
|
|
1537
|
-
p._diffuseMaterialArr[n3 + 1 + 3] = li.diffuse.y;
|
|
1538
|
-
p._diffuseMaterialArr[n3 + 2 + 3] = li.diffuse.z;
|
|
1539
|
-
|
|
1540
|
-
p._ambientMaterialArr[n3 + 3] = li.ambient.x;
|
|
1541
|
-
p._ambientMaterialArr[n3 + 1 + 3] = li.ambient.y;
|
|
1542
|
-
p._ambientMaterialArr[n3 + 2 + 3] = li.ambient.z;
|
|
1543
|
-
|
|
1544
|
-
p._specularMaterialArr[n4 + 4] = li.specular.x;
|
|
1545
|
-
p._specularMaterialArr[n4 + 1 + 4] = li.specular.y;
|
|
1546
|
-
p._specularMaterialArr[n4 + 2 + 4] = li.specular.z;
|
|
1547
|
-
p._specularMaterialArr[n4 + 3 + 4] = li.shininess;
|
|
1491
|
+
slice.append(li, m);
|
|
1548
1492
|
|
|
1549
1493
|
p._samplerArr[n] = n;
|
|
1550
1494
|
|
|
@@ -1561,9 +1505,12 @@ class Segment {
|
|
|
1561
1505
|
gl.uniform1i(shu.samplerCount, n);
|
|
1562
1506
|
gl.uniform1f(shu.height, currHeight);
|
|
1563
1507
|
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1508
|
+
|
|
1509
|
+
//slice.uniform(gl, shu);
|
|
1510
|
+
|
|
1564
1511
|
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1565
|
-
gl.
|
|
1566
|
-
gl.uniform4fv(shu.
|
|
1512
|
+
gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
|
|
1513
|
+
//gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1567
1514
|
|
|
1568
1515
|
// bind normalmap texture
|
|
1569
1516
|
if (p.lightEnabled) {
|
|
@@ -1575,30 +1522,12 @@ class Segment {
|
|
|
1575
1522
|
|
|
1576
1523
|
// bind segment specular and night material texture coordinates
|
|
1577
1524
|
gl.uniform4fv(shu.uGlobalTextureCoord, this._globalTextureCoordinates);
|
|
1578
|
-
|
|
1579
|
-
gl.uniform3fv(shu.diffuseMaterial, p._diffuseMaterialArr);
|
|
1580
|
-
gl.uniform3fv(shu.ambientMaterial, p._ambientMaterialArr);
|
|
1581
|
-
gl.uniform4fv(shu.specularMaterial, p._specularMaterialArr);
|
|
1582
1525
|
}
|
|
1583
1526
|
|
|
1584
1527
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1585
|
-
gl.vertexAttribPointer(
|
|
1586
|
-
sha.aVertexPositionHigh,
|
|
1587
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1588
|
-
gl.FLOAT,
|
|
1589
|
-
false,
|
|
1590
|
-
0,
|
|
1591
|
-
0
|
|
1592
|
-
);
|
|
1528
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1593
1529
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1594
|
-
gl.vertexAttribPointer(
|
|
1595
|
-
sha.aVertexPositionLow,
|
|
1596
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1597
|
-
gl.FLOAT,
|
|
1598
|
-
false,
|
|
1599
|
-
0,
|
|
1600
|
-
0
|
|
1601
|
-
);
|
|
1530
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1602
1531
|
|
|
1603
1532
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1604
1533
|
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
@@ -1608,7 +1537,7 @@ class Segment {
|
|
|
1608
1537
|
}
|
|
1609
1538
|
}
|
|
1610
1539
|
|
|
1611
|
-
heightPickingRendering(sh, layerSlice
|
|
1540
|
+
heightPickingRendering(sh, layerSlice) {
|
|
1612
1541
|
var gl = this.handler.gl;
|
|
1613
1542
|
var sha = sh.attributes,
|
|
1614
1543
|
shu = sh.uniforms;
|
|
@@ -1616,11 +1545,6 @@ class Segment {
|
|
|
1616
1545
|
var pm = this.materials,
|
|
1617
1546
|
p = this.planet;
|
|
1618
1547
|
|
|
1619
|
-
// First always draw whole planet base layer segment with solid texture.
|
|
1620
|
-
gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE);
|
|
1621
|
-
gl.bindTexture(gl.TEXTURE_2D, defaultTexture || p.solidTextureOne);
|
|
1622
|
-
gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE);
|
|
1623
|
-
|
|
1624
1548
|
var currHeight;
|
|
1625
1549
|
if (layerSlice) {
|
|
1626
1550
|
currHeight = layerSlice[0]._height;
|
|
@@ -1628,53 +1552,16 @@ class Segment {
|
|
|
1628
1552
|
currHeight = 0;
|
|
1629
1553
|
}
|
|
1630
1554
|
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
var slice = this._renderingSlices[sliceIndex];
|
|
1555
|
+
gl.uniform1f(shu.height, currHeight);
|
|
1634
1556
|
|
|
1635
|
-
|
|
1557
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1558
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1636
1559
|
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
p._samplerArr[n] = n;
|
|
1640
|
-
gl.activeTexture(gl.TEXTURE0 + n);
|
|
1641
|
-
gl.bindTexture(gl.TEXTURE_2D, pm[slice.layers[n]._id].texture || p.transparentTexture);
|
|
1642
|
-
}
|
|
1560
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1561
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1643
1562
|
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
gl.uniform1f(shu.height, currHeight);
|
|
1647
|
-
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1648
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1649
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1650
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1651
|
-
|
|
1652
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1653
|
-
gl.vertexAttribPointer(
|
|
1654
|
-
sha.aVertexPositionHigh,
|
|
1655
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1656
|
-
gl.FLOAT,
|
|
1657
|
-
false,
|
|
1658
|
-
0,
|
|
1659
|
-
0
|
|
1660
|
-
);
|
|
1661
|
-
|
|
1662
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1663
|
-
gl.vertexAttribPointer(
|
|
1664
|
-
sha.aVertexPositionLow,
|
|
1665
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1666
|
-
gl.FLOAT,
|
|
1667
|
-
false,
|
|
1668
|
-
0,
|
|
1669
|
-
0
|
|
1670
|
-
);
|
|
1671
|
-
|
|
1672
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1673
|
-
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
1674
|
-
|
|
1675
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1676
|
-
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1677
|
-
}
|
|
1563
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1564
|
+
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1678
1565
|
}
|
|
1679
1566
|
|
|
1680
1567
|
colorPickingRendering(sh, layerSlice, sliceIndex, defaultTexture, isOverlay) {
|
|
@@ -1694,9 +1581,11 @@ class Segment {
|
|
|
1694
1581
|
|
|
1695
1582
|
var notEmpty = false;
|
|
1696
1583
|
|
|
1697
|
-
var slice = this.
|
|
1584
|
+
var slice = this._slices[sliceIndex];
|
|
1698
1585
|
|
|
1699
|
-
|
|
1586
|
+
let len = slice.layers.length;
|
|
1587
|
+
|
|
1588
|
+
for (let n = 0; n < len; n++) {
|
|
1700
1589
|
notEmpty = true;
|
|
1701
1590
|
|
|
1702
1591
|
var li = slice.layers[n];
|
|
@@ -1717,33 +1606,22 @@ class Segment {
|
|
|
1717
1606
|
}
|
|
1718
1607
|
|
|
1719
1608
|
if (notEmpty || !isOverlay) {
|
|
1720
|
-
gl.uniform1i(shu.samplerCount,
|
|
1609
|
+
gl.uniform1i(shu.samplerCount, len);
|
|
1721
1610
|
gl.uniform1f(shu.height, currHeight);
|
|
1722
1611
|
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1723
1612
|
gl.uniform1iv(shu.pickingMaskArr, p._pickingMaskArr);
|
|
1724
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1725
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1726
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1727
1613
|
gl.uniform4fv(shu.pickingColorArr, p._pickingColorArr);
|
|
1728
1614
|
|
|
1615
|
+
//slice.uniform(gl, shu);
|
|
1616
|
+
|
|
1617
|
+
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1618
|
+
gl.uniform1fv(shu.layerOpacityArr, slice.layerOpacityArr);
|
|
1619
|
+
//gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1620
|
+
|
|
1729
1621
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1730
|
-
gl.vertexAttribPointer(
|
|
1731
|
-
sha.aVertexPositionHigh,
|
|
1732
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1733
|
-
gl.FLOAT,
|
|
1734
|
-
false,
|
|
1735
|
-
0,
|
|
1736
|
-
0
|
|
1737
|
-
);
|
|
1622
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1738
1623
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1739
|
-
gl.vertexAttribPointer(
|
|
1740
|
-
sha.aVertexPositionLow,
|
|
1741
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1742
|
-
gl.FLOAT,
|
|
1743
|
-
false,
|
|
1744
|
-
0,
|
|
1745
|
-
0
|
|
1746
|
-
);
|
|
1624
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1747
1625
|
|
|
1748
1626
|
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1749
1627
|
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
@@ -1753,19 +1631,11 @@ class Segment {
|
|
|
1753
1631
|
}
|
|
1754
1632
|
}
|
|
1755
1633
|
|
|
1756
|
-
depthRendering(sh, layerSlice
|
|
1634
|
+
depthRendering(sh, layerSlice) {
|
|
1757
1635
|
var gl = this.handler.gl;
|
|
1758
1636
|
var sha = sh.attributes,
|
|
1759
1637
|
shu = sh.uniforms;
|
|
1760
1638
|
|
|
1761
|
-
var pm = this.materials,
|
|
1762
|
-
p = this.planet;
|
|
1763
|
-
|
|
1764
|
-
// First always draw whole planet base layer segment with solid texture.
|
|
1765
|
-
gl.activeTexture(gl.TEXTURE0 + p.SLICE_SIZE);
|
|
1766
|
-
gl.bindTexture(gl.TEXTURE_2D, defaultTexture || p.solidTextureOne);
|
|
1767
|
-
gl.uniform1i(shu.defaultTexture, p.SLICE_SIZE);
|
|
1768
|
-
|
|
1769
1639
|
var currHeight;
|
|
1770
1640
|
if (layerSlice) {
|
|
1771
1641
|
currHeight = layerSlice[0]._height;
|
|
@@ -1773,62 +1643,23 @@ class Segment {
|
|
|
1773
1643
|
currHeight = 0;
|
|
1774
1644
|
}
|
|
1775
1645
|
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
var slice = this._renderingSlices[sliceIndex];
|
|
1646
|
+
gl.uniform1f(shu.height, currHeight);
|
|
1779
1647
|
|
|
1780
|
-
|
|
1648
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferHigh);
|
|
1649
|
+
gl.vertexAttribPointer(sha.aVertexPositionHigh, this.vertexPositionBufferHigh.itemSize, gl.FLOAT, false, 0, 0);
|
|
1781
1650
|
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
p._samplerArr[n] = n;
|
|
1785
|
-
gl.activeTexture(gl.TEXTURE0 + n);
|
|
1786
|
-
gl.bindTexture(gl.TEXTURE_2D, pm[slice.layers[n]._id].texture || p.transparentTexture);
|
|
1787
|
-
}
|
|
1788
|
-
|
|
1789
|
-
if (notEmpty || !isOverlay) {
|
|
1790
|
-
gl.uniform1i(shu.samplerCount, n);
|
|
1791
|
-
gl.uniform1f(shu.height, currHeight);
|
|
1792
|
-
gl.uniform1iv(shu.samplerArr, p._samplerArr);
|
|
1793
|
-
gl.uniform4fv(shu.tileOffsetArr, slice.tileOffsetArr);
|
|
1794
|
-
gl.uniform4fv(shu.visibleExtentOffsetArr, slice.visibleExtentOffsetArr);
|
|
1795
|
-
gl.uniform4fv(shu.transparentColorArr, slice.transparentColorArr);
|
|
1651
|
+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1652
|
+
gl.vertexAttribPointer(sha.aVertexPositionLow, this.vertexPositionBufferLow.itemSize, gl.FLOAT, false, 0, 0);
|
|
1796
1653
|
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
sha.aVertexPositionHigh,
|
|
1800
|
-
this.vertexPositionBufferHigh.itemSize,
|
|
1801
|
-
gl.FLOAT,
|
|
1802
|
-
false,
|
|
1803
|
-
0,
|
|
1804
|
-
0
|
|
1805
|
-
);
|
|
1806
|
-
|
|
1807
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexPositionBufferLow);
|
|
1808
|
-
gl.vertexAttribPointer(
|
|
1809
|
-
sha.aVertexPositionLow,
|
|
1810
|
-
this.vertexPositionBufferLow.itemSize,
|
|
1811
|
-
gl.FLOAT,
|
|
1812
|
-
false,
|
|
1813
|
-
0,
|
|
1814
|
-
0
|
|
1815
|
-
);
|
|
1816
|
-
|
|
1817
|
-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexTextureCoordBuffer);
|
|
1818
|
-
gl.vertexAttribPointer(sha.aTextureCoord, 2, gl.UNSIGNED_SHORT, true, 0, 0);
|
|
1819
|
-
|
|
1820
|
-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1821
|
-
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1822
|
-
}
|
|
1654
|
+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
|
|
1655
|
+
gl.drawElements(gl.TRIANGLE_STRIP, this._indexBuffer.numItems, gl.UNSIGNED_INT, 0);
|
|
1823
1656
|
}
|
|
1824
1657
|
|
|
1825
1658
|
_getIndexBuffer() {
|
|
1826
1659
|
var s = this.node.sideSizeLog2;
|
|
1827
1660
|
var cache = this.planet._indexesCache[Math.log2(this.gridSize)][s[0]][s[1]][s[2]][s[3]];
|
|
1828
1661
|
if (!cache.buffer) {
|
|
1829
|
-
let indexes = segmentHelper
|
|
1830
|
-
.getInstance()
|
|
1831
|
-
.createSegmentIndexes(Math.log2(this.gridSize), [s[0], s[1], s[2], s[3]]);
|
|
1662
|
+
let indexes = segmentHelper.getInstance().createSegmentIndexes(Math.log2(this.gridSize), [s[0], s[1], s[2], s[3]]);
|
|
1832
1663
|
cache.buffer = this.planet.renderer.handler.createElementArrayBuffer(indexes, 1);
|
|
1833
1664
|
this.planet._indexesCacheToRemoveCounter++;
|
|
1834
1665
|
indexes = null;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class Slice {
|
|
4
|
+
constructor(segment) {
|
|
5
|
+
this.segment = segment;
|
|
6
|
+
this.layers = [];
|
|
7
|
+
this.tileOffsetArr = new Float32Array(segment.planet.SLICE_SIZE_4);
|
|
8
|
+
this.layerOpacityArr = new Float32Array(segment.planet.SLICE_SIZE);
|
|
9
|
+
this.init();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init() {}
|
|
13
|
+
|
|
14
|
+
clear() {
|
|
15
|
+
this.layers = null;
|
|
16
|
+
this.tileOffsetArr = null;
|
|
17
|
+
this.layerOpacityArr = null;
|
|
18
|
+
//this.visibleExtentOffsetArr = null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
append(layer, material) {
|
|
22
|
+
let n = this.layers.length;
|
|
23
|
+
|
|
24
|
+
this.layers.push(layer);
|
|
25
|
+
|
|
26
|
+
this.layerOpacityArr[n] = layer.opacity;
|
|
27
|
+
|
|
28
|
+
let n4 = n * 4;
|
|
29
|
+
|
|
30
|
+
let arr = layer.applyMaterial(material);
|
|
31
|
+
this.tileOffsetArr[n4] = arr[0];
|
|
32
|
+
this.tileOffsetArr[n4 + 1] = arr[1];
|
|
33
|
+
this.tileOffsetArr[n4 + 2] = arr[2];
|
|
34
|
+
this.tileOffsetArr[n4 + 3] = arr[3];
|
|
35
|
+
|
|
36
|
+
//arr = this.segment._getLayerExtentOffset(layer);
|
|
37
|
+
//slice.visibleExtentOffsetArr[n4] = arr[0];
|
|
38
|
+
//slice.visibleExtentOffsetArr[n4 + 1] = arr[1];
|
|
39
|
+
//slice.visibleExtentOffsetArr[n4 + 2] = arr[2];
|
|
40
|
+
//slice.visibleExtentOffsetArr[n4 + 3] = arr[3];
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { Slice }
|