From 487cb7d893c827f1318006cecc5a31550a3fb4d2 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 9 Sep 2016 18:58:38 +1200 Subject: [PATCH] Use findInFrustum in entities list and filter results per search radius --- scripts/system/libraries/entityList.js | 34 ++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/scripts/system/libraries/entityList.js b/scripts/system/libraries/entityList.js index 7af4cd6c68..3e9d3b5648 100644 --- a/scripts/system/libraries/entityList.js +++ b/scripts/system/libraries/entityList.js @@ -57,28 +57,32 @@ EntityListTool = function(opts) { var ids; if (filterInView) { - ids = Entities.findEntitiesInView(MyAvatar.position, searchRadius); + ids = Entities.findEntitiesInFrustum(Camera.frustum); } else { ids = Entities.findEntities(MyAvatar.position, searchRadius); } + var cameraPosition = Camera.position; for (var i = 0; i < ids.length; i++) { var id = ids[i]; var properties = Entities.getEntityProperties(id); - entities.push({ - id: id, - name: properties.name, - type: properties.type, - url: properties.type == "Model" ? properties.modelURL : "", - locked: properties.locked, - visible: properties.visible, - verticesCount: valueIfDefined(properties.renderInfo.verticesCount), - texturesCount: valueIfDefined(properties.renderInfo.texturesCount), - texturesSize: valueIfDefined(properties.renderInfo.texturesSize), - hasTransparent: valueIfDefined(properties.renderInfo.hasTransparent), - drawCalls: valueIfDefined(properties.renderInfo.drawCalls), - hasScript: properties.script !== "" - }); + + if (!filterInView || Vec3.distance(properties.position, cameraPosition) <= searchRadius) { + entities.push({ + id: id, + name: properties.name, + type: properties.type, + url: properties.type == "Model" ? properties.modelURL : "", + locked: properties.locked, + visible: properties.visible, + verticesCount: valueIfDefined(properties.renderInfo.verticesCount), + texturesCount: valueIfDefined(properties.renderInfo.texturesCount), + texturesSize: valueIfDefined(properties.renderInfo.texturesSize), + hasTransparent: valueIfDefined(properties.renderInfo.hasTransparent), + drawCalls: valueIfDefined(properties.renderInfo.drawCalls), + hasScript: properties.script !== "" + }); + } } var selectedIDs = [];