aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom
diff options
context:
space:
mode:
authorhwc4872012-06-06 16:34:41 -0700
committerhwc4872012-06-06 16:34:41 -0700
commit6c994c4b90023cecf4fd0caafb404b859fe28f54 (patch)
tree75a4d813441ca6a3eb529dc88a749776459bb76e /js/lib/geom
parent920436977433ea55c01ce1e73895d1db0a6abac1 (diff)
downloadninja-6c994c4b90023cecf4fd0caafb404b859fe28f54.tar.gz
material cleanup and rearchitecture
Diffstat (limited to 'js/lib/geom')
-rwxr-xr-xjs/lib/geom/circle.js22
-rwxr-xr-xjs/lib/geom/geom-obj.js21
-rwxr-xr-xjs/lib/geom/rectangle.js23
3 files changed, 42 insertions, 24 deletions
diff --git a/js/lib/geom/circle.js b/js/lib/geom/circle.js
index b2709ce4..6627b4b7 100755
--- a/js/lib/geom/circle.js
+++ b/js/lib/geom/circle.js
@@ -57,16 +57,18 @@ exports.Circle = Object.create(GeomObj, {
57 this.m_world = world; 57 this.m_world = world;
58 58
59 if(strokeMaterial) { 59 if(strokeMaterial) {
60 this._strokeMaterial = strokeMaterial; 60 this._strokeMaterial = strokeMaterial.dup();
61 } else { 61 } else {
62 this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 62 this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
63 } 63 }
64 if (strokeColor && this._strokeMaterial.hasProperty( "color" )) this._strokeMaterial.setProperty( "color", this._strokeColor );
64 65
65 if(fillMaterial) { 66 if(fillMaterial) {
66 this._fillMaterial = fillMaterial; 67 this._fillMaterial = fillMaterial.dup();
67 } else { 68 } else {
68 this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 69 this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
69 } 70 }
71 if (fillColor && this._fillMaterial.hasProperty( "color" )) this._fillMaterial.setProperty( "color", this._fillColor );
70 } 72 }
71 }, 73 },
72 74
@@ -702,19 +704,23 @@ exports.Circle = Object.create(GeomObj, {
702 var strokeMaterialName = jObj.strokeMat; 704 var strokeMaterialName = jObj.strokeMat;
703 var fillMaterialName = jObj.fillMat; 705 var fillMaterialName = jObj.fillMat;
704 706
705 var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ); 707 var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ).dup();
706 if (!strokeMat) { 708 if (!strokeMat) {
707 console.log( "object material not found in library: " + strokeMaterialName ); 709 console.log( "object material not found in library: " + strokeMaterialName );
708 strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 710 strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
709 } 711 }
710 this._strokeMaterial = strokeMat; 712 this._strokeMaterial = strokeMat;
713 if (this._strokeMaterial.hasProperty( 'color' ))
714 this._strokeMaterial.setProperty( 'color', this._strokeColor );
711 715
712 var fillMat = MaterialsModel.getMaterial( fillMaterialName ); 716 var fillMat = MaterialsModel.getMaterial( fillMaterialName ).dup();
713 if (!fillMat) { 717 if (!fillMat) {
714 console.log( "object material not found in library: " + fillMaterialName ); 718 console.log( "object material not found in library: " + fillMaterialName );
715 fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 719 fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
716 } 720 }
717 this._fillMaterial = fillMat; 721 this._fillMaterial = fillMat;
722 if (this._fillMaterial.hasProperty( 'color' ))
723 this._fillMaterial.setProperty( 'color', this._fillColor );
718 724
719 this.importMaterialsJSON( jObj.materials ); 725 this.importMaterialsJSON( jObj.materials );
720 } 726 }
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js
index 417c8731..3a7a5619 100755
--- a/js/lib/geom/geom-obj.js
+++ b/js/lib/geom/geom-obj.js
@@ -281,9 +281,11 @@ exports.GeomObj = Object.create(Object.prototype, {
281 this._materialArray.push(strokeMaterial); 281 this._materialArray.push(strokeMaterial);
282 this._materialTypeArray.push("stroke"); 282 this._materialTypeArray.push("stroke");
283 283
284 if (this._strokeColor) { 284 // don't set the value here. The material editor may set a color directly
285 this.setStrokeColor(this._strokeColor); 285 // to the material without setting this value in the obj. The following
286 } 286 // lines of code will clobber the value in the material
287 //if (this._strokeColor)
288 // this.setStrokeColor(this._strokeColor);
287 289
288 this._strokeMaterial = strokeMaterial; 290 this._strokeMaterial = strokeMaterial;
289 291
@@ -306,12 +308,14 @@ exports.GeomObj = Object.create(Object.prototype, {
306 308
307 this._materialArray.push(fillMaterial); 309 this._materialArray.push(fillMaterial);
308 this._materialTypeArray.push("fill"); 310 this._materialTypeArray.push("fill");
311
312 // don't set the value here. The material editor may set a color directly
313 // to the material without setting this value in the obj. The following
314 // lines of code will clobber the value in the material
315 //if (this._fillColor)
316 // this.setFillColor(this._fillColor);
309 317
310 if (this._fillColor) { 318 this._fillMaterial = fillMaterial;
311 this.setFillColor(this._fillColor);
312 }
313
314 this._fillMaterial = fillMaterial;
315 319
316 return fillMaterial; 320 return fillMaterial;
317 } 321 }
@@ -389,6 +393,7 @@ exports.GeomObj = Object.create(Object.prototype, {
389 case "radialBlur": 393 case "radialBlur":
390 case "pulse": 394 case "pulse":
391 case "twistVert": 395 case "twistVert":
396 case "taper":
392 mat = MaterialsModel.getMaterialByShader(shaderName); 397 mat = MaterialsModel.getMaterialByShader(shaderName);
393 if (mat) mat = mat.dup(); 398 if (mat) mat = mat.dup();
394 break; 399 break;
diff --git a/js/lib/geom/rectangle.js b/js/lib/geom/rectangle.js
index 42d51e74..81a8556d 100755
--- a/js/lib/geom/rectangle.js
+++ b/js/lib/geom/rectangle.js
@@ -73,16 +73,19 @@ exports.Rectangle = Object.create(GeomObj, {
73 this._materialSpecular = [0.4, 0.4, 0.4, 1.0]; 73 this._materialSpecular = [0.4, 0.4, 0.4, 1.0];
74 74
75 if(strokeMaterial) { 75 if(strokeMaterial) {
76 this._strokeMaterial = strokeMaterial; 76 this._strokeMaterial = strokeMaterial.dup();
77 } else { 77 } else {
78 this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 78 this._strokeMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
79 } 79 }
80 if (strokeColor && this._strokeMaterial.hasProperty( "color" )) this._strokeMaterial.setProperty( "color", this._strokeColor );
81
80 82
81 if(fillMaterial) { 83 if(fillMaterial) {
82 this._fillMaterial = fillMaterial; 84 this._fillMaterial = fillMaterial.dup();
83 } else { 85 } else {
84 this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 86 this._fillMaterial = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
85 } 87 }
88 if (fillColor && this._fillMaterial.hasProperty( "color" )) this._fillMaterial.setProperty( "color", this._fillColor );
86 } 89 }
87 }, 90 },
88 91
@@ -289,19 +292,23 @@ exports.Rectangle = Object.create(GeomObj, {
289 var strokeMaterialName = jObj.strokeMat; 292 var strokeMaterialName = jObj.strokeMat;
290 var fillMaterialName = jObj.fillMat; 293 var fillMaterialName = jObj.fillMat;
291 294
292 var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ); 295 var strokeMat = MaterialsModel.getMaterial( strokeMaterialName ).dup();
293 if (!strokeMat) { 296 if (!strokeMat) {
294 console.log( "object material not found in library: " + strokeMaterialName ); 297 console.log( "object material not found in library: " + strokeMaterialName );
295 strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 298 strokeMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
296 } 299 }
297 this._strokeMaterial = strokeMat; 300 this._strokeMaterial = strokeMat;
301 if (this._strokeMaterial.hasProperty( 'color' ))
302 this._strokeMaterial.setProperty( 'color', this._strokeColor );
298 303
299 var fillMat = MaterialsModel.getMaterial( fillMaterialName ); 304 var fillMat = MaterialsModel.getMaterial( fillMaterialName ).dup();
300 if (!fillMat) { 305 if (!fillMat) {
301 console.log( "object material not found in library: " + fillMaterialName ); 306 console.log( "object material not found in library: " + fillMaterialName );
302 fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ); 307 fillMat = MaterialsModel.getMaterial( MaterialsModel.getDefaultMaterialName() ).dup();
303 } 308 }
304 this._fillMaterial = fillMat; 309 this._fillMaterial = fillMat;
310 if (this._fillMaterial.hasProperty( 'color' ))
311 this._fillMaterial.setProperty( 'color', this._fillColor );
305 312
306 this.importMaterialsJSON( jObj.materials ); 313 this.importMaterialsJSON( jObj.materials );
307 } 314 }