@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.
@@ -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,CAyMhF"}
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"}
@@ -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.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
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)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treasuryspatial/map-kit",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "main": "./dist/index.js",