aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js
diff options
context:
space:
mode:
authorJose Antonio Marquez2012-03-06 11:18:30 -0800
committerJose Antonio Marquez2012-03-06 11:18:30 -0800
commit3c4967fa93b3abc529fc404115707307ba72d5cd (patch)
treef3737db979727ee050f8b9c85ef994b0e6ddae27 /js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js
parentbee2df0d4da72677aaa2adae669ffdd4ac210dd6 (diff)
parent84332ab81c1b445195f1d9be8bbeae0725c8e758 (diff)
downloadninja-3c4967fa93b3abc529fc404115707307ba72d5cd.tar.gz
Merge branch 'refs/heads/Ninja-Internal' into FileIO
Diffstat (limited to 'js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js')
-rwxr-xr-xjs/helper-classes/backup-delete/Materials/BumpMetalMaterial.js302
1 files changed, 302 insertions, 0 deletions
diff --git a/js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js b/js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js
new file mode 100755
index 00000000..a7a3724e
--- /dev/null
+++ b/js/helper-classes/backup-delete/Materials/BumpMetalMaterial.js
@@ -0,0 +1,302 @@
1/* <copyright>
2 This 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/>
4 (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5 </copyright> */
6
7
8///////////////////////////////////////////////////////////////////////
9// Class GLMaterial
10// RDGE representation of a material.
11///////////////////////////////////////////////////////////////////////
12function BumpMetalMaterial()
13{
14 // initialize the inherited members
15 this.inheritedFrom = GLMaterial;
16 this.inheritedFrom();
17
18 ///////////////////////////////////////////////////////////////////////
19 // Instance variables
20 ///////////////////////////////////////////////////////////////////////
21 this._name = "BumpMetalMaterial";
22 this._shaderName = "bumpMetal";
23
24 this._lightDiff = [0.3, 0.3, 0.3, 1.0];
25 this._diffuseTexture = "assets/images/metal.png";
26 this._specularTexture = "assets/images/silver.png";
27 this._normalTexture = "assets/images/normalMap.png";
28
29 ///////////////////////////////////////////////////////////////////////
30 // Property Accessors
31 ///////////////////////////////////////////////////////////////////////
32 this.getName = function() { return this._name; };
33 this.getShaderName = function() { return this._shaderName; };
34
35 this.getLightDiff = function() { return this._lightDiff; };
36 this.setLightDiff = function(ld) { this._lightDiff = ld;
37 if (this._shader && this._shader.default)
38 this._shader.default.u_light0Diff.set( ld ); };
39
40 this.getDiffuseTexture = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null };
41 this.setDiffuseTexture = function(m) { this._propValues[this._propNames[1]] = m ? m.slice(0) : null; this.updateTexture(1); };
42
43 this.getNormalTexture = function() { return this._propValues[this._propNames[2]] ? this._propValues[this._propNames[2]].slice() : null };
44 this.setNormalTexture = function(m) { this._propValues[this._propNames[2]] = m ? m.slice(0) : null; this.updateTexture(2); };
45
46 this.getSpecularTexture = function() { return this._propValues[this._propNames[3]] ? this._propValues[this._propNames[3]].slice() : null };
47 this.setSpecularTexture = function(m) { this._propValues[this._propNames[3]] = m ? m.slice(0) : null; this.updateTexture(3); };
48
49 this.isAnimated = function() { return true; };
50
51 ///////////////////////////////////////////////////////////////////////
52 // Material Property Accessors
53 ///////////////////////////////////////////////////////////////////////
54 this._propNames = ["lightDiff", "diffuseTexture", "normalMap", "specularTexture"];
55 this._propLabels = ["Diffuse Color", "Diffuse Map", "Bump Map", "Specular Map"];
56 this._propTypes = ["color", "file", "file", "file"];
57 this._propValues = [];
58
59 this._propValues[ this._propNames[0] ] = this._lightDiff.slice(0);
60 this._propValues[ this._propNames[1] ] = this._diffuseTexture.slice(0);
61 this._propValues[ this._propNames[2] ] = this._normalTexture.slice(0);
62 this._propValues[ this._propNames[3] ] = this._specularTexture.slice(0);
63
64 // TODO - shader techniques are not all named the same, i.e., FlatMaterial uses "colorMe" and BrickMaterial uses "default"
65 this.setProperty = function( prop, value )
66 {
67 // every material should do something with the "color" property
68 if (prop === "color") prop = "lightDiff";
69
70 // make sure we have legitimate imput
71 var ok = this.validateProperty( prop, value );
72 if (!ok)
73 {
74 console.log( "invalid property in Bump Metal Materia;" + prop + " : " + value );
75 return;
76 }
77
78 switch (prop)
79 {
80 case "lightDiff": this.setLightDiff( value ); break;
81 case "diffuseTexture": this.setDiffuseTexture( value ); break;
82 case "specularTexture": this.setSpecularTexture( value ); break;
83 case "normalMap": this.setNormalTexture( value ); break;
84
85 default:
86 console.log( "invalid property to Bump Metal Material: " + prop + ", value: " + value );
87 break;
88 }
89 };
90
91 ///////////////////////////////////////////////////////////////////////
92 // Methods
93 ///////////////////////////////////////////////////////////////////////
94 // duplcate method requirde
95 this.dup = function() { return new BumpMetalMaterial(); };
96
97 this.init = function( world )
98 {
99 // save the world
100 if (world) this.setWorld( world );
101
102 // set up the shader
103 this._shader = new jshader();
104 this._shader.def = bumpMetalMaterialDef;
105 this._shader.init();
106 this._shader.default.u_light0Diff.set( this.getLightDiff() );
107
108 // set up the material node
109 this._materialNode = createMaterialNode( this.getShaderName() );
110 this._materialNode.setShader(this._shader);
111
112 // set some image maps
113 this.updateTexture(1);
114 this.updateTexture(2);
115 this.updateTexture(3);
116 };
117
118 this.updateTexture = function( index )
119 {
120 var material = this._materialNode;
121 if (material)
122 {
123 var technique = material.shaderProgram.default;
124 var renderer = g_Engine.getContext().renderer;
125 if (renderer && technique)
126 {
127 var texMapName = this._propValues[this._propNames[index]];
128 var wrap = 'REPEAT', mips = true;
129 var tex = this.loadTexture( texMapName, wrap, mips );
130
131 if (tex)
132 {
133 switch (index)
134 {
135 case 1: technique.u_colMap.set( tex ); break;
136 case 2: technique.u_normalMap.set( tex ); break;
137 case 3: technique.u_glowMap.set( tex ); break;
138 default: console.log( "invalid map index in BumpMetalMaterial, " + index );
139 }
140 }
141 }
142 }
143 };
144
145 this.export = function()
146 {
147 // every material needs the base type and instance name
148 var exportStr = "material: " + this.getShaderName() + "\n";
149 exportStr += "name: " + this.getName() + "\n";
150
151 exportStr += "lightDiff: " + this.getLightDiff() + "\n";
152 exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n";
153 exportStr += "specularTexture: " + this.getSpecularTexture() + "\n";
154 exportStr += "normalMap: " + this.getNormalTexture() + "\n";
155
156 // every material needs to terminate like this
157 exportStr += "endMaterial\n";
158
159 return exportStr;
160 };
161
162 this.import = function( importStr )
163 {
164 var pu = new ParseUtils( importStr );
165 var material = pu.nextValue( "material: " );
166 if (material != this.getShaderName()) throw new Error( "ill-formed material" );
167 this.setName( pu.nextValue( "name: ") );
168
169 var rtnStr;
170 try
171 {
172 var lightDiff = eval( "[" + pu.nextValue( "lightDiff: " ) + "]" ),
173 dt = pu.nextValue( "diffuseTexture: " ),
174 st = pu.nextValue( "specularTexture: " ),
175 nt = pu.nextValue( "normalMap: " );
176
177 this.setProperty( "lightDiff", lightDiff);
178 this.setProperty( "diffuseTexture", dt );
179 this.setProperty( "specularTexture", st );
180 this.setProperty( "normalMap", nt );
181
182 var endKey = "endMaterial\n";
183 var index = importStr.indexOf( endKey );
184 index += endKey.length;
185 rtnStr = importStr.substr( index );
186 }
187 catch (e)
188 {
189 throw new Error( "could not import material: " + importStr );
190 }
191
192 return rtnStr;