瀏覽代碼

Editor: Script code clean up.

Mr.doob 11 年之前
父節點
當前提交
134e826774
共有 3 個文件被更改,包括 33 次插入23 次删除
  1. 3 1
      editor/js/Menubar.Play.js
  2. 29 21
      editor/js/Player.js
  3. 1 1
      src/core/Script.js

+ 3 - 1
editor/js/Menubar.Play.js

@@ -3,12 +3,14 @@ Menubar.Play = function ( editor ) {
 	var container = new UI.Panel();
 	container.setClass( 'menu' );
 
+	var player = new Player();
+
 	var title = new UI.Panel();
 	title.setClass( 'title' );
 	title.setTextContent( 'Play' );
 	title.onClick( function () {
 
-		var player = new Player( editor.scene.toJSON() );
+		player.load( editor.scene.toJSON() );
 		player.setSize( 800, 600 );
 		player.play();
 

+ 29 - 21
editor/js/Player.js

@@ -1,37 +1,36 @@
-var Player = function ( json ) {
+var Player = function () {
 
 	var camera = new THREE.PerspectiveCamera( 50, 1, 1, 1000 );
 	camera.position.set( 500, 250, 500 );
 	camera.lookAt( new THREE.Vector3() );
 
-	var scene = new THREE.ObjectLoader().parse( json );
+	var loader = new THREE.ObjectLoader();
+	var scene = new THREE.Scene();
+
+	var scripts;
 
 	var renderer = new THREE.WebGLRenderer( { antialias: true } );
 
 	//
 
-	var scriptObjects = [];
+	var load = function ( json ) {
 
-	scene.traverse( function ( child ) {
+		scene = loader.parse( json );
 
-		if ( child.script !== undefined ) {
+		//
 
-			child.script.compiled = new Function( 'scene', child.script.source ).bind( child );
+		scripts = [];
 
-			scriptObjects.push( child );
+		scene.traverse( function ( child ) {
 
-		}
+			if ( child.script !== undefined ) {
 
-	} );
+				var script = new Function( 'scene', child.script.source ).bind( child );
+				scripts.push( script );
 
-	//
-
-	var setSize = function ( width, height ) {
+			}
 
-		camera.aspect = width / height;
-		camera.updateProjectionMatrix();
-
-		renderer.setSize( width, height );
+		} );
 
 	};
 
@@ -50,12 +49,20 @@ var Player = function ( json ) {
 
 	};
 
+	var setSize = function ( width, height ) {
+
+		camera.aspect = width / height;
+		camera.updateProjectionMatrix();
+
+		renderer.setSize( width, height );
+
+	};
+
 	var update = function () {
 
-		for ( var i = 0; i < scriptObjects.length; i ++ ) {
+		for ( var i = 0; i < scripts.length; i ++ ) {
 
-			var object = scriptObjects[ i ];
-			object.script.compiled( scene );
+			scripts[ i ]( scene );
 
 		}
 
@@ -65,9 +72,10 @@ var Player = function ( json ) {
 
 	return {
 		dom: renderer.domElement,
-		setSize: setSize,
+		load: load,
 		play: play,
-		stop: stop
+		stop: stop,
+		setSize: setSize
 	}
 
 };

+ 1 - 1
src/core/Script.js

@@ -19,4 +19,4 @@ THREE.Script.prototype = {
 
 	}
 
-}
+};