From a0d23354802ebc6b437698acb4b18d3395d47cd1 Mon Sep 17 00:00:00 2001
From: hwc487
Date: Fri, 16 Mar 2012 12:26:30 -0700
Subject: Conversion to JSON based file IO for canvas2D and WebGL rendering

---
 js/lib/geom/geom-obj.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

(limited to 'js/lib/geom/geom-obj.js')

diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index 35ebadb9..2a5b0641 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -5,6 +5,7 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
 </copyright> */
 
 var MaterialsModel = require("js/models/materials-model").MaterialsModel;
+/*
 var FlatMaterial = require("js/lib/rdge/materials/flat-material").FlatMaterial;
 var LinearGradientMaterial = require("js/lib/rdge/materials/linear-gradient-material").LinearGradientMaterial;
 var RadialGradientMaterial = require("js/lib/rdge/materials/radial-gradient-material").RadialGradientMaterial;
@@ -25,6 +26,7 @@ var TwistMaterial = require("js/lib/rdge/materials/twist-material").TwistMateria
 var JuliaMaterial = require("js/lib/rdge/materials/julia-material").JuliaMaterial;
 var KeleidoscopeMaterial = require("js/lib/rdge/materials/keleidoscope-material").KeleidoscopeMaterial;
 var MandelMaterial = require("js/lib/rdge/materials/mandel-material").MandelMaterial;
+*/
 
 ///////////////////////////////////////////////////////////////////////
 // Class GLGeomObj
@@ -225,6 +227,83 @@ var GeomObj = function GLGeomObj() {
         return fillMaterial;
     };
 
+	this.exportMaterialsJSON = function()
+	{
+		var jObj;
+		if (this._materialArray && this._materialNodeArray)
+		{
+			var nMats = this._materialArray.length;
+			if (nMats > 0)
+			{
+				var arr = [];
+
+				for (var i=0;  i<nMats;  i++)
+				{
+					var matObj = 
+					{
+						'materialNodeName'	: this._materialNodeArray[i].name,
+						'material'			: this._materialArray[i].exportJSON(),
+						'type'				: this._materialTypeArray[i]
+					}
+					arr.push( matObj );
+				}
+
+				jObj =
+				{
+					'nMaterials'	: nMats,
+					'materials'		: arr
+				};
+			}
+		}
+
+		return jObj;
+	}
+
+	this.importMaterialsJSON = function( jObj )
+	{
+		var nMaterials = jObj.nMaterials;
+		var matArray = jObj.materials;
+		for (var i=0;  i<nMaterials;  i++)
+		{
+			var mat;
+			var matObj = matArray[i].material;
+			var shaderName = matObj.material;
+			switch (shaderName)
+			{
+				case "flat":
+				case "radialGradient":
+				case "linearGradient":
+				case "bumpMetal":
+				case "uber":
+				case "plasma":
+				case "deform":
+				case "water":
+				case "tunnel":
+				case "reliefTunnel":
+				case "squareTunnel":
+				case "twist":
+				case "fly":
+				case "julia":
+				case "mandel":
+				case "star":
+				case "zinvert":
+				case "keleidoscope":
+				case "radialBlur":
+				case "pulse":
+					mat = MaterialsModel.getMaterialByShader( shaderName );
+					if (mat)  mat = mat.dup();
+					break;
+
+				default:
+					console.log( "material type: " + materialType + " is not supported" );
+					break;
+			}
+
+			if (mat)
+				mat.importJSON( matObj );
+		}
+	}
+
 	this.exportMaterials = function()
 	{
 		var rtnStr = "";
-- 
cgit v1.2.3


From 55b2231d7badec16990b63ef1b6c770ef1e6fc25 Mon Sep 17 00:00:00 2001
From: hwc487
Date: Fri, 16 Mar 2012 15:17:53 -0700
Subject: Supporting new and old GL data formats.

---
 js/lib/geom/geom-obj.js | 67 ++++++++++++++++++-------------------------------
 1 file changed, 24 insertions(+), 43 deletions(-)

(limited to 'js/lib/geom/geom-obj.js')

diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index a4813326..63f71955 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -5,28 +5,6 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
 </copyright> */
 
 var MaterialsModel = require("js/models/materials-model").MaterialsModel;
-/*
-var FlatMaterial = require("js/lib/rdge/materials/flat-material").FlatMaterial;
-var LinearGradientMaterial = require("js/lib/rdge/materials/linear-gradient-material").LinearGradientMaterial;
-var RadialGradientMaterial = require("js/lib/rdge/materials/radial-gradient-material").RadialGradientMaterial;
-var BumpMetalMaterial = require("js/lib/rdge/materials/bump-metal-material").BumpMetalMaterial;
-var UberMaterial = require("js/lib/rdge/materials/uber-material").UberMaterial;
-var RadialBlurMaterial = require("js/lib/rdge/materials/radial-blur-material").RadialBlurMaterial;
-var PlasmaMaterial = require("js/lib/rdge/materials/plasma-material").PlasmaMaterial;
-var PulseMaterial = require("js/lib/rdge/materials/pulse-material").PulseMaterial;
-var TunnelMaterial = require("js/lib/rdge/materials/tunnel-material").TunnelMaterial;
-var ReliefTunnelMaterial = require("js/lib/rdge/materials/relief-tunnel-material").ReliefTunnelMaterial;
-var SquareTunnelMaterial = require("js/lib/rdge/materials/square-tunnel-material").SquareTunnelMaterial;
-var FlyMaterial = require("js/lib/rdge/materials/fly-material").FlyMaterial;
-var WaterMaterial = require("js/lib/rdge/materials/water-material").WaterMaterial;
-var ZInvertMaterial = require("js/lib/rdge/materials/z-invert-material").ZInvertMaterial;
-var DeformMaterial = require("js/lib/rdge/materials/deform-material").DeformMaterial;
-var StarMaterial = require("js/lib/rdge/materials/star-material").StarMaterial;
-var TwistMaterial = require("js/lib/rdge/materials/twist-material").TwistMaterial;
-var JuliaMaterial = require("js/lib/rdge/materials/julia-material").JuliaMaterial;
-var KeleidoscopeMaterial = require("js/lib/rdge/materials/keleidoscope-material").KeleidoscopeMaterial;
-var MandelMaterial = require("js/lib/rdge/materials/mandel-material").MandelMaterial;
-*/
 
 ///////////////////////////////////////////////////////////////////////
 // Class GLGeomObj
@@ -335,7 +313,7 @@ var GeomObj = function GLGeomObj() {
 					break;
 
 				default:
-					console.log( "material type: " + materialType + " is not supported" );
+					console.log( "material type: " + shaderName + " is not supported" );
 					break;
 			}
 
@@ -375,26 +353,29 @@ var GeomObj = function GLGeomObj() {
 			var materialType = this.getPropertyFromString( "material: ",	importStr );
 			switch (materialType)
 			{
-				case "flat":			mat = new FlatMaterial();				break;
-				case "radialGradient":  mat = new RadialGradientMaterial();		break;
-				case "linearGradient":  mat = new LinearGradientMaterial();		break;
-				case "bumpMetal":		mat = new BumpMetalMaterial();			break;
-				case "uber":			mat = new UberMaterial();				break;
-				case "plasma":			mat = new PlasmaMaterial();				break;
-				case "deform":			mat = new DeformMaterial();				break;
-				case "water":			mat = new WaterMaterial();				break;
-				case "tunnel":			mat = new TunnelMaterial();				break;
-				case "reliefTunnel":	mat = new ReliefTunnelMaterial();		break;
-				case "squareTunnel":	mat = new SquareTunnelMaterial();		break;
-				case "twist":			mat = new TwiseMaterial();				break;
-				case "fly":				mat = new FlyMaterial();				break;
-				case "julia":			mat = new JuliaMaterial();				break;
-				case "mandel":			mat = new MandelMaterial();				break;
-				case "star":			mat = new StarMaterial();				break;
-				case "zinvert":			mat = new ZInvertMaterial();			break;
-				case "keleidoscope":	mat = new KeleidoscopeMaterial();		break;
-				case "radialBlur":		mat = new RadialBlurMaterial();			break;
-				case "pulse":			mat = new PulseMaterial();				break;
+				case "flat":
+				case "radialGradient":
+				case "linearGradient":
+				case "bumpMetal":
+				case "uber":
+				case "plasma":
+				case "deform":
+				case "water":
+				case "tunnel":
+				case "reliefTunnel":
+				case "squareTunnel":
+				case "twist":
+				case "fly":
+				case "julia":
+				case "mandel":
+				case "star":
+				case "zinvert":
+				case "keleidoscope":
+				case "radialBlur":
+				case "pulse":
+					mat = MaterialsModel.getMaterialByShader( materialType );
+					if (mat)  mat = mat.dup();
+					break;
 
 				default:
 					console.log( "material type: " + materialType + " is not supported" );
-- 
cgit v1.2.3


From 98a02c1ac6f189aba93d7cce64ba5bdbc0617f6c Mon Sep 17 00:00:00 2001
From: hwc487
Date: Tue, 20 Mar 2012 16:26:52 -0700
Subject: Bug Fixes for Canvas & WebGL File IO

---
 js/lib/geom/geom-obj.js | 12 ++++++++++++
 1 file changed, 12 insertions(+)

(limited to 'js/lib/geom/geom-obj.js')

diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index 63f71955..75b7808b 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -279,6 +279,11 @@ var GeomObj = function GLGeomObj() {
 
 	this.importMaterialsJSON = function( jObj )
 	{
+		this._materialArray = [];
+		this._materialTypeArray = [];
+
+		if (!jObj)  return;
+
 		var nMaterials = jObj.nMaterials;
 		var matArray = jObj.materials;
 		for (var i=0;  i<nMaterials;  i++)
@@ -318,7 +323,14 @@ var GeomObj = function GLGeomObj() {
 			}
 
 			if (mat)
+			{
 				mat.importJSON( matObj );
+				this._materialArray.push( mat );
+				this._materialTypeArray.push( matObj.type );
+				var type = matArray[i].type;
+				if (type == "fill")  this._fillMaterial = mat;
+				else  this._strokeMaterial = mat;
+			}
 		}
 	}
 
-- 
cgit v1.2.3


From 31e924e1b8b8da8342b3ff2341c8284915486c0b Mon Sep 17 00:00:00 2001
From: hwc487
Date: Thu, 22 Mar 2012 15:32:19 -0700
Subject: Added Paris and Raiders materials

---
 js/lib/geom/geom-obj.js | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'js/lib/geom/geom-obj.js')

diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index 75b7808b..dbef4859 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -301,6 +301,7 @@ var GeomObj = function GLGeomObj() {
 				case "plasma":
 				case "deform":
 				case "water":
+				case "paris":
 				case "tunnel":
 				case "reliefTunnel":
 				case "squareTunnel":
@@ -373,6 +374,7 @@ var GeomObj = function GLGeomObj() {
 				case "plasma":
 				case "deform":
 				case "water":
+				case "paris":
 				case "tunnel":
 				case "reliefTunnel":
 				case "squareTunnel":
-- 
cgit v1.2.3


From 86770d0dba6b137e651cbf5c8d240856be65857c Mon Sep 17 00:00:00 2001
From: hwc487
Date: Fri, 23 Mar 2012 14:59:51 -0700
Subject: Fixed a problem switching from 3D to 2D and back to 3D.

---
 js/lib/geom/geom-obj.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'js/lib/geom/geom-obj.js')

diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index dbef4859..a87bdbf5 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -248,7 +248,7 @@ var GeomObj = function GLGeomObj() {
 	this.exportMaterialsJSON = function()
 	{
 		var jObj;
-		if (this._materialArray && this._materialNodeArray)
+		if (this._materialArray && this._materialNodeArray && this.getWorld().isWebGL())
 		{
 			var nMats = this._materialArray.length;
 			if (nMats > 0)
-- 
cgit v1.2.3