Player.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var Player = function ( json ) {
  2. var camera = new THREE.PerspectiveCamera( 50, 1, 1, 1000 );
  3. camera.position.set( 500, 250, 500 );
  4. camera.lookAt( new THREE.Vector3() );
  5. var scene = new THREE.ObjectLoader().parse( json );
  6. var renderer = new THREE.WebGLRenderer( { antialias: true } );
  7. //
  8. var scriptObjects = [];
  9. scene.traverse( function ( child ) {
  10. if ( child.script !== undefined ) {
  11. child.script.compiled = new Function( 'scene', child.script.source ).bind( child );
  12. scriptObjects.push( child );
  13. }
  14. } );
  15. //
  16. var setSize = function ( width, height ) {
  17. camera.aspect = width / height;
  18. camera.updateProjectionMatrix();
  19. renderer.setSize( width, height );
  20. };
  21. var request;
  22. var play = function () {
  23. request = requestAnimationFrame( play );
  24. update();
  25. };
  26. var stop = function () {
  27. cancelAnimationFrame( request );
  28. };
  29. var update = function () {
  30. for ( var i = 0; i < scriptObjects.length; i ++ ) {
  31. var object = scriptObjects[ i ];
  32. object.script.compiled( scene );
  33. }
  34. renderer.render( scene, camera );
  35. };
  36. return {
  37. dom: renderer.domElement,
  38. setSize: setSize,
  39. play: play,
  40. stop: stop
  41. }
  42. };