diff options
author | Eric Guzman | 2012-02-13 10:29:49 -0800 |
---|---|---|
committer | Eric Guzman | 2012-02-13 10:29:49 -0800 |
commit | e4893f7d3c3b9bd7967973197c3ffb5d3a075c91 (patch) | |
tree | f3d4fd9d96ba0dcf846fbf66153fb443bd60f767 /js/helper-classes/RDGE/Materials/BumpMetalMaterial.js | |
parent | ef032412216d437ce1c7dfc9050ab41adf0594c0 (diff) | |
parent | e142611e22718b1f1d1696902ad9161ec5f33f98 (diff) | |
download | ninja-e4893f7d3c3b9bd7967973197c3ffb5d3a075c91.tar.gz |
Merge branch 'refs/heads/master' into TreeComponents
Diffstat (limited to 'js/helper-classes/RDGE/Materials/BumpMetalMaterial.js')
-rw-r--r-- | js/helper-classes/RDGE/Materials/BumpMetalMaterial.js | 106 |
1 files changed, 69 insertions, 37 deletions
diff --git a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js index 0aa3ee78..a7a3724e 100644 --- a/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js +++ b/js/helper-classes/RDGE/Materials/BumpMetalMaterial.js | |||
@@ -22,44 +22,43 @@ function BumpMetalMaterial() | |||
22 | this._shaderName = "bumpMetal"; | 22 | this._shaderName = "bumpMetal"; |
23 | 23 | ||
24 | this._lightDiff = [0.3, 0.3, 0.3, 1.0]; | 24 | this._lightDiff = [0.3, 0.3, 0.3, 1.0]; |
25 | this._diffuseTexture = "metal"; | 25 | this._diffuseTexture = "assets/images/metal.png"; |
26 | this._specularTexture = "silver"; | 26 | this._specularTexture = "assets/images/silver.png"; |
27 | this._normalTexture = "normalMap"; | 27 | this._normalTexture = "assets/images/normalMap.png"; |
28 | 28 | ||
29 | /////////////////////////////////////////////////////////////////////// | 29 | /////////////////////////////////////////////////////////////////////// |
30 | // Property Accessors | 30 | // Property Accessors |
31 | /////////////////////////////////////////////////////////////////////// | 31 | /////////////////////////////////////////////////////////////////////// |
32 | this.getName = function() { return this._name; } | 32 | this.getName = function() { return this._name; }; |
33 | this.getShaderName = function() { return this._shaderName; } | 33 | this.getShaderName = function() { return this._shaderName; }; |
34 | 34 | ||
35 | this.getLightDiff = function() { return this._lightDiff; } | 35 | this.getLightDiff = function() { return this._lightDiff; }; |
36 | this.setLightDiff = function(ld) { this._lightDiff = ld; | 36 | this.setLightDiff = function(ld) { this._lightDiff = ld; |
37 | if (this._shader && this._shader.default) | 37 | if (this._shader && this._shader.default) |
38 | this._shader.default.u_light0Diff.set( ld ); } | 38 | this._shader.default.u_light0Diff.set( ld ); }; |
39 | 39 | ||
40 | this.getDiffuseTexture = function() { return this._diffuseTexture; } | 40 | this.getDiffuseTexture = function() { return this._propValues[this._propNames[1]] ? this._propValues[this._propNames[1]].slice() : null }; |
41 | this.setDiffuseTexture = function(dt) { this._diffuseTexture = dt; | 41 | this.setDiffuseTexture = function(m) { this._propValues[this._propNames[1]] = m ? m.slice(0) : null; this.updateTexture(1); }; |
42 | if (this._materialNode) this._materialNode.setDiffuseTexture( dt ); } | ||
43 | 42 | ||
44 | this.getSpecularTexture = function() { return this._specularTexture; } | 43 | this.getNormalTexture = function() { return this._propValues[this._propNames[2]] ? this._propValues[this._propNames[2]].slice() : null }; |
45 | this.setSpecularTexture = function(st) { this._specularTexture = st; | 44 | this.setNormalTexture = function(m) { this._propValues[this._propNames[2]] = m ? m.slice(0) : null; this.updateTexture(2); }; |
46 | if (this._materialNode) this._materialNode.setSpecularTexture( st ); } | ||
47 | 45 | ||
48 | this.getNormalTexture = function() { return this._normalTexture; } | 46 | this.getSpecularTexture = function() { return this._propValues[this._propNames[3]] ? this._propValues[this._propNames[3]].slice() : null }; |
49 | this.setNormalTexture = function(nt) { this._normalTexture = nt; | 47 | this.setSpecularTexture = function(m) { this._propValues[this._propNames[3]] = m ? m.slice(0) : null; this.updateTexture(3); }; |
50 | if (this._materialNode) this._materialNode.setNormalTexture( nt ); } | 48 | |
49 | this.isAnimated = function() { return true; }; | ||
51 | 50 | ||
52 | /////////////////////////////////////////////////////////////////////// | 51 | /////////////////////////////////////////////////////////////////////// |
53 | // Material Property Accessors | 52 | // Material Property Accessors |
54 | /////////////////////////////////////////////////////////////////////// | 53 | /////////////////////////////////////////////////////////////////////// |
55 | this._propNames = ["lightDiff", "diffuseMap", "normalMap", "specularMap"]; | 54 | this._propNames = ["lightDiff", "diffuseTexture", "normalMap", "specularTexture"]; |
56 | this._propLabels = ["Diffuse Color", "Diffuse Map", "Bump Map", "Specular Map"]; | 55 | this._propLabels = ["Diffuse Color", "Diffuse Map", "Bump Map", "Specular Map"]; |
57 | this._propTypes = ["color", "file", "file", "file"]; | 56 | this._propTypes = ["color", "file", "file", "file"]; |
58 | this._propValues = []; | 57 | this._propValues = []; |
59 | 58 | ||
60 | this._propValues[ this._propNames[0] ] = this._lightDiff.slice(0); | 59 | this._propValues[ this._propNames[0] ] = this._lightDiff.slice(0); |
61 | this._propValues[ this._propNames[1] ] = this._diffuseTexture.slice(0); | 60 | this._propValues[ this._propNames[1] ] = this._diffuseTexture.slice(0); |
62 | this._propValues[ this._propNames[2] ] = this._specularTexture.slice(0); | 61 | this._propValues[ this._propNames[2] ] = this._normalTexture.slice(0); |
63 | this._propValues[ this._propNames[3] ] = this._specularTexture.slice(0); | 62 | this._propValues[ this._propNames[3] ] = this._specularTexture.slice(0); |
64 | 63 | ||
65 | // TODO - shader techniques are not all named the same, i.e., FlatMaterial uses "colorMe" and BrickMaterial uses "default" | 64 | // TODO - shader techniques are not all named the same, i.e., FlatMaterial uses "colorMe" and BrickMaterial uses "default" |
@@ -87,16 +86,19 @@ function BumpMetalMaterial() | |||
87 | console.log( "invalid property to Bump Metal Material: " + prop + ", value: " + value ); | 86 | console.log( "invalid property to Bump Metal Material: " + prop + ", value: " + value ); |
88 | break; | 87 | break; |
89 | } | 88 | } |
90 | } | 89 | }; |
91 | 90 | ||
92 | /////////////////////////////////////////////////////////////////////// | 91 | /////////////////////////////////////////////////////////////////////// |
93 | // Methods | 92 | // Methods |
94 | /////////////////////////////////////////////////////////////////////// | 93 | /////////////////////////////////////////////////////////////////////// |
95 | // duplcate method requirde | 94 | // duplcate method requirde |
96 | this.dup = function() { return new BumpMetalMaterial(); } | 95 | this.dup = function() { return new BumpMetalMaterial(); }; |
97 | 96 | ||
98 | this.init = function() | 97 | this.init = function( world ) |
99 | { | 98 | { |
99 | // save the world | ||
100 | if (world) this.setWorld( world ); | ||
101 | |||
100 | // set up the shader | 102 | // set up the shader |
101 | this._shader = new jshader(); | 103 | this._shader = new jshader(); |
102 | this._shader.def = bumpMetalMaterialDef; | 104 | this._shader.def = bumpMetalMaterialDef; |
@@ -108,10 +110,37 @@ function BumpMetalMaterial() | |||
108 | this._materialNode.setShader(this._shader); | 110 | this._materialNode.setShader(this._shader); |
109 | 111 | ||
110 | // set some image maps | 112 | // set some image maps |
111 | this._materialNode.setDiffuseTexture( this.getDiffuseTexture() ); | 113 | this.updateTexture(1); |
112 | this._materialNode.setSpecTexture( this.getSpecularTexture() ); | 114 | this.updateTexture(2); |
113 | this._materialNode.setNormalTexture( this.getNormalTexture() ); | 115 | this.updateTexture(3); |
114 | } | 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 | }; | ||
115 | 144 | ||
116 | this.export = function() | 145 | this.export = function() |
117 | { | 146 | { |
@@ -122,13 +151,13 @@ function BumpMetalMaterial() | |||
122 | exportStr += "lightDiff: " + this.getLightDiff() + "\n"; | 151 | exportStr += "lightDiff: " + this.getLightDiff() + "\n"; |
123 | exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n"; | 152 | exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n"; |
124 | exportStr += "specularTexture: " + this.getSpecularTexture() + "\n"; | 153 | exportStr += "specularTexture: " + this.getSpecularTexture() + "\n"; |
125 | exportStr += "normalTexture: " + this.getNormalTexture() + "\n"; | 154 | exportStr += "normalMap: " + this.getNormalTexture() + "\n"; |
126 | 155 | ||
127 | // every material needs to terminate like this | 156 | // every material needs to terminate like this |
128 | exportStr += "endMaterial\n"; | 157 | exportStr += "endMaterial\n"; |
129 | 158 | ||
130 | return exportStr; | 159 | return exportStr; |
131 | } | 160 | }; |
132 | 161 | ||
133 | this.import = function( importStr ) | 162 | this.import = function( importStr ) |
134 | { | 163 | { |
@@ -143,12 +172,12 @@ function BumpMetalMaterial() | |||
143 | var lightDiff = eval( "[" + pu.nextValue( "lightDiff: " ) + "]" ), | 172 | var lightDiff = eval( "[" + pu.nextValue( "lightDiff: " ) + "]" ), |
144 | dt = pu.nextValue( "diffuseTexture: " ), | 173 | dt = pu.nextValue( "diffuseTexture: " ), |
145 | st = pu.nextValue( "specularTexture: " ), | 174 | st = pu.nextValue( "specularTexture: " ), |
146 | nt = pu.nextValue( "normalTexture: " ); | 175 | nt = pu.nextValue( "normalMap: " ); |
147 | 176 | ||
148 | this.setProperty( "lightDiff", lightDif); | 177 | this.setProperty( "lightDiff", lightDiff); |
149 | this.setProperty( "diffuseTexture", dt ); | 178 | this.setProperty( "diffuseTexture", dt ); |
150 | this.setProperty( "specularTexture", st ); | 179 | this.setProperty( "specularTexture", st ); |
151 | this.setProperty( "normalTexture", nt ); | 180 | this.setProperty( "normalMap", nt ); |
152 | 181 | ||
153 | var endKey = "endMaterial\n"; | 182 | var endKey = "endMaterial\n"; |
154 | var index = importStr.indexOf( endKey ); | 183 | var index = importStr.indexOf( endKey ); |
@@ -161,7 +190,7 @@ function BumpMetalMaterial() | |||
161 | } | 190 | } |
162 | 191 |