Bläddra i källkod

Projector now using the "array.length = 0" way.

Mr.doob 14 år sedan
förälder
incheckning
3d67cf43c3
3 ändrade filer med 21 tillägg och 13 borttagningar
  1. 2 2
      src/core/Geometry.js
  2. 4 0
      src/core/Object3D.js
  3. 15 11
      src/renderers/Projector.js

+ 2 - 2
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;

+ 4 - 0
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;

+ 15 - 11
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;
 
 	};