如何检查场景中的节点是否包含匹配的geometryid?

时间:2017-07-14 06:33:56

标签: javascript three.js geometry scene

我有一个循环我的场景以获取特定节点的函数。获得此节点后,它会遍历其子节点并检查是否有任何子节点具有 geometry material 属性。如果他们这样做,那么我dispose()然后remove孩子。

在我dispose()之前,我想检查该子项的 geometry.id 是否与场景中的任何其他子几何id匹配。如果它匹配,那么我不dispose我只是remove它。如果它没有任何匹配的几何ID,那么我可以dispose然后remove

1 个答案:

答案 0 :(得分:0)

我想你可以尝试引用计数吗?

var counts = {};

// when adding mesh
counts[mesh.geometry.id] = (counts[mesh.geometry.id] || 0) + 1;

// when removing mesh
counts[mesh.geometry.id]--;
if (counts[mesh.geometry.id] == 0) {
    // safe to dispose
}