1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/**
* @author mrdoob / http://mrdoob.com/
*/
Viewport.Info = function ( editor ) {
var signals = editor.signals;
var strings = editor.strings;
var container = new UI.Panel();
container.setId( 'info' );
container.setPosition( 'absolute' );
container.setLeft( '10px' );
container.setBottom( '10px' );
container.setFontSize( '12px' );
container.setColor( '#fff' );
var objectsText = new UI.Text( '0' ).setMarginLeft( '6px' );
var verticesText = new UI.Text( '0' ).setMarginLeft( '6px' );
var trianglesText = new UI.Text( '0' ).setMarginLeft( '6px' );
container.add( new UI.Text( strings.getKey( 'viewport/info/objects' ) ).setTextTransform( 'lowercase' ) );
container.add( objectsText, new UI.Break() );
container.add( new UI.Text( strings.getKey( 'viewport/info/vertices' ) ).setTextTransform( 'lowercase' ) );
container.add( verticesText, new UI.Break() );
container.add( new UI.Text( strings.getKey( 'viewport/info/triangles' ) ).setTextTransform( 'lowercase' ) );
container.add( trianglesText, new UI.Break() );
signals.objectAdded.add( update );
signals.objectRemoved.add( update );
signals.geometryChanged.add( update );
//
function update() {
var scene = editor.scene;
var objects = 0, vertices = 0, triangles = 0;
for ( var i = 0, l = scene.children.length; i < l; i ++ ) {
var object = scene.children[ i ];
object.traverseVisible( function ( object ) {
objects ++;
if ( object.isMesh ) {
var geometry = object.geometry;
if ( geometry.isGeometry ) {
vertices += geometry.vertices.length;
triangles += geometry.faces.length;
} else if ( geometry.isBufferGeometry ) {
vertices += geometry.attributes.position.count;
if ( geometry.index !== null ) {
triangles += geometry.index.count / 3;
} else {
triangles += geometry.attributes.position.count / 3;
}
}
}
} );
}
objectsText.setValue( objects.format() );
verticesText.setValue( vertices.format() );
trianglesText.setValue( triangles.format() );
}
return container;
};
|