From 3d67cf43c3236fcf0f974edb4945d84766e9ddc8 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Thu, 1 Sep 2011 05:01:06 +0200 Subject: [PATCH] Projector now using the "array.length = 0" way. --- src/core/Geometry.js | 4 ++-- src/core/Object3D.js | 4 ++++ src/renderers/Projector.js | 26 +++++++++++++++----------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/core/Geometry.js b/src/core/Geometry.js index 8fae33e190..12b78fb221 100644 --- a/src/core/Geometry.js +++ b/src/core/Geometry.js @@ -7,7 +7,7 @@ THREE.Geometry = function () { - this.id = "Geometry" + THREE.GeometryIdCounter ++; + this.id = THREE.GeometryCount ++; this.vertices = []; this.colors = []; // one-to-one vertex colors, used in ParticleSystem, Line and Ribbon @@ -510,4 +510,4 @@ THREE.Geometry.prototype = { }; -THREE.GeometryIdCounter = 0; +THREE.GeometryCount = 0; diff --git a/src/core/Object3D.js b/src/core/Object3D.js index 94cc52c31d..c4ed0463b3 100644 --- a/src/core/Object3D.js +++ b/src/core/Object3D.js @@ -6,6 +6,8 @@ THREE.Object3D = function() { + this.id = THREE.Object3DCount ++; + this.parent = undefined; this.children = []; @@ -233,3 +235,5 @@ THREE.Object3D.prototype = { } }; + +THREE.Object3DCount = 0; diff --git a/src/renderers/Projector.js b/src/renderers/Projector.js index f0dc2af9f7..1a02e722f8 100644 --- a/src/renderers/Projector.js +++ b/src/renderers/Projector.js @@ -12,6 +12,8 @@ THREE.Projector = function() { _line, _lineCount, _linePool = [], _particle, _particleCount, _particlePool = [], + _objectList = [], _renderList = [], + _vector3 = new THREE.Vector4(), _vector4 = new THREE.Vector4(), _projScreenMatrix = new THREE.Matrix4(), @@ -52,9 +54,9 @@ THREE.Projector = function() { this.projectObjects = function ( scene, camera, sort ) { - var renderList = [], - o, ol, objects, object, matrix; + var o, ol, objects, object, matrix; + _objectList.length = 0; _objectCount = 0; objects = scene.objects; @@ -73,13 +75,13 @@ THREE.Projector = function() { _object.object = object; _object.z = _vector3.z; - renderList.push( _object ); + _objectList.push( _object ); } - sort && renderList.sort( painterSort ); + sort && _objectList.sort( painterSort ); - return renderList; + return _objectList; }; @@ -87,13 +89,15 @@ THREE.Projector = function() { this.projectScene = function ( scene, camera, sort ) { - var renderList = [], near = camera.near, far = camera.far, + var near = camera.near, far = camera.far, o, ol, v, vl, f, fl, n, nl, c, cl, u, ul, objects, object, objectMatrix, objectMatrixRotation, objectMaterials, objectOverdraw, geometry, vertices, vertex, vertexPositionScreen, faces, face, faceVertexNormals, normal, faceVertexUvs, uvs, v1, v2, v3, v4; + _renderList.length = 0; + _face3Count = 0; _face4Count = 0; _lineCount = 0; @@ -241,7 +245,7 @@ THREE.Projector = function() { _face.z = _face.centroidScreen.z; - renderList.push( _face ); + _renderList.push( _face ); } @@ -280,7 +284,7 @@ THREE.Projector = function() { _line.materials = object.materials; - renderList.push( _line ); + _renderList.push( _line ); } } @@ -306,7 +310,7 @@ THREE.Projector = function() { _particle.materials = object.materials; - renderList.push( _particle ); + _renderList.push( _particle ); } @@ -314,9 +318,9 @@ THREE.Projector = function() { } - sort && renderList.sort( painterSort ); + sort && _renderList.sort( painterSort ); - return renderList; + return _renderList; }; -- GitLab