aboutsummaryrefslogtreecommitdiff
path: root/js/lib/rdge/materials/taper-material.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib/rdge/materials/taper-material.js')
-rw-r--r--js/lib/rdge/materials/taper-material.js396
1 files changed, 169 insertions, 227 deletions
diff --git a/js/lib/rdge/materials/taper-material.js b/js/lib/rdge/materials/taper-material.js
index efba3807..7938336b 100644
--- a/js/lib/rdge/materials/taper-material.js
+++ b/js/lib/rdge/materials/taper-material.js
@@ -1,8 +1,8 @@
1/* <copyright> 1/* <copyright>
2 This file contains proprietary software owned by Motorola Mobility, Inc.<br/> 2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> 3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4 (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. 4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5 </copyright> */ 5</copyright> */
6 6
7var Material = require("js/lib/rdge/materials/material").Material; 7var Material = require("js/lib/rdge/materials/material").Material;
8var Texture = require("js/lib/rdge/texture").Texture; 8var Texture = require("js/lib/rdge/texture").Texture;
@@ -13,243 +13,185 @@ var Texture = require("js/lib/rdge/texture").Texture;
13/////////////////////////////////////////////////////////////////////// 13///////////////////////////////////////////////////////////////////////
14var TaperMaterial = function TaperMaterial() 14var TaperMaterial = function TaperMaterial()
15{ 15{
16 // initialize the inherited members 16 // initialize the inherited members
17 this.inheritedFrom = Material; 17 this.inheritedFrom = Material;
18 this.inheritedFrom(); 18 this.inheritedFrom();
19 19
20 /////////////////////////////////////////////////////////////////////// 20 ///////////////////////////////////////////////////////////////////////
21 // Instance variables 21 // Instance variables
22 /////////////////////////////////////////////////////////////////////// 22 ///////////////////////////////////////////////////////////////////////
23 this._name = "TaperMaterial"; 23 this._name = "TaperMaterial";
24 this._shaderName = "taper"; 24 this._shaderName = "taper";
25 25
26 this._color = [1,0,0,1]; 26 this._color = [1, 0, 0, 1];
27 27
28 this._deltaTime = 0.0; 28 this._deltaTime = 0.0;
29 29
30 /////////////////////////////////////////////////////////////////////// 30 ///////////////////////////////////////////////////////////////////////
31 // Property Accessors 31 // Property Accessors
32 /////////////////////////////////////////////////////////////////////// 32 ///////////////////////////////////////////////////////////////////////
33 this.getColor = function() { return this._color; } 33 this.getColor = function () { return this._color; };
34 this.getShaderName = function() { return this._shaderName; } 34 this.getShaderName = function () { return this._shaderName; };
35 35
36 this.isAnimated = function() { return true; } 36 this.isAnimated = function () { return true; };
37 this.hasVertexDeformation = function() { return this._hasVertexDeformation; } 37 this.hasVertexDeformation = function () { return this._hasVertexDeformation; };
38 this._hasVertexDeformation = true; 38 this._hasVertexDeformation = true;
39 this._vertexDeformationTolerance = 0.02; // should be a property 39 this._vertexDeformationTolerance = 0.02; // should be a property
40 40
41 /////////////////////////////////////////////////////////////////////// 41 ///////////////////////////////////////////////////////////////////////
42 // Methods 42 // Methods
43 /////////////////////////////////////////////////////////////////////// 43 ///////////////////////////////////////////////////////////////////////
44 // duplcate method requirde 44 // duplcate method requirde
45 this.dup = function() { return new TaperMaterial(); } 45 this.dup = function () { return new TaperMaterial(); };
46 46
47 this.init = function( world ) 47 this.init = function (world) {
48 { 48 this.setWorld(world);
49 this.setWorld( world ); 49
50 50 // set up the shader
51 // set up the shader 51 this._shader = new RDGE.jshader();
52 this._shader = new jshader(); 52 this._shader.def = taperShaderDef;
53 this._shader.def = taperShaderDef; 53 this._shader.init();
54 this._shader.init(); 54
55 55 // set the defaults
56 // set the defaults 56 this._shader.colorMe.color.set(this.getColor());
57 this._shader.colorMe.color.set( this.getColor() ); 57
58 58 // set up the material node
59 // set up the material node 59 this._materialNode = RDGE.createMaterialNode("taperMaterial" + "_" + world.generateUniqueNodeID());
60 this._materialNode = createMaterialNode("taperMaterial" + "_" + world.generateUniqueNodeID()); 60 this._materialNode.setShader(this._shader);
61 this._materialNode.setShader(this._shader); 61
62 62 // initialize the taper properties
63 // initialize the taper properties 63 this.updateShaderValues();
64 this.updateShaderValues(); 64 };
65 } 65
66 66
67 67 ///////////////////////////////////////////////////////////////////////
68 /////////////////////////////////////////////////////////////////////// 68 // Material Property Accessors
69 // Material Property Accessors 69 ///////////////////////////////////////////////////////////////////////
70 /////////////////////////////////////////////////////////////////////// 70 this._propNames = ["color", "u_limit1", "u_limit2", "u_limit3", "u_minVal", "u_maxVal", "u_center", "u_taperAmount"];
71 this._propNames = ["color", "u_limit1", "u_limit2", "u_limit3", "u_minVal", "u_maxVal", "u_center", "u_taperAmount" ]; 71 this._propLabels = ["Color", "Minimum Parameter Value", "Center Paramater Value", "Maximum Parameter Value", "Minimum Data Bounds", "Maximum Data Bounds", "Center", "Taper Amount"];
72 this._propLabels = ["Color", "Minimum Parameter Value", "Center Paramater Value", "Maximum Parameter Value", "Minimum Data Bounds", "Maximum Data Bounds", "Center", "Taper Amount"]; 72 this._propTypes = ["color", "float", "float", "float", "float", "float", "float", "float"];
73 this._propTypes = ["color", "float", "float", "float", "float", "float", "float", "float"]; 73 this._propValues = [];
74 this._propValues = []; 74
75 75 // initialize the property values
76 // initialize the property values 76 this._propValues[this._propNames[0]] = this._color.slice();
77 this._propValues[ this._propNames[0] ] = this._color.slice(); 77 this._propValues[this._propNames[1]] = 0.25;
78 this._propValues[ this._propNames[1] ] = 0.25; 78 this._propValues[this._propNames[2]] = 0.50;
79 this._propValues[ this._propNames[2] ] = 0.50; 79 this._propValues[this._propNames[3]] = 0.75;
80 this._propValues[ this._propNames[3] ] = 0.75; 80 this._propValues[this._propNames[4]] = -1;
81 this._propValues[ this._propNames[4] ] = -1; 81 this._propValues[this._propNames[5]] = 1;
82 this._propValues[ this._propNames[5] ] = 1; 82 this._propValues[this._propNames[6]] = 0.0;
83 this._propValues[ this._propNames[6] ] = 0.0; 83 this._propValues[this._propNames[7]] = 0.9;
84 this._propValues[ this._propNames[7] ] = 0.9; 84
85 85 this.setProperty = function (prop, value) {
86 this.setProperty = function( prop, value ) 86 // make sure we have legitimate input
87 { 87 if (this.validateProperty(prop, value)) {
88 // make sure we have legitimate input 88 switch (prop) {
89 if (this.validateProperty( prop, value )) 89 case "color": this._propValues[prop] = value.slice(); break;
90 default: this._propValues[prop] = value; break;
91 }
92
93 this.updateShaderValues();
94 }
95 };
96 ///////////////////////////////////////////////////////////////////////
97 this.exportJSON = function () {
98 var jObj =
90 { 99 {
91 switch (prop) 100 'material': this.getShaderName(),
92 { 101 'name': this.getName(),
93 case "color": this._propValues[prop] = value.slice(); break; 102 'color': this._propValues["color"]
94 default: this._propValues[prop] = value; break;
95 }
96
97 this.updateShaderValues();
98 }
99 }
100 ///////////////////////////////////////////////////////////////////////
101 this.exportJSON = function()
102 {
103 var jObj =
104 {
105 'material' : this.getShaderName(),
106 'name' : this.getName(),
107 'color' : this._propValues["color"]
108 }; 103 };
109 104
110 return jObj; 105 return jObj;
111 } 106 };
112 107
113 this.importJSON = function( jObj ) 108 this.importJSON = function (jObj) {
114 { 109 if (this.getShaderName() != jObj.material) throw new Error("ill-formed material");
115 if (this.getShaderName() != jObj.material) throw new Error( "ill-formed material" ); 110 this.setName(jObj.name);
116 this.setName( jObj.name ); 111
117 112 try {
118 try 113 var color = jObj.color;
119 { 114 this.setProperty("color", color);
120 var color = jObj.color; 115 }
121 this.setProperty( "color", color); 116 catch (e) {
122 } 117 throw new Error("could not import material: " + jObj);
123 catch (e) 118 }
124 { 119 };
125 throw new Error( "could not import material: " + jObj ); 120
126 } 121 this.update = function (time) {
127 } 122 //var speed = 0.01;
128 123 //time *= speed;
129 this.export = function() 124 this._deltaTime += 0.01;
130 { 125
131 // this function should be overridden by subclasses 126 if (this._shader && this._shader.colorMe) {
132 var exportStr = "material: " + this.getShaderName() + "\n"; 127 var t3 = this._propValues[this._propNames[3]] - this._deltaTime;
133 exportStr += "name: " + this.getName() + "\n"; 128 if (t3 < 0) {
134 129 this._deltaTime = this._propValues[this._propNames[1]] - 1.0;
135 if (this._shader) 130 t3 = this._propValues[this._propNames[3]] - this._deltaTime;
136 exportStr += "color: " + this._shader.colorMe.color + "\n"; 131 }
137 else 132 var t1 = this._propValues[this._propNames[1]] - this._deltaTime,
138 exportStr += "color: " + this.getColor() + "\n"; 133 t2 = this._propValues[this._propNames[2]] - this._deltaTime;
139 exportStr += "endMaterial\n"; 134
140 135
141 return exportStr; 136 this._shader.colorMe[this._propNames[1]].set([t1]);
142 } 137