@treasuryspatial/map-kit 0.1.4 → 0.1.6
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/dist/mapThreeLayer.d.ts.map +1 -1
- package/dist/mapThreeLayer.js +52 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapThreeLayer.d.ts","sourceRoot":"","sources":["../src/mapThreeLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"mapThreeLayer.d.ts","sourceRoot":"","sources":["../src/mapThreeLayer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACjE,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;IAC3F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAuPhF"}
|
package/dist/mapThreeLayer.js
CHANGED
|
@@ -20,6 +20,7 @@ export function createMapThreeLayer(options) {
|
|
|
20
20
|
let targetHeight = 0;
|
|
21
21
|
let renderDisabled = false;
|
|
22
22
|
let errorCount = 0;
|
|
23
|
+
let hasRenderable = false;
|
|
23
24
|
const log = (...args) => {
|
|
24
25
|
if (!debug)
|
|
25
26
|
return;
|
|
@@ -44,6 +45,28 @@ export function createMapThreeLayer(options) {
|
|
|
44
45
|
log(`Framebuffer incomplete (${label})`, status);
|
|
45
46
|
}
|
|
46
47
|
};
|
|
48
|
+
const updateRenderable = (group) => {
|
|
49
|
+
if (!group) {
|
|
50
|
+
hasRenderable = false;
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
let found = false;
|
|
54
|
+
group.traverse((child) => {
|
|
55
|
+
if (found)
|
|
56
|
+
return;
|
|
57
|
+
const mesh = child;
|
|
58
|
+
if (!mesh.isMesh)
|
|
59
|
+
return;
|
|
60
|
+
if (mesh.visible === false)
|
|
61
|
+
return;
|
|
62
|
+
const geometry = mesh.geometry;
|
|
63
|
+
const position = geometry?.getAttribute?.('position');
|
|
64
|
+
if (position && position.count > 0) {
|
|
65
|
+
found = true;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
hasRenderable = found;
|
|
69
|
+
};
|
|
47
70
|
const layer = {
|
|
48
71
|
id,
|
|
49
72
|
type: 'custom',
|
|
@@ -57,6 +80,8 @@ export function createMapThreeLayer(options) {
|
|
|
57
80
|
context: gl,
|
|
58
81
|
antialias: true,
|
|
59
82
|
logarithmicDepthBuffer: true,
|
|
83
|
+
alpha: true,
|
|
84
|
+
premultipliedAlpha: true,
|
|
60
85
|
});
|
|
61
86
|
renderer.autoClear = false;
|
|
62
87
|
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
|
@@ -97,6 +122,8 @@ export function createMapThreeLayer(options) {
|
|
|
97
122
|
return;
|
|
98
123
|
if (!renderer || !scene || !camera || !rootGroup || !renderTarget)
|
|
99
124
|
return;
|
|
125
|
+
if (!hasRenderable)
|
|
126
|
+
return;
|
|
100
127
|
try {
|
|
101
128
|
camera.projectionMatrix = new THREE.Matrix4().fromArray(matrix);
|
|
102
129
|
if (mercatorOrigin) {
|
|
@@ -113,8 +140,16 @@ export function createMapThreeLayer(options) {
|
|
|
113
140
|
log('renderTarget resized', { width: targetWidth, height: targetHeight });
|
|
114
141
|
}
|
|
115
142
|
renderer.setRenderTarget(renderTarget);
|
|
116
|
-
renderer.
|
|
143
|
+
renderer.resetState();
|
|
117
144
|
const gl = renderer.getContext();
|
|
145
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
146
|
+
gl.disable(gl.STENCIL_TEST);
|
|
147
|
+
gl.colorMask(true, true, true, true);
|
|
148
|
+
gl.depthMask(true);
|
|
149
|
+
renderer.setViewport(0, 0, targetWidth, targetHeight);
|
|
150
|
+
renderer.setClearColor(0x000000, 0);
|
|
151
|
+
renderer.setClearAlpha(0);
|
|
152
|
+
renderer.clear(true, true, true);
|
|
118
153
|
checkFramebuffer(gl, 'prerender');
|
|
119
154
|
renderer.render(scene, camera);
|
|
120
155
|
logGlError(gl, 'prerender');
|
|
@@ -134,13 +169,24 @@ export function createMapThreeLayer(options) {
|
|
|
134
169
|
return;
|
|
135
170
|
if (!renderer || !screenScene || !screenCamera)
|
|
136
171
|
return;
|
|
172
|
+
if (!hasRenderable)
|
|
173
|
+
return;
|
|
137
174
|
try {
|
|
138
175
|
renderer.resetState();
|
|
139
176
|
gl.disable(gl.DEPTH_TEST);
|
|
177
|
+
gl.depthMask(false);
|
|
178
|
+
gl.disable(gl.STENCIL_TEST);
|
|
179
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
180
|
+
gl.colorMask(true, true, true, true);
|
|
140
181
|
gl.enable(gl.BLEND);
|
|
141
|
-
gl.blendFuncSeparate(gl.
|
|
182
|
+
gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
183
|
+
const canvas = mapRef?.getCanvas();
|
|
184
|
+
if (canvas) {
|
|
185
|
+
renderer.setViewport(0, 0, canvas.width, canvas.height);
|
|
186
|
+
}
|
|
142
187
|
renderer.render(screenScene, screenCamera);
|
|
143
188
|
logGlError(gl, 'render');
|
|
189
|
+
renderer.resetState();
|
|
144
190
|
mapRef?.triggerRepaint();
|
|
145
191
|
}
|
|
146
192
|
catch (err) {
|
|
@@ -157,6 +203,10 @@ export function createMapThreeLayer(options) {
|
|
|
157
203
|
layer,
|
|
158
204
|
setGroup: (group) => {
|
|
159
205
|
meshGroup = group;
|
|
206
|
+
updateRenderable(group);
|
|
207
|
+
if (debug) {
|
|
208
|
+
log('group set', { hasRenderable });
|
|
209
|
+
}
|
|
160
210
|
if (rootGroup) {
|
|
161
211
|
rootGroup.clear();
|
|
162
212
|
if (meshGroup)
|