@treasuryspatial/map-kit 0.1.4 → 0.1.5
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 +43 -1
- 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,CA+OhF"}
|
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',
|
|
@@ -97,6 +120,8 @@ export function createMapThreeLayer(options) {
|
|
|
97
120
|
return;
|
|
98
121
|
if (!renderer || !scene || !camera || !rootGroup || !renderTarget)
|
|
99
122
|
return;
|
|
123
|
+
if (!hasRenderable)
|
|
124
|
+
return;
|
|
100
125
|
try {
|
|
101
126
|
camera.projectionMatrix = new THREE.Matrix4().fromArray(matrix);
|
|
102
127
|
if (mercatorOrigin) {
|
|
@@ -113,6 +138,8 @@ export function createMapThreeLayer(options) {
|
|
|
113
138
|
log('renderTarget resized', { width: targetWidth, height: targetHeight });
|
|
114
139
|
}
|
|
115
140
|
renderer.setRenderTarget(renderTarget);
|
|
141
|
+
renderer.setClearColor(0x000000, 0);
|
|
142
|
+
renderer.setClearAlpha(0);
|
|
116
143
|
renderer.clear(true, true, true);
|
|
117
144
|
const gl = renderer.getContext();
|
|
118
145
|
checkFramebuffer(gl, 'prerender');
|
|
@@ -134,13 +161,24 @@ export function createMapThreeLayer(options) {
|
|
|
134
161
|
return;
|
|
135
162
|
if (!renderer || !screenScene || !screenCamera)
|
|
136
163
|
return;
|
|
164
|
+
if (!hasRenderable)
|
|
165
|
+
return;
|
|
137
166
|
try {
|
|
138
167
|
renderer.resetState();
|
|
139
168
|
gl.disable(gl.DEPTH_TEST);
|
|
169
|
+
gl.depthMask(false);
|
|
170
|
+
gl.disable(gl.STENCIL_TEST);
|
|
171
|
+
gl.disable(gl.SCISSOR_TEST);
|
|
172
|
+
gl.colorMask(true, true, true, true);
|
|
140
173
|
gl.enable(gl.BLEND);
|
|
141
|
-
gl.blendFuncSeparate(gl.
|
|
174
|
+
gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
|
|
175
|
+
const canvas = mapRef?.getCanvas();
|
|
176
|
+
if (canvas) {
|
|
177
|
+
renderer.setViewport(0, 0, canvas.width, canvas.height);
|
|
178
|
+
}
|
|
142
179
|
renderer.render(screenScene, screenCamera);
|
|
143
180
|
logGlError(gl, 'render');
|
|
181
|
+
renderer.resetState();
|
|
144
182
|
mapRef?.triggerRepaint();
|
|
145
183
|
}
|
|
146
184
|
catch (err) {
|
|
@@ -157,6 +195,10 @@ export function createMapThreeLayer(options) {
|
|
|
157
195
|
layer,
|
|
158
196
|
setGroup: (group) => {
|
|
159
197
|
meshGroup = group;
|
|
198
|
+
updateRenderable(group);
|
|
199
|
+
if (debug) {
|
|
200
|
+
log('group set', { hasRenderable });
|
|
201
|
+
}
|
|
160
202
|
if (rootGroup) {
|
|
161
203
|
rootGroup.clear();
|
|
162
204
|
if (meshGroup)
|