aboutsummaryrefslogtreecommitdiff
path: root/js/lib/drawing/world.js
diff options
context:
space:
mode:
authorNivesh Rajbhandari2012-03-13 13:05:16 -0700
committerNivesh Rajbhandari2012-03-13 13:05:16 -0700
commite19376c54eedd1f1c457ba405b2f110be376a559 (patch)
treed48c090f71ed2cd6bd6ce38ff68c36ab69299985 /js/lib/drawing/world.js
parent970c2e63aa8ec3f70df2bf073cedb9e3b7617755 (diff)
parentf56b8cf4d3316d250c0f0045fb78f0dbd5c56e94 (diff)
downloadninja-e19376c54eedd1f1c457ba405b2f110be376a559.tar.gz
Merge branch 'refs/heads/ninja-internal' into WebGLFixes
Diffstat (limited to 'js/lib/drawing/world.js')
-rwxr-xr-xjs/lib/drawing/world.js92
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/*
10var shaderProgramArray = new Array;
11var glContextArray = new Array;
12var vertexShaderSource = "";
13var fragmentShaderSource = "";
14var rdgeStarted = false;
15*/
16
17var nodeCounter = 0;
18 7
19var GeomObj = require("js/lib/geom/geom-obj").GeomObj; 8var GeomObj = require("js/lib/geom/geom-obj").GeomObj;
20var Line = require("js/lib/geom/line").Line; 9var Line = require("js/lib/geom/line").Line;
@@ -22,6 +11,8 @@ var Rectangle = require("js/lib/geom/rectangle").Rectangle;
22var Circle = require("js/lib/geom/circle").Circle; 11var Circle = require("js/lib/geom/circle").Circle;
23var MaterialsModel = require("js/models/materials-model").MaterialsModel; 12var MaterialsModel = require("js/models/materials-model").MaterialsModel;
24 13
14var 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
734World.prototype.export = function() { 734World.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