From 53d83f9515c1d6edd35bf16a94e022730ccafbe9 Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 26 Mar 2012 11:43:06 -0700 Subject: Updating EyeDropper tool to support new JSON data format for WebGL. Signed-off-by: Nivesh Rajbhandari --- js/tools/EyedropperTool.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/js/tools/EyedropperTool.js b/js/tools/EyedropperTool.js index 927b86cf..6d6937e3 100755 --- a/js/tools/EyedropperTool.js +++ b/js/tools/EyedropperTool.js @@ -368,7 +368,7 @@ exports.EyedropperTool = Montage.create(toolBase, { this._imageDataContext = this._imageDataCanvas.getContext("2d"); if(isWebGl) { - var worldData = elt.elementModel.shapeModel.GLWorld.export(); + var worldData = elt.elementModel.shapeModel.GLWorld.exportJSON(); if(worldData) { this._webGlDataCanvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", {"data-RDGE-id": njModule.NJUtils.generateRandom()}, true); @@ -379,7 +379,16 @@ exports.EyedropperTool = Montage.create(toolBase, { this._webGlDataCanvas.width = w; this._webGlDataCanvas.height = h; this._webGlWorld = new World(this._webGlDataCanvas, true, true); - this._webGlWorld.import(worldData); + + var index = worldData.indexOf( ';' ); + if ((worldData[0] === 'v') && (index < 24)) + { + // JSON format. separate the version info from the JSON info + var jStr = worldData.substr( index+1 ); + worldData = JSON.parse( jStr ); + } + + this._webGlWorld.importJSON(worldData); this._webGlWorld.render(); setTimeout(function() { this._webGlWorld.draw(); -- cgit v1.2.3 From 21ed09eedee336e69ce2e0f9fd254eb989227adf Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 26 Mar 2012 12:09:47 -0700 Subject: Handle no-color/null. Signed-off-by: Nivesh Rajbhandari --- js/tools/EyedropperTool.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/tools/EyedropperTool.js b/js/tools/EyedropperTool.js index 6d6937e3..7458a9e8 100755 --- a/js/tools/EyedropperTool.js +++ b/js/tools/EyedropperTool.js @@ -148,7 +148,11 @@ exports.EyedropperTool = Montage.create(toolBase, { c = this._getColorFromElement(obj, event); } - if(typeof(c) === "string") + if(!c) + { + color = null; + } + else if(typeof(c) === "string") { color = this.application.ninja.colorController.getColorObjFromCss(c); } -- cgit v1.2.3 From 723ea402b74efa0424b96c7e125c8ebb2b72410c Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Mon, 26 Mar 2012 17:36:27 -0700 Subject: Fixed issue with WebGL materials not working after file-save or chrome-preview. Also fixed Raiders material not showing in the PI or working during Chrome Preview. Signed-off-by: Nivesh Rajbhandari --- assets/canvas-runtime.js | 1 + js/lib/drawing/world.js | 21 ++++++++++++++++----- js/lib/geom/geom-obj.js | 2 ++ js/lib/rdge/materials/radial-blur-material.js | 18 +++++++++++++++++- js/models/materials-model.js | 1 + 5 files changed, 37 insertions(+), 6 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() case "deform": case "water": case "paris": + case "raiders": case "tunnel": case "reliefTunnel": 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() // We need to rebuild everything if (this._useWebGL) { - var root = this._rootNode; - root.children = new Array(); if (worldObj.children && (worldObj.children.length === 1)) { - this.init(); - this._geomRoot = undefined; - this.importObjectsJSON( worldObj.children[0] ); + this.rebuildTree(this._geomRoot); + this.restartRenderLoop(); } } @@ -783,6 +780,20 @@ World.prototype.exportJSON = function() return jStr; } +World.prototype.rebuildTree = function( obj ) +{ + if (!obj) return; + + obj.buildBuffers(); + + if (obj.getChild()) { + this.rebuildTree( obj.getChild () ); + } + + if (obj.getNext()) + this.rebuildTree( obj.getNext() ); +} + World.prototype.exportObjectsJSON = function( obj, parentObj ) { 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() { case "deform": case "water": case "paris": + case "raiders": case "tunnel": case "reliefTunnel": case "squareTunnel": @@ -375,6 +376,7 @@ var GeomObj = function GLGeomObj() { case "deform": case "water": case "paris": + case "raiders": case "tunnel": case "reliefTunnel": 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() this.inheritedFrom(); this._name = "RaidersMaterial"; - this._shaderName = "radialBlur"; + this._shaderName = "raiders"; this._texMap = 'assets/images/raiders.png'; this._propValues[ this._propNames[0] ] = this._texMap.slice(0); + + + // duplcate method requirde + this.dup = function( world ) { + // allocate a new uber material + var newMat = new RaidersMaterial(); + + // copy over the current values; + var propNames = [], propValues = [], propTypes = [], propLabels = []; + this.getAllProperties( propNames, propValues, propTypes, propLabels); + var n = propNames.length; + for (var i=0; i