Sidebar.Geometry.js 4.6 KB
Newer Older
M
r59  
Mr.doob 已提交
1 2 3
Sidebar.Geometry = function ( editor ) {

	var signals = editor.signals;
M
Mr.doob 已提交
4 5

	var container = new UI.Panel();
M
r59  
Mr.doob 已提交
6
	container.setDisplay( 'none' );
M
Mr.doob 已提交
7

M
r62  
Mr.doob 已提交
8
	container.add( new UI.Text().setValue( 'GEOMETRY' ) );
M
Mr.doob 已提交
9 10
	container.add( new UI.Break(), new UI.Break() );

11 12 13 14 15 16 17
	// uuid

	var geometryUUIDRow = new UI.Panel();
	var geometryUUID = new UI.Input().setWidth( '115px' ).setColor( '#444' ).setFontSize( '12px' ).setDisabled( true );
	var geometryUUIDRenew = new UI.Button( '' ).setMarginLeft( '7px' ).onClick( function () {

		geometryUUID.setValue( THREE.Math.generateUUID() );
M
r62  
Mr.doob 已提交
18 19

		editor.selected.geometry.uuid = geometryUUID.getValue();
20 21 22

	} );

M
r62  
Mr.doob 已提交
23
	geometryUUIDRow.add( new UI.Text( 'UUID' ).setWidth( '90px' ) );
24 25 26 27 28
	geometryUUIDRow.add( geometryUUID );
	geometryUUIDRow.add( geometryUUIDRenew );

	container.add( geometryUUIDRow );

M
Mr.doob 已提交
29 30 31
	// name

	var geometryNameRow = new UI.Panel();
M
r62  
Mr.doob 已提交
32 33 34 35 36
	var geometryName = new UI.Input().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' ).onChange( function () {

		editor.setGeometryName( editor.selected.geometry, geometryName.getValue() );

	} );
M
Mr.doob 已提交
37

M
r62  
Mr.doob 已提交
38
	geometryNameRow.add( new UI.Text( 'Name' ).setWidth( '90px' ) );
M
Mr.doob 已提交
39 40 41 42
	geometryNameRow.add( geometryName );

	container.add( geometryNameRow );

M
r61  
Mr.doob 已提交
43 44 45 46 47
	// class

	var geometryTypeRow = new UI.Panel();
	var geometryType = new UI.Text().setWidth( '150px' ).setColor( '#444' ).setFontSize( '12px' );

M
r62  
Mr.doob 已提交
48
	geometryTypeRow.add( new UI.Text( 'Type' ).setWidth( '90px' ) );
M
r61  
Mr.doob 已提交
49 50 51 52
	geometryTypeRow.add( geometryType );

	container.add( geometryTypeRow );

M
Mr.doob 已提交
53 54 55 56 57
	// vertices

	var geometryVerticesRow = new UI.Panel();
	var geometryVertices = new UI.Text().setColor( '#444' ).setFontSize( '12px' );

M
r62  
Mr.doob 已提交
58
	geometryVerticesRow.add( new UI.Text( 'Vertices' ).setWidth( '90px' ) );
M
Mr.doob 已提交
59 60 61 62 63 64 65 66 67
	geometryVerticesRow.add( geometryVertices );

	container.add( geometryVerticesRow );

	// faces

	var geometryFacesRow = new UI.Panel();
	var geometryFaces = new UI.Text().setColor( '#444' ).setFontSize( '12px' );

M
r62  
Mr.doob 已提交
68
	geometryFacesRow.add( new UI.Text( 'Faces' ).setWidth( '90px' ) );
M
Mr.doob 已提交
69 70 71 72
	geometryFacesRow.add( geometryFaces );

	container.add( geometryFacesRow );

M
r58  
Mr.doob 已提交
73 74 75 76
	// parameters

	var parameters;

M
Mr.doob 已提交
77 78 79

	//

80 81 82
	function build() {

		var object = editor.selected;
M
Mr.doob 已提交
83 84 85

		if ( object && object.geometry ) {

86
			var geometry = object.geometry;
M
Mr.doob 已提交
87 88 89

			container.setDisplay( 'block' );

M
r61  
Mr.doob 已提交
90
			geometryType.setValue( editor.getGeometryType( object.geometry ) );
M
r58  
Mr.doob 已提交
91

92
			updateFields( geometry );
M
r58  
Mr.doob 已提交
93 94 95 96 97 98 99 100 101 102

			//

			if ( parameters !== undefined ) {

				container.remove( parameters );
				parameters = undefined;

			}

M
r61  
Mr.doob 已提交
103
			if ( geometry instanceof THREE.CircleGeometry ) {
M
r58  
Mr.doob 已提交
104

M
r61  
Mr.doob 已提交
105
				parameters = new Sidebar.Geometry.CircleGeometry( signals, object );
M
r58  
Mr.doob 已提交
106 107
				container.add( parameters );

108
			} else if ( geometry instanceof THREE.CubeGeometry ) {
M
r58  
Mr.doob 已提交
109 110 111 112

				parameters = new Sidebar.Geometry.CubeGeometry( signals, object );
				container.add( parameters );

113
			} else if ( geometry instanceof THREE.CylinderGeometry ) {
M
r58  
Mr.doob 已提交
114 115 116 117

				parameters = new Sidebar.Geometry.CylinderGeometry( signals, object );
				container.add( parameters );

118
			} else if ( geometry instanceof THREE.SphereGeometry ) {
M
r58  
Mr.doob 已提交
119 120 121 122

				parameters = new Sidebar.Geometry.SphereGeometry( signals, object );
				container.add( parameters );

123
			} else if ( geometry instanceof THREE.IcosahedronGeometry ) {
M
r58  
Mr.doob 已提交
124 125 126 127

				parameters = new Sidebar.Geometry.IcosahedronGeometry( signals, object );
				container.add( parameters );

M
r61  
Mr.doob 已提交
128 129 130 131 132
			} else if ( geometry instanceof THREE.PlaneGeometry ) {

				parameters = new Sidebar.Geometry.PlaneGeometry( signals, object );
				container.add( parameters );

133
			} else if ( geometry instanceof THREE.TorusGeometry ) {
M
r58  
Mr.doob 已提交
134 135 136 137

				parameters = new Sidebar.Geometry.TorusGeometry( signals, object );
				container.add( parameters );

138
			} else if ( geometry instanceof THREE.TorusKnotGeometry ) {
M
r58  
Mr.doob 已提交
139 140 141 142 143

				parameters = new Sidebar.Geometry.TorusKnotGeometry( signals, object );
				container.add( parameters );

			}
M
Mr.doob 已提交
144 145 146 147 148 149 150

		} else {

			container.setDisplay( 'none' );

		}

M
r59  
Mr.doob 已提交
151
	}
M
r58  
Mr.doob 已提交
152

M
r59  
Mr.doob 已提交
153 154
	signals.objectSelected.add( build );
	signals.objectChanged.add( build );
M
r58  
Mr.doob 已提交
155 156 157 158 159

	//

	function updateFields( geometry ) {

160
		geometryUUID.setValue( geometry.uuid );
M
r58  
Mr.doob 已提交
161
		geometryName.setValue( geometry.name );
M
r60  
Mr.doob 已提交
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183

		if ( geometry instanceof THREE.Geometry ) {

			geometryVertices.setValue( geometry.vertices.length );
			geometryFaces.setValue( geometry.faces.length );

		} else if ( geometry instanceof THREE.BufferGeometry ) {

			geometryVertices.setValue( geometry.attributes.position.numItems / 3 );

			if ( geometry.attributes.index !== undefined ) {

				geometryFaces.setValue( geometry.attributes.index.numItems / 3 );

			} else {

				geometryFaces.setValue( geometry.attributes.position.numItems / 3 / 3 );

			}


		}
M
r58  
Mr.doob 已提交
184 185 186

	}

M
Mr.doob 已提交
187 188 189
	return container;

}