aboutsummaryrefslogtreecommitdiff
path: root/assets/canvas-runtime.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/canvas-runtime.js')
-rw-r--r--assets/canvas-runtime.js243
1 files changed, 215 insertions, 28 deletions
diff --git a/assets/canvas-runtime.js b/assets/canvas-runtime.js
index 655e52fa..fd823f35 100644
--- a/assets/canvas-runtime.js
+++ b/assets/canvas-runtime.js
@@ -4,6 +4,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
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
7
8
7/////////////////////////////////////////////////////////////////////// 9///////////////////////////////////////////////////////////////////////
8//Loading webGL/canvas data 10//Loading webGL/canvas data
9function initWebGl (rootElement, directory) { 11function initWebGl (rootElement, directory) {
@@ -27,7 +29,8 @@ function CanvasDataManager()
27{ 29{
28 this.loadGLData = function(root, valueArray, assetPath ) 30 this.loadGLData = function(root, valueArray, assetPath )
29 { 31 {
30 this._assetPath = assetPath.slice(); 32 if (assetPath)
33 this._assetPath = assetPath.slice();
31 34
32 var value = valueArray; 35 var value = valueArray;
33 var nWorlds = value.length; 36 var nWorlds = value.length;
@@ -118,17 +121,22 @@ function GLRuntime( canvas, importStr, assetPath )
118 this._zFar = 100.0; 121 this._zFar = 100.0;
119 this._viewDist = 5.0; 122 this._viewDist = 5.0;
120 123
124 this.elapsed = 0;
125
121 this._aspect = canvas.width/canvas.height; 126 this._aspect = canvas.width/canvas.height;
122 127
123 this._geomRoot; 128 this._geomRoot = null;
124 129
125 // all "live" materials 130 // all "live" materials
126 this._materials = []; 131 this._materials = [];
127 132
128 // provide the mapping for the asset directory 133 // provide the mapping for the asset directory
129 this._assetPath = assetPath.slice(); 134 if (assetPath)
130 if (this._assetPath[this._assetPath.length-1] != '/') 135 {
131 this._assetPath += '/'; 136 this._assetPath = assetPath.slice();
137 if (this._assetPath[this._assetPath.length-1] != '/')
138 this._assetPath += '/';
139 }
132 140
133 /////////////////////////////////////////////////////////////////////// 141 ///////////////////////////////////////////////////////////////////////
134 // accessors 142 // accessors
@@ -166,6 +174,7 @@ function GLRuntime( canvas, importStr, assetPath )
166 this.importObjects( importStr ); 174 this.importObjects( importStr );
167 this.linkMaterials( this._geomRoot ); 175 this.linkMaterials( this._geomRoot );
168 this.initMaterials(); 176 this.initMaterials();
177 this.linkLights();
169 } 178 }
170 else 179 else
171 { 180 {
@@ -221,8 +230,8 @@ function GLRuntime( canvas, importStr, assetPath )
221 rdgeGlobalParameters.u_light0Pos.set( [5*Math.cos(this.elapsed), 5*Math.sin(this.elapsed), 20]); 230 rdgeGlobalParameters.u_light0Pos.set( [5*Math.cos(this.elapsed), 5*Math.sin(this.elapsed), 20]);
222 231
223 // orbit the light nodes around the boxes 232 // orbit the light nodes around the boxes
224 //this.light.setPosition([1.2*Math.cos(this.elapsed*2.0), 1.2*Math.sin(this.elapsed*2.0), 1.2*Math.cos(this.elapsed*2.0)]); 233 if (this.light ) this.light.setPosition([1.2*Math.cos(this.elapsed*2.0), 1.2*Math.sin(this.elapsed*2.0), 1.2*Math.cos(this.elapsed*2.0)]);
225 //this.light2.setPosition([-1.2*Math.cos(this.elapsed*2.0), 1.2*Math.sin(this.elapsed*2.0), -1.2*Math.cos(this.elapsed)]); 234 if (this.light2) this.light2.setPosition([-1.2*Math.cos(this.elapsed*2.0), 1.2*Math.sin(this.elapsed*2.0), -1.2*Math.cos(this.elapsed)]);
226 235
227 this.updateMaterials(); 236 this.updateMaterials();
228 237
@@ -344,6 +353,16 @@ function GLRuntime( canvas, importStr, assetPath )
344 parent.addChild( obj ); 353 parent.addChild( obj );
345 } 354 }
346 355
356 this.linkLights = function()
357 {
358 var matNode = this.findMaterialNode( "lights", this.myScene.scene );
359 if (matNode)
360 {
361 this.light = matNode.lightChannel[1];
362 this.light2 = matNode.lightChannel[2];
363 }
364 }
365
347 this.linkMaterials = function( obj ) 366 this.linkMaterials = function( obj )
348 { 367 {
349 if (!obj) return; 368 if (!obj) return;
@@ -377,6 +396,7 @@ function GLRuntime( canvas, importStr, assetPath )
377 396
378 this.remapAssetFolder = function( url ) 397 this.remapAssetFolder = function( url )
379 { 398 {
399 /*
380 var searchStr = "assets/"; 400 var searchStr = "assets/";
381 var index = url.indexOf( searchStr ); 401 var index = url.indexOf( searchStr );
382 var rtnPath = url; 402 var rtnPath = url;
@@ -386,6 +406,8 @@ function GLRuntime( canvas, importStr, assetPath )
386 rtnPath = this._assetPath + rtnPath; 406 rtnPath = this._assetPath + rtnPath;
387 } 407 }
388 return rtnPath; 408 return rtnPath;
409 */
410 return url;
389 } 411 }
390 412
391 this.findMaterialNode = function( nodeName, node ) 413 this.findMaterialNode = function( nodeName, node )
@@ -482,20 +504,7 @@ function RuntimeGeomObj()
482 504
483 /////////////////////////////////////////////////////////////////////// 505 ///////////////////////////////////////////////////////////////////////
484 // Methods 506 // Methods
485 /////////////////////////////////////////////////////////////////////// 507 ///////////////////////////////////////////////////////////////////////
486 this.makeStrokeMaterial = function()
487 {
488 }
489
490 this.makeFillMaterial = function()
491 {
492 }
493
494
495 this.render = function()
496 {
497 }
498
499 this.addChild = function( child ) 508 this.addChild = function( child )
500 { 509 {
501 if (!this._children) this._children = []; 510 if (!this._children) this._children = [];
@@ -551,9 +560,10 @@ function RuntimeGeomObj()
551 this._materials.push( mat ); 560 this._materials.push( mat );
552 } 561 }
553 562
554 var endIndex = importStr.indexOf( "endMaterial\n" ); 563 var endKey = "endMaterial\n";
564 var endIndex = importStr.indexOf( endKey );
555 if (endIndex < 0) break; 565 if (endIndex < 0) break;
556 importStr = importStr.substr( endIndex ); 566 importStr = importStr.substr( endIndex + endKey.length );
557 } 567 }
558 } 568 }
559 569
@@ -1080,7 +1090,7 @@ function RuntimeMaterial( world )
1080 /////////////////////////////////////////////////////////////////////// 1090 ///////////////////////////////////////////////////////////////////////
1081 // Methods 1091 // Methods
1082 /////////////////////////////////////////////////////////////////////// 1092 ///////////////////////////////////////////////////////////////////////
1083 this.init = function() 1093 this.init = function( world )
1084 { 1094 {
1085 } 1095 }
1086 1096
@@ -1127,7 +1137,7 @@ function RuntimeFlatMaterial()
1127 }; 1137 };
1128 1138
1129 1139
1130 this.init = function() 1140 this.init = function( world )
1131 { 1141 {
1132 if (this._shader) 1142 if (this._shader)
1133 { 1143 {
@@ -1302,7 +1312,7 @@ function RuntimeBumpMetalMaterial()
1302 this._normalTexture = this.getPropertyFromString( "normalMap: ", importStr ); 1312 this._normalTexture = this.getPropertyFromString( "normalMap: ", importStr );
1303 } 1313 }
1304 1314
1305 this.init = function() 1315 this.init = function( world )
1306 { 1316 {
1307 var material = this._materialNode; 1317 var material = this._materialNode;
1308 if (material) 1318 if (material)
@@ -1322,7 +1332,6 @@ function RuntimeBumpMetalMaterial()
1322 this._diffuseTexture = world.remapAssetFolder( this._diffuseTexture ); 1332 this._diffuseTexture = world.remapAssetFolder( this._diffuseTexture );
1323 tex = renderer.getTextureByName(this._diffuseTexture, wrap, mips ); 1333 tex = renderer.getTextureByName(this._diffuseTexture, wrap, mips );
1324 if (tex) technique.u_colMap.set( tex ); 1334 if (tex) technique.u_colMap.set( tex );
1325
1326 } 1335 }
1327 if (this._normalTexture) 1336 if (this._normalTexture)
1328 { 1337 {
@@ -1344,6 +1353,184 @@ function RuntimeBumpMetalMaterial()
1344 1353
1345function RuntimeUberMaterial() 1354function RuntimeUberMaterial()
1346{ 1355{
1356 // inherit the members of RuntimeMaterial
1357 this.inheritedFrom = RuntimeMaterial;
1358 this.inheritedFrom();
1359
1360 this._MAX_LIGHTS = 4;
1361
1362 this.init = function( )
1363 {
1364 var material = this._materialNode;
1365 if (material)
1366 {
1367 var technique = material.shaderProgram.defaultTechnique;
1368 var renderer = g_Engine.getContext().renderer;
1369 if (renderer && technique)
1370 {
1371 if (this._shader && this._shader.defaultTechnique)
1372 {
1373 if (this._ambientColor && technique.u_ambientColor) technique.u_ambientColor.set(this._ambientColor );
1374 if (this._diffuseColor && technique.u_diffuseColor ) technique.u_diffuseColor.set(this._diffuseColor );
1375 if (this._specularColor && technique.u_specularColor) technique.u_specularColor.set(this._specularColor);
1376 if (this._specularPower && technique.u_specularPower) technique.u_specularPower.set([this._specularPower]);
1377
1378 if (this._lights)
1379 {
1380 for(var i = 0; i < 4; ++i)
1381 {
1382 var light = this._lights[i];
1383 if (light)
1384 {
1385 if(light.type == 'directional')
1386 {
1387 technique['u_light'+i+'Dir'].set( light.direction || [ 0, 0, 1 ]);