diff options
-rwxr-xr-x | js/document/html-document.js | 73 | ||||
-rwxr-xr-x | js/lib/drawing/world.js | 29 | ||||
-rwxr-xr-x | js/lib/geom/circle.js | 5 | ||||
-rwxr-xr-x | js/lib/geom/geom-obj.js | 42 | ||||
-rwxr-xr-x | js/lib/geom/rectangle.js | 5 | ||||
-rwxr-xr-x | js/lib/rdge/materials/bump-metal-material.js | 10 | ||||
-rw-r--r-- | js/lib/rdge/materials/pulse-material.js | 8 | ||||
-rw-r--r-- | js/lib/rdge/materials/radial-blur-material.js | 6 | ||||
-rw-r--r-- | js/lib/rdge/materials/taper-material.js | 2 | ||||
-rwxr-xr-x | js/lib/rdge/materials/uber-material.js | 46 | ||||
-rw-r--r-- | js/lib/rdge/runtime/CanvasDataManager.js | 83 | ||||
-rw-r--r-- | js/lib/rdge/runtime/CanvasRuntime.js | 1338 | ||||
-rw-r--r-- | js/lib/rdge/runtime/GLRuntime.js | 357 | ||||
-rw-r--r-- | js/lib/rdge/runtime/RuntimeGeomObj.js | 633 | ||||
-rw-r--r-- | js/lib/rdge/runtime/RuntimeMaterial.js | 351 |
15 files changed, 1519 insertions, 1469 deletions
diff --git a/js/document/html-document.js b/js/document/html-document.js index 0dc26884..b9944d66 100755 --- a/js/document/html-document.js +++ b/js/document/html-document.js | |||
@@ -9,7 +9,6 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
9 | var Montage = require("montage/core/core").Montage, | 9 | var Montage = require("montage/core/core").Montage, |
10 | TextDocument = require("js/document/text-document").TextDocument, | 10 | TextDocument = require("js/document/text-document").TextDocument, |
11 | NJUtils = require("js/lib/NJUtils").NJUtils, | 11 | NJUtils = require("js/lib/NJUtils").NJUtils, |
12 | CanvasDataManager = require("js/lib/rdge/runtime/CanvasDataManager").CanvasDataManager, | ||
13 | GLWorld = require("js/lib/drawing/world").World; | 12 | GLWorld = require("js/lib/drawing/world").World; |
14 | //////////////////////////////////////////////////////////////////////// | 13 | //////////////////////////////////////////////////////////////////////// |
15 | // | 14 | // |
@@ -195,9 +194,9 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
195 | this._glData = null; | 194 | this._glData = null; |
196 | if (elt) | 195 | if (elt) |
197 | { | 196 | { |
198 | var cdm = new CanvasDataManager(); | ||
199 | this._glData = []; | 197 | this._glData = []; |
200 | cdm.collectGLData( elt, this._glData ); | 198 | var path = "assets/"; |
199 | this.collectGLData( elt, this._glData, path ); | ||
201 | } | 200 | } |
202 | 201 | ||
203 | return this._glData; | 202 | return this._glData; |
@@ -208,29 +207,47 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
208 | var elt = this.documentRoot; | 207 | var elt = this.documentRoot; |
209 | if (elt) | 208 | if (elt) |
210 | { | 209 | { |
211 | var nWorlds= value.length; | 210 | // var loadForRuntime = false; |
212 | for (var i=0; i<nWorlds; i++) { | 211 | // if (loadForRuntime) |
213 | var importStr = value[i]; | 212 | // { |
214 | var startIndex = importStr.indexOf("id: "); | 213 | // var cdm = new CanvasDataManager(); |
215 | if (startIndex >= 0) { | 214 | // cdm.loadGLData(elt, value ); |
216 | var endIndex = importStr.indexOf("\n", startIndex); | 215 | // } |
217 | if (endIndex > 0) { | 216 | // else |
218 | var id = importStr.substring( startIndex+4, endIndex); | 217 | { |
219 | if (id) { | 218 | var nWorlds= value.length; |
220 | var canvas = this.findCanvasWithID(id, elt); | 219 | for (var i=0; i<nWorlds; i++) |
221 | if (canvas) { | 220 | { |
222 | if (!canvas.elementModel) { | 221 | var importStr = value[i]; |
223 | NJUtils.makeElementModel(canvas, "Canvas", "shape", true); | 222 | var startIndex = importStr.indexOf( "id: " ); |
224 | } | 223 | if (startIndex >= 0) |
225 | if (canvas.elementModel) { | 224 | { |
226 | if (canvas.elementModel.shapeModel.GLWorld) { | 225 | var endIndex = importStr.indexOf( "\n", startIndex ); |
227 | canvas.elementModel.shapeModel.GLWorld.clearTree(); | 226 | if (endIndex > 0) |
227 | { | ||
228 | var id = importStr.substring( startIndex+4, endIndex ); | ||
229 | if (id) | ||
230 | { | ||
231 | var canvas = this.findCanvasWithID( id, elt ); | ||
232 | if (canvas) | ||
233 | { | ||
234 | if (!canvas.elementModel) | ||
235 | { | ||
236 | NJUtils.makeElementModel(canvas, "Canvas", "shape", true); | ||
237 | } | ||
238 | |||
239 | if (canvas.elementModel) | ||
240 | { | ||
241 | if (canvas.elementModel.shapeModel.GLWorld) | ||
242 | canvas.elementModel.shapeModel.GLWorld.clearTree(); | ||
243 | |||
244 | var index = importStr.indexOf( "webGL: " ); | ||
245 | var useWebGL = (index >= 0) | ||
246 | var world = new GLWorld( canvas, useWebGL ); | ||
247 | world.import( importStr ); | ||
248 | |||
249 | this.buildShapeModel( canvas.elementModel, world ); | ||
228 | } | 250 | } |
229 | var index = importStr.indexOf( "webGL: " ); | ||
230 | var useWebGL = (index >= 0) | ||
231 | var world = new GLWorld(canvas, useWebGL); | ||
232 | world.import( importStr ); | ||
233 | this.buildShapeModel(canvas.elementModel, world); | ||
234 | } | 251 | } |
235 | } | 252 | } |
236 | } | 253 | } |
@@ -368,11 +385,11 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
368 | 385 | ||
369 | 386 | ||
370 | collectGLData: { | 387 | collectGLData: { |
371 | value: function( elt, dataArray ) | 388 | value: function( elt, dataArray, imagePath ) |
372 | { | 389 | { |
373 | if (elt.elementModel && elt.elementModel.shapeModel && elt.elementModel.shapeModel.GLWorld) | 390 | if (elt.elementModel && elt.elementModel.shapeModel && elt.elementModel.shapeModel.GLWorld) |
374 | { | 391 | { |
375 | var data = elt.elementModel.shapeModel.GLWorld.export(); | 392 | var data = elt.elementModel.shapeModel.GLWorld.export( imagePath ); |
376 | dataArray.push( data ); | 393 | dataArray.push( data ); |
377 | } | 394 | } |
378 | 395 | ||
@@ -382,7 +399,7 @@ exports.HTMLDocument = Montage.create(TextDocument, { | |||
382 | for (var i=0; i<nKids; i++) | 399 | for (var i=0; i<nKids; i++) |
383 | { | 400 | { |
384 | var child = elt.children[i]; | 401 | var child = elt.children[i]; |
385 | this.collectGLData( child, dataArray ); | 402 | this.collectGLData( child, dataArray, imagePath ); |
386 | } | 403 | } |
387 | } | 404 | } |
388 | } | 405 | } |
diff --git a/js/lib/drawing/world.js b/js/lib/drawing/world.js index b8bceda6..cffd0083 100755 --- a/js/lib/drawing/world.js +++ b/js/lib/drawing/world.js | |||
@@ -349,7 +349,7 @@ var World = function GLWorld( canvas, use3D ) { | |||
349 | 349 | ||
350 | this.generateUniqueNodeID = function() | 350 | this.generateUniqueNodeID = function() |
351 | { | 351 | { |
352 | var str = String( this._nodeCounter ); | 352 | var str = "" + this._nodeCounter; |
353 | this._nodeCounter++; | 353 | this._nodeCounter++; |
354 | return str; | 354 | return str; |
355 | } | 355 | } |
@@ -727,7 +727,8 @@ World.prototype.getShapeFromPoint = function( offsetX, offsetY ) { | |||
727 | } | 727 | } |
728 | }; | 728 | }; |
729 | 729 | ||
730 | World.prototype.export = function( exportForPublish ) { | 730 | World.prototype.export = function( imagePath ) |
731 | { | ||
731 | var exportStr = "GLWorld 1.0\n"; | 732 | var exportStr = "GLWorld 1.0\n"; |
732 | var id = this.getCanvas().getAttribute( "data-RDGE-id" ); | 733 | var id = this.getCanvas().getAttribute( "data-RDGE-id" ); |
733 | exportStr += "id: " + id + "\n"; | 734 | exportStr += "id: " + id + "\n"; |
@@ -742,9 +743,17 @@ World.prototype.export = function( exportForPublish ) { | |||
742 | // we need 2 export modes: One for save/restore, one for publish. | 743 | // we need 2 export modes: One for save/restore, one for publish. |
743 | // hardcoding for now | 744 | // hardcoding for now |
744 | //var exportForPublish = false; | 745 | //var exportForPublish = false; |
745 | if (!exportForPublish) exportForPublish = false; | 746 | //if (!exportForPublish) exportForPublish = false; |
747 | var exportForPublish = true; | ||
746 | exportStr += "publish: " + exportForPublish + "\n"; | 748 | exportStr += "publish: " + exportForPublish + "\n"; |
747 | 749 | ||
750 | // the relative path for local assets needs to be modified to | ||
751 | // the path specified by argument 'imagePath'. Save that path | ||
752 | // so exporting functions can call newPath = world.cleansePath( oldPath ); | ||
753 | this._imagePath = imagePath.slice(); | ||
754 | var endchar = this._imagePath[this._imagePath.length-1] | ||
755 | if (endchar != '/') this._imagePath += '/'; | ||
756 | |||
748 | if (exportForPublish && this._useWebGL) | 757 | if (exportForPublish && this._useWebGL) |
749 | { | 758 | { |
750 | exportStr += "scenedata: " + this.myScene.exportJSON() + "endscene\n"; | 759 | exportStr += "scenedata: " + this.myScene.exportJSON() + "endscene\n"; |
@@ -928,6 +937,20 @@ World.prototype.importSubObject = function( objStr, parentNode ) { | |||
928 | return trNode; | 937 | return trNode; |
929 | }; | 938 | }; |
930 | 939 | ||
940 | World.prototype.cleansePath = function( url ) | ||
941 | { | ||
942 | //this._imagePath | ||
943 | var searchStr = "assets/"; | ||
944 | var index = url.indexOf( searchStr ); | ||
945 | var rtnPath = url; | ||
946 | if (index >= 0) | ||
947 | { | ||
948 | rtnPath = url.substr( index + searchStr.length ); | ||
949 | rtnPath = this._imagePath + rtnPath; | ||
950 | } | ||
951 | return rtnPath; | ||
952 | } | ||
953 | |||
931 | if (typeof exports === "object") { | 954 | if (typeof exports === "object") { |
932 | exports.World = World; | 955 | exports.World = World; |
933 | } \ No newline at end of file | 956 | } \ No newline at end of file |
diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js index ad77383b..f94d4e6b 100755 --- a/js/lib/geom/circle.js +++ b/js/lib/geom/circle.js | |||
@@ -61,6 +61,8 @@ var Circle = function GLCircle() { | |||
61 | } else { | 61 | } else { |
62 | this._fillMaterial = MaterialsModel.exportFlatMaterial(); | 62 | this._fillMaterial = MaterialsModel.exportFlatMaterial(); |
63 | } | 63 | } |
64 | |||
65 | this.exportMaterials(); | ||
64 | }; | 66 | }; |
65 | 67 | ||