diff options
author | Valerio Virgillito | 2012-03-27 11:30:17 -0700 |
---|---|---|
committer | Valerio Virgillito | 2012-03-27 11:30:17 -0700 |
commit | 73ae65902d355fcb75bcdb486eaa27c0d79125c8 (patch) | |
tree | 89b0ae1c6d49916544f5003f7c6d08d19b2a4fb1 | |
parent | 309dde5a8c4599cef6a1052c1ff9ee1ad8ec5858 (diff) | |
parent | 2d94104653667e93e0f7e5f8d12bc4f7b82e64fa (diff) | |
download | ninja-73ae65902d355fcb75bcdb486eaa27c0d79125c8.tar.gz |
Merge pull request #144 from mqg734/WebGLFileIO
WebGL Fixes and Minor EyeDropper Tool Fixes.
-rw-r--r-- | assets/canvas-runtime.js | 1 | ||||
-rwxr-xr-x | js/lib/drawing/world.js | 21 | ||||
-rwxr-xr-x | js/lib/geom/geom-obj.js | 2 | ||||
-rw-r--r-- | js/lib/rdge/materials/radial-blur-material.js | 18 | ||||
-rwxr-xr-x | js/models/materials-model.js | 1 | ||||
-rwxr-xr-x | js/tools/EyedropperTool.js | 19 |
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 | ||
783 | World.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 | |||
786 | World.prototype.exportObjectsJSON = function( obj, parentObj ) | 797 | World.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 | ||
291 | RaidersMaterial.prototype = new Material(); | 307 | RaidersMaterial.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(); |