aboutsummaryrefslogtreecommitdiff
path: root/js/lib
diff options
context:
space:
mode:
authorhwc4872012-03-08 17:29:18 -0800
committerhwc4872012-03-08 17:29:18 -0800
commit7b6e8194b91168abdeb94702eb350d14f147858b (patch)
tree6c21426b2cfc54501b06d5a1b98139abf532bf75 /js/lib
parent11a6f18e274d7232cdbb8f6e9e65e0a5ab756451 (diff)
downloadninja-7b6e8194b91168abdeb94702eb350d14f147858b.tar.gz
Canvas IO
Diffstat (limited to 'js/lib')
-rwxr-xr-xjs/lib/drawing/world.js29
-rwxr-xr-xjs/lib/geom/circle.js5
-rwxr-xr-xjs/lib/geom/geom-obj.js42
-rwxr-xr-xjs/lib/geom/rectangle.js5
-rwxr-xr-xjs/lib/rdge/materials/bump-metal-material.js10
-rw-r--r--js/lib/rdge/materials/pulse-material.js8
-rw-r--r--js/lib/rdge/materials/radial-blur-material.js6
-rw-r--r--js/lib/rdge/materials/taper-material.js2
-rwxr-xr-xjs/lib/rdge/materials/uber-material.js46
-rw-r--r--js/lib/rdge/runtime/CanvasDataManager.js83
-rw-r--r--js/lib/rdge/runtime/CanvasRuntime.js1338
-rw-r--r--js/lib/rdge/runtime/GLRuntime.js357
-rw-r--r--js/lib/rdge/runtime/RuntimeGeomObj.js633
-rw-r--r--js/lib/rdge/runtime/RuntimeMaterial.js351
14 files changed, 1474 insertions, 1441 deletions
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
730World.prototype.export = function( exportForPublish ) { 730World.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
940World.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
931if (typeof exports === "object") { 954if (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
66 /////////////////////////////////////////////////////////////////////// 68 ///////////////////////////////////////////////////////////////////////
@@ -610,8 +612,9 @@ var Circle = function GLCircle() {
610 console.log( "object material not found in library: " + fillMaterialName ); 612 console.log( "object material not found in library: " + fillMaterialName );
611 fillMat = MaterialsModel.exportFlatMaterial(); 613 fillMat = MaterialsModel.exportFlatMaterial();
612 } 614 }
613
614 this._fillMaterial = fillMat; 615 this._fillMaterial = fillMat;
616
617 this.importMaterials( importStr );
615 }; 618 };
616 619
617 this.collidesWithPoint = function( x, y ) { 620 this.collidesWithPoint = function( x, y ) {
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index 852aab89..1a197832 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -5,6 +5,27 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
5</copyright> */ 5</copyright> */
6 6
7var MaterialsModel = require("js/models/materials-model").MaterialsModel; 7var MaterialsModel = require("js/models/materials-model").MaterialsModel;
8var FlatMaterial = require("js/lib/rdge/materials/flat-material").FlatMaterial;
9var LinearGradientMaterial = require("js/lib/rdge/materials/linear-gradient-material").LinearGradientMaterial;
10var RadialGradientMaterial = require("js/lib/rdge/materials/radial-gradient-material").RadialGradientMaterial;
11var BumpMetalMaterial = require("js/lib/rdge/materials/bump-metal-material").BumpMetalMaterial;
12var UberMaterial = require("js/lib/rdge/materials/uber-material").UberMaterial;
13var RadialBlurMaterial = require("js/lib/rdge/materials/radial-blur-material").RadialBlurMaterial;
14var PlasmaMaterial = require("js/lib/rdge/materials/plasma-material").PlasmaMaterial;
15var PulseMaterial = require("js/lib/rdge/materials/pulse-material").PulseMaterial;
16var TunnelMaterial = require("js/lib/rdge/materials/tunnel-material").TunnelMaterial;
17var ReliefTunnelMaterial = require("js/lib/rdge/materials/relief-tunnel-material").ReliefTunnelMaterial;
18var SquareTunnelMaterial = require("js/lib/rdge/materials/square-tunnel-material").SquareTunnelMaterial;
19var FlyMaterial = require("js/lib/rdge/materials/fly-material").FlyMaterial;
20var WaterMaterial = require("js/lib/rdge/materials/water-material").WaterMaterial;
21var ZInvertMaterial = require("js/lib/rdge/materials/z-invert-material").ZInvertMaterial;
22var DeformMaterial = require("js/lib/rdge/materials/deform-material").DeformMaterial;
23var StarMaterial = require("js/lib/rdge/materials/star-material").StarMaterial;
24var TwistMaterial = require("js/lib/rdge/materials/twist-material").TwistMaterial;
25var JuliaMaterial = require("js/lib/rdge/materials/julia-material").JuliaMaterial;
26var KeleidoscopeMaterial = require("js/lib/rdge/materials/keleidoscope-material").KeleidoscopeMaterial;
27var MandelMaterial = require("js/lib/rdge/materials/mandel-material").MandelMaterial;
28
8/////////////////////////////////////////////////////////////////////// 29///////////////////////////////////////////////////////////////////////
9// Class GLGeomObj 30// Class GLGeomObj
10// Super class for all geometry classes 31// Super class for all geometry classes
@@ -235,7 +256,26 @@ var GeomObj = function GLGeomObj() {
235 var materialType = this.getPropertyFromString( "material: ", importStr ); 256 var materialType = this.getPropertyFromString( "material: ", importStr );
236 switch (materialType) 257 switch (materialType)
237 { 258 {
238 case "flat": mat = new FlatMaterial(); break; 259 case "flat": mat = new FlatMaterial(); break;
260 case "radialGradient": mat = new RadialGradientMaterial(); break;
261 case "linearGradient": mat = new LinearGradientMaterial(); break;
262 case "bumpMetal": mat = new BumpMetalMaterial(); break;
263 case "uber": mat = new UberMaterial(); break;
264 case "plasma": mat = new PlasmaMaterial(); break;
265 case "deform": mat = new DeformMaterial(); break;
266 case "water": mat = new WaterMaterial(); break;
267 case "tunnel": mat = new TunnelMaterial(); break;
268 case "reliefTunnel": mat = new ReliefTunnelMaterial(); break;
269 case "squareTunnel": mat = new SquareTunnelMaterial(); break;
270 case "twist": mat = new TwiseMaterial(); break;
271 case "fly": mat = new FlyMaterial(); break;
272 case "julia": mat = new JuliaMaterial(); break;
273 case "mandel": mat = new MandelMaterial(); break;
274 case "star": mat = new StarMaterial(); break;
275 case "zinvert": mat = new ZInvertMaterial(); break;
276 case "keleidoscope": mat = new KeleidoscopeMaterial(); break;
277 case "radialBlur": mat = new RadialBlurMaterial(); break;
278 case "pulse": mat = new PulseMaterial(); break;
239 279
240 default: 280 default:
241 console.log( "material type: " + materialType + " is not supported" ); 281 console.log( "material type: " + materialType + " is not supported" );
diff --git a/js/lib/geom/rectangle.js b/js/lib/geom/rectangle.js
index f91e830c..370bb257 100755
--- a/js/lib/geom/rectangle.js
+++ b/js/lib/geom/rectangle.js
@@ -79,6 +79,8 @@ var Rectangle = function GLRectangle() {
79 } else { 79 } else {
80 this._fillMaterial = MaterialsModel.exportFlatMaterial(); 80 this._fillMaterial = MaterialsModel.exportFlatMaterial();
81 } 81 }
82
83 this.exportMaterials();
82 }; 84 };
83 85
84 /////////////////////////////////////////////////////////////////////// 86 ///////////////////////////////////////////////////////////////////////
@@ -264,8 +266,9 @@ var Rectangle = function GLRectangle() {
264 console.log( "object material not found in library: " + fillMaterialName ); 266 console.log( "object material not found in library: " + fillMaterialName );
265 fillMat = MaterialsModel.exportFlatMaterial(); 267 fillMat = MaterialsModel.exportFlatMaterial();
266 } 268 }
267
268 this._fillMaterial = fillMat; 269 this._fillMaterial = fillMat;
270
271 this.importMaterials( importStr );
269 }; 272 };
270 273
271 this.buildBuffers = function() { 274 this.buildBuffers = function() {
diff --git a/js/lib/rdge/materials/bump-metal-material.js b/js/lib/rdge/materials/bump-metal-material.js
index 67b16371..70873885 100755
--- a/js/lib/rdge/materials/bump-metal-material.js
+++ b/js/lib/rdge/materials/bump-metal-material.js
@@ -158,10 +158,14 @@ var BumpMetalMaterial = function BumpMetalMaterial() {
158 var exportStr = "material: " + this.getShaderName() + "\n"; 158 var exportStr = "material: " + this.getShaderName() + "\n";
159 exportStr += "name: " + this.getName() + "\n"; 159 exportStr += "name: " + this.getName() + "\n";
160 160
161 var world = this.getWorld();
162 if (!world)
163 throw new Error( "no world in material.export, " + this.getName() );
164
161 exportStr += "lightDiff: " + this.getLightDiff() + "\n"; 165 exportStr += "lightDiff: " + this.getLightDiff() + "\n";
162 exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n"; 166 exportStr += "diffuseTexture: " + world.cleansePath(this.getDiffuseTexture()) + "\n";
163 exportStr += "specularTextur