Browse Source

Editor: SkinnedMesh basic support.

Mr.doob 11 years ago
parent
commit
aeb491c0a7
2 changed files with 32 additions and 17 deletions
  1. 12 1
      editor/js/Loader.js
  2. 20 16
      editor/js/Sidebar.Animation.js

+ 12 - 1
editor/js/Loader.js

@@ -339,7 +339,18 @@ var Loader = function ( editor ) {
 			geometry.sourceType = "ascii";
 			geometry.sourceFile = file.name;
 
-			var mesh = new THREE.Mesh( geometry, material );
+			var mesh;
+
+			if ( geometry.animation && geometry.animation.hierarchy ) {
+
+				mesh = new THREE.SkinnedMesh( geometry, material );
+
+			} else {
+
+				mesh = new THREE.Mesh( geometry, material );
+
+			}
+
 			mesh.name = filename;
 
 			editor.addObject( mesh );

+ 20 - 16
editor/js/Sidebar.Animation.js

@@ -5,22 +5,24 @@ Sidebar.Animation = function ( editor ) {
 	var options = {};
 	var possibleAnimations = {};
 
-	var container = new UI.Panel();
+	var container = new UI.CollapsiblePanel();
 	container.setDisplay( 'none' );
 
-	container.add( new UI.Text( 'Animation' ) );
-	container.add( new UI.Break(), new UI.Break() );
+	container.addStatic( new UI.Text( 'ANIMATION' ) );
+	container.add( new UI.Break() );
 
 	var AnimationsRow = new UI.Panel();
 	var Animations = new UI.Select().setOptions( options ).setWidth( '130px' ).setColor( '#444' ).setFontSize( '12px' );
 	AnimationsRow.add( new UI.Text( 'animations' ).setWidth( '90px' ) );
 	AnimationsRow.add( Animations );
+
 	container.add( AnimationsRow );
 	container.add( new UI.Break() );
 
 	var PlayRow = new UI.Panel();
-	var playButton = new UI.Button().setLabel("Play").onClick(play);
+	var playButton = new UI.Button().setLabel( 'Play' ).onClick( play );
 	PlayRow.add( playButton );
+
 	container.add( PlayRow );
 	container.add( new UI.Break() );
 
@@ -46,28 +48,30 @@ Sidebar.Animation = function ( editor ) {
 
 	signals.objectAdded.add( function ( object ) {
 
-		if ( object instanceof THREE.Mesh ) {
+		if ( object instanceof THREE.SkinnedMesh ) {
+
+			var geometry = object.geometry;
+			var material = object.material;
 
-			if ( object.geometry && object.geometry.animation ) {
+			material.skinning = true;
 
-				var name = object.geometry.animation.name;
-				options[name] = name
+			var name = geometry.animation.name;
 
-				Animations.setOptions( options );
+			options[ name ] = name
 
-				THREE.AnimationHandler.add( object.geometry.animation );
+			Animations.setOptions( options );
 
-				var animation = new THREE.Animation( object, name, THREE.AnimationHandler.CATMULLROM );
+			THREE.AnimationHandler.add( geometry.animation );
 
-				if ( possibleAnimations[ name ] ){
+			var animation = new THREE.Animation( object, name );
 
-					possibleAnimations[ name ].push( animation );
+			if ( possibleAnimations[ name ] ){
 
-				} else {
+				possibleAnimations[ name ].push( animation );
 
-					possibleAnimations[ name ] = [ animation ];
+			} else {
 
-				}
+				possibleAnimations[ name ] = [ animation ];
 
 			}