AnimationHandler.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * @author mikael emtinger / http://gomo.se/
  3. */
  4. THREE.AnimationHandler = (function() {
  5. var playing = [];
  6. var that = {};
  7. //--- update ---
  8. that.update = function( time ) {
  9. for( var i = 0; i < playing.length; i++ )
  10. playing[ i ].update( time );
  11. };
  12. //--- add ---
  13. that.add = function( animation ) {
  14. if( playing.indexOf( animation ) === -1 )
  15. playing.push( animation );
  16. };
  17. //--- remove ---
  18. that.remove = function( animation ) {
  19. var index = playing.indexOf( animation );
  20. if( index !== -1 )
  21. playing.splice( childIndex, 1 );
  22. };
  23. //--- init data ---
  24. that.initData = function( data ) {
  25. if( data.initialized === true )
  26. return;
  27. // loop through all keys
  28. for( var h = 0; h < data.hierarchy.length; h++ ) {
  29. for( var k = 0; k < data.hierarchy[ h ].keys.length; k++ ) {
  30. // remove minus times
  31. if( data.hierarchy[ h ].keys[ k ].time < 0 )
  32. data.hierarchy[ h ].keys[ k ].time = 0;
  33. // set index
  34. data.hierarchy[ h ].keys[ k ].index = k;
  35. // create quaternions
  36. if( data.hierarchy[ h ].keys[ k ].rot !== undefined &&
  37. !( data.hierarchy[ h ].keys[ k ].rot instanceof THREE.Quaternion ) ) {
  38. var quat = data.hierarchy[ h ].keys[ k ].rot;
  39. data.hierarchy[ h ].keys[ k ].rot = new THREE.Quaternion( quat[0], quat[1], quat[2], quat[3] );
  40. }
  41. }
  42. }
  43. // JIT
  44. var lengthInFrames = parseInt( data.length * data.fps, 10 );
  45. data.JIT = {};
  46. data.JIT.hierarchy = [];
  47. for( var h = 0; h < data.hierarchy.length; h++ )
  48. data.JIT.hierarchy.push( new Array( lengthInFrames ));
  49. // done
  50. data.initialized = true;
  51. };
  52. return that;
  53. }());