Skip to content

Commit

Permalink
refactor(LabeLayer): change label node culling mechanism.
Browse files Browse the repository at this point in the history
  • Loading branch information
gchoqueux committed May 10, 2023
1 parent f46ca97 commit b833744
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 6 deletions.
11 changes: 6 additions & 5 deletions src/Layer/LabelLayer.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ class LabelsNode extends THREE.Group {
this.domElements.labels = new DomNode();

this.domElements.add(this.domElements.labels);

this.domElements.labels.dom.style.opacity = '0';
}

// add node label
Expand Down Expand Up @@ -185,6 +187,8 @@ class LabelLayer extends GeometryLayer {
this.performance = config.performance || true;
this.forceClampToTerrain = config.forceClampToTerrain || false;

this.toHide = new THREE.Group();

this.labelDomelement = domElement;

// The margin property defines a space around each label that cannot be occupied by another label.
Expand Down Expand Up @@ -306,15 +310,11 @@ class LabelLayer extends GeometryLayer {
}

#submitToRendering(labelsNode) {
labelsNode.domElements?.labels.show();

this.object3d.add(labelsNode);
}

#disallowToRendering(labelsNode) {
labelsNode.domElements?.labels.hide();

this.object3d.remove(labelsNode);
this.toHide.add(labelsNode);
}

#findClosestDomElement(node) {
Expand Down Expand Up @@ -449,6 +449,7 @@ class LabelLayer extends GeometryLayer {

if (labelsNode.count()) {
labelsNode.domElements.labels.hide();
labelsNode.domElements.labels.dom.style.opacity = '1.0';

node.addEventListener('show', () => labelsNode.domElements.labels.show());

Expand Down
7 changes: 6 additions & 1 deletion src/Renderer/Label2DRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ class Label2DRenderer {

this.culling(label, camera);
});

labelsNode.domElements.labels.show();
labelsNode.needsUpdate = false;
});
});
Expand All @@ -173,6 +173,11 @@ class Label2DRenderer {
l.visible = false;
}
});

labelLayers.forEach((labelLayer) => {
labelLayer.toHide.children.forEach(labelsNode => labelsNode.domElements?.labels.hide());
labelLayer.toHide.clear();
});
}

culling(label, camera) {
Expand Down

0 comments on commit b833744

Please sign in to comment.