diff options
Diffstat (limited to 'js/lib/drawing')
-rwxr-xr-x | js/lib/drawing/world.js | 92 |
1 files changed, 55 insertions, 37 deletions
diff --git a/js/lib/drawing/world.js b/js/lib/drawing/world.js index 04e4d96b..df24f556 100755 --- a/js/lib/drawing/world.js +++ b/js/lib/drawing/world.js | |||
@@ -4,17 +4,6 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | 4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. |
5 | </copyright> */ | 5 | </copyright> */ |
6 | 6 | ||
7 | // Useless Global variables. | ||
8 | // TODO: Remove this as soon as QE test pass | ||
9 | /* | ||
10 | var shaderProgramArray = new Array; | ||
11 | var glContextArray = new Array; | ||
12 | var vertexShaderSource = ""; | ||
13 | var fragmentShaderSource = ""; | ||
14 | var rdgeStarted = false; | ||
15 | */ | ||
16 | |||
17 | var nodeCounter = 0; | ||
18 | 7 | ||
19 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; | 8 | var GeomObj = require("js/lib/geom/geom-obj").GeomObj; |
20 | var Line = require("js/lib/geom/line").Line; | 9 | var Line = require("js/lib/geom/line").Line; |
@@ -22,6 +11,8 @@ var Rectangle = require("js/lib/geom/rectangle").Rectangle; | |||
22 | var Circle = require("js/lib/geom/circle").Circle; | 11 | var Circle = require("js/lib/geom/circle").Circle; |
23 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; | 12 | var MaterialsModel = require("js/models/materials-model").MaterialsModel; |
24 | 13 | ||
14 | var worldCounter = 0; | ||
15 | |||
25 | /////////////////////////////////////////////////////////////////////// | 16 | /////////////////////////////////////////////////////////////////////// |
26 | // Class GLWorld | 17 | // Class GLWorld |
27 | // Manages display in a canvas | 18 | // Manages display in a canvas |
@@ -80,6 +71,12 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) { | |||
80 | // no animated materials | 71 | // no animated materials |
81 | this._firstRender = true; | 72 | this._firstRender = true; |
82 | 73 | ||
74 | this._worldCount = worldCounter; | ||
75 | worldCounter++; | ||
76 | |||
77 | // keep a counter for generating node names | ||
78 | this._nodeCounter = 0; | ||
79 | |||
83 | /////////////////////////////////////////////////////////////////////// | 80 | /////////////////////////////////////////////////////////////////////// |
84 | // Property accessors | 81 | // Property accessors |
85 | /////////////////////////////////////////////////////////////////////// | 82 | /////////////////////////////////////////////////////////////////////// |
@@ -354,9 +351,12 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) { | |||
354 | return false; | 351 | return false; |
355 | }; | 352 | }; |
356 | 353 | ||
357 | 354 | this.generateUniqueNodeID = function() | |
358 | // END RDGE | 355 | { |
359 | //////////////////////////////////////////////////////////////////////////////////// | 356 | var str = "" + this._nodeCounter; |
357 | this._nodeCounter++; | ||
358 | return str; | ||
359 | } | ||
360 | 360 | ||
361 | 361 | ||
362 | // start RDGE passing your runtime object, and false to indicate we don't need a an initialization state | 362 | // start RDGE passing your runtime object, and false to indicate we don't need a an initialization state |
@@ -395,7 +395,7 @@ World.prototype.updateObject = function (obj) { | |||
395 | if (nPrims > 0) { | 395 | if (nPrims > 0) { |
396 | ctrTrNode = obj.getTransformNode(); | 396 | ctrTrNode = obj.getTransformNode(); |
397 | if (ctrTrNode == null) { | 397 | if (ctrTrNode == null) { |
398 | ctrTrNode = createTransformNode("objRootNode_" + nodeCounter++); | 398 | ctrTrNode = createTransformNode("objRootNode_" + this._nodeCounter++); |
399 | this._rootNode.insertAsChild( ctrTrNode ); | 399 | this._rootNode.insertAsChild( ctrTrNode ); |
400 | obj.setTransformNode( ctrTrNode ); | 400 | obj.setTransformNode( ctrTrNode ); |
401 | } | 401 | } |
@@ -405,7 +405,7 @@ World.prototype.updateObject = function (obj) { | |||
405 | }); | 405 | }); |
406 | ctrTrNode.meshes = []; | 406 | ctrTrNode.meshes = []; |
407 | 407 | ||
408 | ctrTrNode.attachMeshNode(this.renderer.id + "_prim_" + nodeCounter++, prims[0]); | 408 | ctrTrNode.attachMeshNode(this.renderer.id + "_prim_" + this._nodeCounter++, prims[0]); |
409 | ctrTrNode.attachMaterial(materialNodes[0]); | 409 | ctrTrNode.attachMaterial(materialNodes[0]); |
410 | } | 410 | } |
411 | 411 | ||
@@ -424,12 +424,12 @@ World.prototype.updateObject = function (obj) { | |||
424 | }); | 424 | }); |
425 | childTrNode.meshes = []; | 425 | childTrNode.meshes = []; |
426 | } else { | 426 | } else { |
427 | childTrNode = createTransformNode("objNode_" + nodeCounter++); | 427 | childTrNode = createTransformNode("objNode_" + this._nodeCounter++); |
428 | ctrTrNode.insertAsChild(childTrNode); | 428 | ctrTrNode.insertAsChild(childTrNode); |
429 | } | 429 | } |
430 | 430 | ||
431 | // attach the instanced box goe | 431 | // attach the instanced box goe |
432 | childTrNode.attachMeshNode(this.renderer.id + "_prim_" + nodeCounter++, prim); | 432 | childTrNode.attachMeshNode(this.renderer.id + "_prim_" + this._nodeCounter++, prim); |
433 | childTrNode.attachMaterial(materialNodes[i]); | 433 | childTrNode.attachMaterial(materialNodes[i]); |
434 | } | 434 | } |
435 | }; | 435 | }; |
@@ -731,7 +731,8 @@ World.prototype.getShapeFromPoint = function( offsetX, offsetY ) { | |||
731 | } | 731 | } |
732 | }; | 732 | }; |
733 | 733 | ||
734 | World.prototype.export = function() { | 734 | World.prototype.export = function() |
735 | { | ||
735 | var exportStr = "GLWorld 1.0\n"; | 736 | var exportStr = "GLWorld 1.0\n"; |
736 | var id = this.getCanvas().getAttribute( "data-RDGE-id" ); | 737 | var id = this.getCanvas().getAttribute( "data-RDGE-id" ); |
737 | exportStr += "id: " + id + "\n"; | 738 | exportStr += "id: " + id + "\n"; |
@@ -740,17 +741,29 @@ World.prototype.export = function() { | |||
740 | exportStr += "zNear: " + this._zNear + "\n"; | 741 | exportStr += "zNear: " + this._zNear + "\n"; |
741 | exportStr += "zFar: " + this._zFar + "\n"; | 742 | exportStr += "zFar: " + this._zFar + "\n"; |
742 | exportStr += "viewDist: " + this._viewDist + "\n"; | 743 | exportStr += "viewDist: " + this._viewDist + "\n"; |
744 | if (this._useWebGL) | ||
745 | exportStr += "webGL: true\n"; | ||
743 | 746 | ||
744 | // we need 2 export modes: One for save/restore, one for publish. | 747 | // we need 2 export modes: One for save/restore, one for publish. |
745 | // hardcoding for now | 748 | // hardcoding for now |
746 | var exportForPublish = false; | 749 | //var exportForPublish = false; |
750 | //if (!exportForPublish) exportForPublish = false; | ||
751 | var exportForPublish = true; | ||
747 | exportStr += "publish: " + exportForPublish + "\n"; | 752 | exportStr += "publish: " + exportForPublish + "\n"; |
748 | 753 | ||
749 | if (exportForPublish) { | 754 | if (exportForPublish && this._useWebGL) |
755 | { | ||
750 | exportStr += "scenedata: " + this.myScene.exportJSON() + "endscene\n"; | 756 | exportStr += "scenedata: " + this.myScene.exportJSON() + "endscene\n"; |
751 | } else { | 757 | |
758 | // write out all of the objects | ||
759 | exportStr += "tree\n"; | ||
760 | exportStr += this.exportObjects( this._geomRoot ); | ||
761 | exportStr += "endtree\n"; | ||
762 | } | ||
763 | else | ||
764 | { | ||
752 | // output the material library | 765 | // output the material library |
753 | exportStr += MaterialsModel.exportMaterials(); | 766 | //exportStr += MaterialsLibrary.export(); // THIS NEEDS TO BE DONE AT THE DOC LEVEL |
754 | 767 | ||
755 | // write out all of the objects | 768 | // write out all of the objects |
756 | exportStr += "tree\n"; | 769 | exportStr += "tree\n"; |
@@ -804,21 +817,26 @@ World.prototype.import = function( importStr ) { | |||
804 | 817 | ||
805 | // determine if the data was written for export (no Ninja objects) | 818 | // determine if the data was written for export (no Ninja objects) |
806 | // or for save/restore | 819 | // or for save/restore |
807 | var index = importStr.indexOf( "scenedata: " ); | 820 | //var index = importStr.indexOf( "scenedata: " ); |
808 | if (index >= 0) { | 821 | var index = importStr.indexOf( "webGL: " ); |
809 | var rdgeStr = importStr.substr( index+11 ); | 822 | this._useWebGL = (index >= 0) |
810 | var endIndex = rdgeStr.indexOf( "endscene\n" ); | 823 | if (this._useWebGL) |
811 | if (endIndex < 0) throw new Error( "ill-formed WebGL data" ); | 824 | { |
812 | var len = endIndex - index + 11; | 825 | // start RDGE |
813 | rdgeStr = rdgeStr.substr( 0, endIndex ); | 826 | rdgeStarted = true; |
814 | 827 | var id = this._canvas.getAttribute( "data-RDGE-id" ); | |
815 | this.myScene.importJSON( rdgeStr ); | 828 | this._canvas.rdgeid = id; |
816 | } else { | 829 | g_Engine.registerCanvas(this._canvas, this); |
817 | // load the material library | 830 | RDGEStart( this._canvas ); |
818 | importStr = MaterialsModel.importMaterials( importStr ); | 831 | this._canvas.task.stop() |
832 | } | ||
833 | |||
834 | this.importObjects( importStr, this._rootNode ); | ||
819 | 835 | ||
820 | // import the objects | 836 | if (!this._useWebGL) |
821 | this.importObjects( importStr, this._rootNode ); | 837 | { |
838 | // render using canvas 2D | ||
839 | this.render(); | ||
822 | } | 840 | } |
823 | }; | 841 | }; |
824 | 842 | ||