|
@@ -339,32 +339,40 @@ THREE.Projector = function () {
|
|
_renderData.objects.length = 0;
|
|
_renderData.objects.length = 0;
|
|
_renderData.lights.length = 0;
|
|
_renderData.lights.length = 0;
|
|
|
|
|
|
|
|
+ function addObject( object ) {
|
|
|
|
+
|
|
|
|
+ _object = getNextObjectInPool();
|
|
|
|
+ _object.id = object.id;
|
|
|
|
+ _object.object = object;
|
|
|
|
+
|
|
|
|
+ _vector3.setFromMatrixPosition( object.matrixWorld );
|
|
|
|
+ _vector3.applyProjection( _viewProjectionMatrix );
|
|
|
|
+ _object.z = _vector3.z;
|
|
|
|
+ _object.renderOrder = object.renderOrder;
|
|
|
|
+
|
|
|
|
+ _renderData.objects.push( _object );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
scene.traverseVisible( function ( object ) {
|
|
scene.traverseVisible( function ( object ) {
|
|
|
|
|
|
if ( object instanceof THREE.Light ) {
|
|
if ( object instanceof THREE.Light ) {
|
|
|
|
|
|
_renderData.lights.push( object );
|
|
_renderData.lights.push( object );
|
|
|
|
|
|
- } else if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Sprite ) {
|
|
|
|
-
|
|
|
|
- var material = object.material;
|
|
|
|
-
|
|
|
|
- if ( material.visible === false ) return;
|
|
|
|
|
|
+ } else if ( object instanceof THREE.Mesh || object instanceof THREE.Line ) {
|
|
|
|
|
|
- if ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) {
|
|
|
|
|
|
+ if ( object.material.visible === false ) return;
|
|
|
|
+ if ( object.frustumCulled === true && _frustum.intersectsObject( object ) === false ) return;
|
|
|
|
|
|
- _object = getNextObjectInPool();
|
|
|
|
- _object.id = object.id;
|
|
|
|
- _object.object = object;
|
|
|
|
|
|
+ addObject( object );
|
|
|
|
|
|
- _vector3.setFromMatrixPosition( object.matrixWorld );
|
|
|
|
- _vector3.applyProjection( _viewProjectionMatrix );
|
|
|
|
- _object.z = _vector3.z;
|
|
|
|
- _object.renderOrder = object.renderOrder;
|
|
|
|
|
|
+ } else if ( object instanceof THREE.Sprite ) {
|
|
|
|
|
|
- _renderData.objects.push( _object );
|
|
|
|
|
|
+ if ( object.material.visible === false ) return;
|
|
|
|
+ if ( object.frustumCulled === true && _frustum.intersectsSprite( object ) === false ) return;
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ addObject( object );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|