aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValerio Virgillito2012-03-27 11:30:17 -0700
committerValerio Virgillito2012-03-27 11:30:17 -0700
commit73ae65902d355fcb75bcdb486eaa27c0d79125c8 (patch)
tree89b0ae1c6d49916544f5003f7c6d08d19b2a4fb1
parent309dde5a8c4599cef6a1052c1ff9ee1ad8ec5858 (diff)
parent2d94104653667e93e0f7e5f8d12bc4f7b82e64fa (diff)
downloadninja-73ae65902d355fcb75bcdb486eaa27c0d79125c8.tar.gz
Merge pull request #144 from mqg734/WebGLFileIO
WebGL Fixes and Minor EyeDropper Tool Fixes.
-rw-r--r--assets/canvas-runtime.js1
-rwxr-xr-xjs/lib/drawing/world.js21
-rwxr-xr-xjs/lib/geom/geom-obj.js2
-rw-r--r--js/lib/rdge/materials/radial-blur-material.js18
-rwxr-xr-xjs/models/materials-model.js1
-rwxr-xr-xjs/tools/EyedropperTool.js19
6 files changed, 53 insertions, 9 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js
index dd909e26..f53a4ef6 100644
--- a/assets/canvas-runtime.js
+++ b/assets/canvas-runtime.js
@@ -527,6 +527,7 @@ function RuntimeGeomObj()
527 case "deform": 527 case "deform":
528 case "water": 528 case "water":
529 case "paris": 529 case "paris":
530 case "raiders":
530 case "tunnel": 531 case "tunnel":
531 case "reliefTunnel": 532 case "reliefTunnel":
532 case "squareTunnel": 533 case "squareTunnel":
diff --git a/js/lib/drawing/world.js b/js/lib/drawing/world.js
index 781695b6..fec6a478 100755
--- a/js/lib/drawing/world.js
+++ b/js/lib/drawing/world.js
@@ -761,13 +761,10 @@ World.prototype.exportJSON = function()
761 // We need to rebuild everything 761 // We need to rebuild everything
762 if (this._useWebGL) 762 if (this._useWebGL)
763 { 763 {
764 var root = this._rootNode;
765 root.children = new Array();
766 if (worldObj.children && (worldObj.children.length === 1)) 764 if (worldObj.children && (worldObj.children.length === 1))
767 { 765 {
768 this.init(); 766 this.rebuildTree(this._geomRoot);
769 this._geomRoot = undefined; 767 this.restartRenderLoop();
770 this.importObjectsJSON( worldObj.children[0] );
771 } 768 }
772 } 769 }
773 770
@@ -783,6 +780,20 @@ World.prototype.exportJSON = function()
783 return jStr; 780 return jStr;
784} 781}
785 782
783World.prototype.rebuildTree = function( obj )
784{
785 if (!obj) return;
786
787 obj.buildBuffers();
788
789 if (obj.getChild()) {
790 this.rebuildTree( obj.getChild () );
791 }
792
793 if (obj.getNext())
794 this.rebuildTree( obj.getNext() );
795}
796
786World.prototype.exportObjectsJSON = function( obj, parentObj ) 797World.prototype.exportObjectsJSON = function( obj, parentObj )
787{ 798{
788 if (!obj) return; 799 if (!obj) return;
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index a87bdbf5..3c4e4bbf 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -302,6 +302,7 @@ var GeomObj = function GLGeomObj() {
302 case "deform": 302 case "deform":
303 case "water": 303 case "water":
304 case "paris": 304 case "paris":
305 case "raiders":
305 case "tunnel": 306 case "tunnel":
306 case "reliefTunnel": 307 case "reliefTunnel":
307 case "squareTunnel": 308 case "squareTunnel":
@@ -375,6 +376,7 @@ var GeomObj = function GLGeomObj() {
375 case "deform": 376 case "deform":
376 case "water": 377 case "water":
377 case "paris": 378 case "paris":
379 case "raiders":
378 case "tunnel": 380 case "tunnel":
379 case "reliefTunnel": 381 case "reliefTunnel":
380 case "squareTunnel": 382 case "squareTunnel":
diff --git a/js/lib/rdge/materials/radial-blur-material.js b/js/lib/rdge/materials/radial-blur-material.js
index f4a4baa2..fee02a1d 100644
--- a/js/lib/rdge/materials/radial-blur-material.js
+++ b/js/lib/rdge/materials/radial-blur-material.js
@@ -282,10 +282,26 @@ var RaidersMaterial = function RaidersMaterial()
282 this.inheritedFrom(); 282 this.inheritedFrom();
283 283
284 this._name = "RaidersMaterial"; 284 this._name = "RaidersMaterial";
285 this._shaderName = "radialBlur"; 285 this._shaderName = "raiders";
286 286
287 this._texMap = 'assets/images/raiders.png'; 287 this._texMap = 'assets/images/raiders.png';
288 this._propValues[ this._propNames[0] ] = this._texMap.slice(0); 288 this._propValues[ this._propNames[0] ] = this._texMap.slice(0);
289
290
291 // duplcate method requirde
292 this.dup = function( world ) {
293 // allocate a new uber material
294 var newMat = new RaidersMaterial();
295
296 // copy over the current values;
297 var propNames = [], propValues = [], propTypes = [], propLabels = [];
298 this.getAllProperties( propNames, propValues, propTypes, propLabels);
299 var n = propNames.length;
300 for (var i=0; i<n; i++)
301 newMat.setProperty( propNames[i], propValues[i] );
302
303 return newMat;
304 };
289} 305}
290 306
291RaidersMaterial.prototype = new Material(); 307RaidersMaterial.prototype = new Material();
diff --git a/js/models/materials-model.js b/js/models/materials-model.js
index 692ac09a..44364aa2 100755
--- a/js/models/materials-model.js
+++ b/js/models/materials-model.js
@@ -238,6 +238,7 @@ exports.MaterialsModel = Montage.create(Component, {
238 case "fly": mat = new FlyMaterial(); break; 238 case "fly": mat = new FlyMaterial(); break;
239 case "water": mat = new WaterMaterial(); break; 239 case "water": mat = new WaterMaterial(); break;
240 case "paris": mat = new ParisMaterial(); break; 240 case "paris": mat = new ParisMaterial(); break;
241 case "raiders": mat = new RaidersMaterial(); break;
241 case "zinvert": mat = new ZInvertMaterial(); break; 242 case "zinvert": mat = new ZInvertMaterial(); break;
242 case "deform": mat = new DeformMaterial(); break; 243 case "deform": mat = new DeformMaterial(); break;
243 case "star": mat = new StarMaterial(); break; 244 case "star": mat = new StarMaterial(); break;
diff --git a/js/tools/EyedropperTool.js b/js/tools/EyedropperTool.js
index 927b86cf..7458a9e8 100755
--- a/js/tools/EyedropperTool.js
+++ b/js/tools/EyedropperTool.js
@@ -148,7 +148,11 @@ exports.EyedropperTool = Montage.create(toolBase, {
148 c = this._getColorFromElement(obj, event); 148 c = this._getColorFromElement(obj, event);
149 } 149 }
150 150
151 if(typeof(c) === "string") 151 if(!c)
152 {
153 color = null;
154 }
155 else if(typeof(c) === "string")
152 { 156 {
153 color = this.application.ninja.colorController.getColorObjFromCss(c); 157 color = this.application.ninja.colorController.getColorObjFromCss(c);
154 } 158 }
@@ -368,7 +372,7 @@ exports.EyedropperTool = Montage.create(toolBase, {
368 this._imageDataContext = this._imageDataCanvas.getContext("2d"); 372 this._imageDataContext = this._imageDataCanvas.getContext("2d");
369 if(isWebGl) 373 if(isWebGl)
370 { 374 {
371 var worldData = elt.elementModel.shapeModel.GLWorld.export(); 375 var worldData = elt.elementModel.shapeModel.GLWorld.exportJSON();
372 if(worldData) 376 if(worldData)
373 { 377 {
374 this._webGlDataCanvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", {"data-RDGE-id": njModule.NJUtils.generateRandom()}, true); 378 this._webGlDataCanvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", {"data-RDGE-id": njModule.NJUtils.generateRandom()}, true);
@@ -379,7 +383,16 @@ exports.EyedropperTool = Montage.create(toolBase, {
379 this._webGlDataCanvas.width = w; 383 this._webGlDataCanvas.width = w;
380 this._webGlDataCanvas.height = h; 384 this._webGlDataCanvas.height = h;
381 this._webGlWorld = new World(this._webGlDataCanvas, true, true); 385 this._webGlWorld = new World(this._webGlDataCanvas, true, true);
382 this._webGlWorld.import(worldData); 386
387 var index = worldData.indexOf( ';' );
388 if ((worldData[0] === 'v') && (index < 24))
389 {
390 // JSON format. separate the version info from the JSON info
391 var jStr = worldData.substr( index+1 );
392 worldData = JSON.parse( jStr );
393 }
394
395 this._webGlWorld.importJSON(worldData);
383 this._webGlWorld.render(); 396 this._webGlWorld.render();
384 setTimeout(function() { 397 setTimeout(function() {
385 this._webGlWorld.draw(); 398 this._webGlWorld.draw();