提交 9bfc3f1c 编写于 作者: M Mr.doob

Refactored Projector.

上级 6f721ef4
......@@ -75,102 +75,72 @@ THREE.Projector = function () {
};
var projectGraph = function ( root, sortObjects ) {
_objectCount = 0;
_renderData.objects.length = 0;
_renderData.sprites.length = 0;
_renderData.lights.length = 0;
var projectObject = function ( parent ) {
for ( var c = 0, cl = parent.children.length; c < cl; c ++ ) {
var object = parent.children[ c ];
var getObject = function ( object ) {
if ( object.visible === false ) continue;
_object = getNextObjectInPool();
_object.object = object;
if ( object instanceof THREE.Light ) {
if ( object.renderDepth !== null ) {
_renderData.lights.push( object );
} else if ( object instanceof THREE.Mesh || object instanceof THREE.Line ) {
if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
_object = getNextObjectInPool();
_object.object = object;
if ( object.renderDepth !== null ) {
_object.z = object.renderDepth;
} else {
_vector3.getPositionFromMatrix( object.matrixWorld );
_vector3.applyProjection( _viewProjectionMatrix );
_object.z = _vector3.z;
}
_object.z = object.renderDepth;
_renderData.objects.push( _object );
} else {
}
_vector3.getPositionFromMatrix( object.matrixWorld );
_vector3.applyProjection( _viewProjectionMatrix );
_object.z = _vector3.z;
} else if ( object instanceof THREE.Sprite || object instanceof THREE.Particle ) {
}
_object = getNextObjectInPool();
_object.object = object;
return _object;
// TODO: Find an elegant and performant solution and remove this dupe code.
};
if ( object.renderDepth !== null ) {
var projectObject = function ( object ) {
_object.z = object.renderDepth;
if ( object.visible === false ) return;
} else {
if ( object instanceof THREE.Light ) {
_vector3.getPositionFromMatrix( object.matrixWorld );
_vector3.applyProjection( _viewProjectionMatrix );
_object.z = _vector3.z;
_renderData.lights.push( object );
}
} else if ( object instanceof THREE.Mesh || object instanceof THREE.Line ) {
_renderData.sprites.push( _object );
if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
} else {
_renderData.objects.push( getObject( object ) );
_object = getNextObjectInPool();
_object.object = object;
}
if ( object.renderDepth !== null ) {
} else if ( object instanceof THREE.Sprite || object instanceof THREE.Particle ) {
_object.z = object.renderDepth;
_renderData.sprites.push( getObject( object ) );
} else {
}
_vector3.getPositionFromMatrix( object.matrixWorld );
_vector3.applyProjection( _viewProjectionMatrix );
_object.z = _vector3.z;
for ( var i = 0, l = object.children.length; i < l; i ++ ) {
}
projectObject( object.children[ i ] );
_renderData.objects.push( _object );
}
}
};
projectObject( object );
var projectGraph = function ( root, sortObjects ) {
}
_objectCount = 0;
};
_renderData.objects.length = 0;
_renderData.sprites.length = 0;
_renderData.lights.length = 0;
projectObject( root );
if ( sortObjects === true ) _renderData.objects.sort( painterSort );
if ( sortObjects === true ) {
return _renderData;
_renderData.objects.sort( painterSort );
}
};
......@@ -198,7 +168,7 @@ THREE.Projector = function () {
_frustum.setFromMatrix( _viewProjectionMatrix );
_renderData = projectGraph( scene, sortObjects );
projectGraph( scene, sortObjects );
for ( o = 0, ol = _renderData.objects.length; o < ol; o ++ ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册