diff options
Diffstat (limited to 'js/lib/rdge/materials/bump-metal-material.js')
-rwxr-xr-x | js/lib/rdge/materials/bump-metal-material.js | 66 |
1 files changed, 27 insertions, 39 deletions
diff --git a/js/lib/rdge/materials/bump-metal-material.js b/js/lib/rdge/materials/bump-metal-material.js index fa6f5300..27d5793c 100755 --- a/js/lib/rdge/materials/bump-metal-material.js +++ b/js/lib/rdge/materials/bump-metal-material.js | |||
@@ -107,16 +107,18 @@ var BumpMetalMaterial = function BumpMetalMaterial() { | |||
107 | this.init = function( world ) | 107 | this.init = function( world ) |
108 | { | 108 | { |
109 | // save the world | 109 | // save the world |
110 | if (world) this.setWorld( world ); | 110 | if (world) { |
111 | this.setWorld( world ); | ||
112 | } | ||
111 | 113 | ||
112 | // set up the shader | 114 | // set up the shader |
113 | this._shader = new jshader(); | 115 | this._shader = new RDGE.jshader(); |
114 | this._shader.def = bumpMetalMaterialDef; | 116 | this._shader.def = bumpMetalMaterialDef; |
115 | this._shader.init(); | 117 | this._shader.init(); |
116 | this._shader['default'].u_light0Diff.set( this.getLightDiff() ); | 118 | this._shader['default'].u_light0Diff.set( this.getLightDiff() ); |
117 | 119 | ||
118 | // set up the material node | 120 | // set up the material node |
119 | this._materialNode = createMaterialNode( this.getShaderName() + "_" + world.generateUniqueNodeID() ); | 121 | this._materialNode = RDGE.createMaterialNode( this.getShaderName() + "_" + world.generateUniqueNodeID() ); |
120 | this._materialNode.setShader(this._shader); | 122 | this._materialNode.setShader(this._shader); |
121 | 123 | ||
122 | // set some image maps | 124 | // set some image maps |
@@ -131,7 +133,7 @@ var BumpMetalMaterial = function BumpMetalMaterial() { | |||
131 | if (material) | 133 | if (material) |
132 | { | 134 | { |
133 | var technique = material.shaderProgram['default']; | 135 | var technique = material.shaderProgram['default']; |
134 | var renderer = g_Engine.getContext().renderer; | 136 | var renderer = RDGE.globals.engine.getContext().renderer; |
135 | if (renderer && technique) | 137 | if (renderer && technique) |
136 | { | 138 | { |
137 | var texMapName = this._propValues[this._propNames[index]]; | 139 | var texMapName = this._propValues[this._propNames[index]]; |
@@ -152,58 +154,44 @@ var BumpMetalMaterial = function BumpMetalMaterial() { | |||
152 | } | 154 | } |
153 | }; | 155 | }; |
154 | 156 | ||
155 | this.export = function() | 157 | this.exportJSON = function() |
156 | { | 158 | { |
157 | // every material needs the base type and instance name | 159 | var jObj = |
158 | var exportStr = "material: " + this.getShaderName() + "\n"; | 160 | { |
159 | exportStr += "name: " + this.getName() + "\n"; | 161 | 'material' : this.getShaderName(), |
160 | 162 | 'name' : this.getName(), | |
161 | var world = this.getWorld(); | 163 | 'lightDiff' : this.getLightDiff(), |
162 | if (!world) | 164 | 'diffuseTexture' : this.getDiffuseTexture(), |
163 | throw new Error( "no world in material.export, " + this.getName() ); | 165 | 'specularTexture' : this.getSpecularTexture(), |
164 | 166 | 'normalMap' : this.getNormalTexture() | |
165 | exportStr += "lightDiff: " + this.getLightDiff() + "\n"; | 167 | }; |
166 | exportStr += "diffuseTexture: " + this.getDiffuseTexture() + "\n"; | 168 | |
167 | exportStr += "specularTexture: " + this.getSpecularTexture() + "\n"; | 169 | return jObj; |
168 | exportStr += "normalMap: " + this.getNormalTexture() + "\n"; | ||
169 | |||
170 | // every material needs to terminate like this | ||
171 | exportStr += "endMaterial\n"; | ||
172 | |||
173 | return exportStr; | ||
174 | }; | 170 | }; |
175 | 171 | ||
176 | this.import = function( importStr ) | 172 | this.importJSON = function( jObj ) |
177 | { | 173 | { |
178 | var pu = new MaterialParser( importStr ); | 174 | if (this.getShaderName() != jObj.material) throw new Error( "ill-formed material" ); |
179 | var material = pu.nextValue( "material: " ); | 175 | this.setName( jObj.name ); |
180 | if (material != this.getShaderName()) throw new Error( "ill-formed material" ); | ||
181 | this.setName( pu.nextValue( "name: ") ); | ||
182 | 176 | ||
183 | var rtnStr; | ||
184 | try | 177 | try |
185 | { | 178 | { |
186 | var lightDiff = eval( "[" + pu.nextValue( "lightDiff: " ) + "]" ), | 179 | var lightDiff = jObj.lightDiff, |
187 | dt = pu.nextValue( "diffuseTexture: " ), | 180 | dt = jObj.diffuseTexture, |
188 | st = pu.nextValue( "specularTexture: " ), | 181 | st = jObj.specularTexture, |
189 | nt = pu.nextValue( "normalMap: " ); | 182 | nt = jObj.normalMap; |
190 | 183 | ||
191 | this.setProperty( "lightDiff", lightDiff); | 184 | this.setProperty( "lightDiff", lightDiff); |
192 | this.setProperty( "diffuseTexture", dt ); | 185 | this.setProperty( "diffuseTexture", dt ); |
193 | this.setProperty( "specularTexture", st ); | 186 | this.setProperty( "specularTexture", st ); |
194 | this.setProperty( "normalMap", nt ); | 187 | this.setProperty( "normalMap", nt ); |
195 | |||
196 | var endKey = "endMaterial\n"; | ||
197 | var index = importStr.indexOf( endKey ); | ||
198 | index += endKey.length; | ||
199 | rtnStr = importStr.substr( index ); | ||
200 | } | 188 | } |
201 | catch (e) | 189 | catch (e) |
202 | { | 190 | { |
203 | throw new Error( "could not import material: " + importStr ); | 191 | throw new Error( "could not import BumpMetal material: " + jObj ); |
204 | } | 192 | } |
205 | 193 | ||
206 | return rtnStr; | 194 | return; |
207 | }; | 195 | }; |
208 | }; | 196 | }; |
209 | 197 | ||