aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/runtime
diff options
context:
space:
mode:
authorhwc4872012-02-29 15:23:28 -0800
committerhwc4872012-02-29 15:23:28 -0800
commit07c48708a99b94a220c043ad5951a331bbd4fc2d (patch)
tree6fdf01f3d0fca0cf5835246bed21d6ae1816ce88 /js/helper-classes/RDGE/runtime
parent347fc28227d822e9fea3fa823fae79cf14ea041c (diff)
downloadninja-07c48708a99b94a220c043ad5951a331bbd4fc2d.tar.gz
WebGL file I/O
Diffstat (limited to 'js/helper-classes/RDGE/runtime')
-rw-r--r--js/helper-classes/RDGE/runtime/CanvasDataManager.js10
-rw-r--r--js/helper-classes/RDGE/runtime/GLRuntime.js87
2 files changed, 62 insertions, 35 deletions
diff --git a/js/helper-classes/RDGE/runtime/CanvasDataManager.js b/js/helper-classes/RDGE/runtime/CanvasDataManager.js
index 4985fc9a..46d944a1 100644
--- a/js/helper-classes/RDGE/runtime/CanvasDataManager.js
+++ b/js/helper-classes/RDGE/runtime/CanvasDataManager.js
@@ -29,9 +29,10 @@ function CanvasDataManager()
29 var canvas = this.findCanvasWithID( id, root ); 29 var canvas = this.findCanvasWithID( id, root );
30 if (canvas) 30 if (canvas)
31 { 31 {
32 var loadForAuthoring = true; 32 //var loadForAuthoring = true;
33 var index = importStr.indexOf( "scenedata: " ); 33 var index = importStr.indexOf( "scenedata: " );
34 if (index >= 0) loadForAuthoring = false; 34 //if (index >= 0) loadForAuthoring = false;
35 var loadForAuthoring = false;
35 36
36 if (loadForAuthoring) 37 if (loadForAuthoring)
37 { 38 {
@@ -64,7 +65,7 @@ function CanvasDataManager()
64 { 65 {
65 if (elt.elementModel && elt.elementModel.shapeModel && elt.elementModel.shapeModel.GLWorld) 66 if (elt.elementModel && elt.elementModel.shapeModel && elt.elementModel.shapeModel.GLWorld)
66 { 67 {
67 var data = elt.elementModel.shapeModel.GLWorld.export(); 68 var data = elt.elementModel.shapeModel.GLWorld.export( true );
68 dataArray.push( data ); 69 dataArray.push( data );
69 } 70 }
70 71
@@ -90,7 +91,8 @@ function CanvasDataManager()
90 for (var i=0; i<nKids; i++) 91 for (var i=0; i<nKids; i++)
91 { 92 {
92 var child = elt.children[i]; 93 var child = elt.children[i];
93 this.findCanvasWithID( id, child ); 94 var foundElt = this.findCanvasWithID( id, child );
95 if (foundElt) return foundElt;
94 } 96 }
95 } 97 }
96 } 98 }
diff --git a/js/helper-classes/RDGE/runtime/GLRuntime.js b/js/helper-classes/RDGE/runtime/GLRuntime.js
index 5c99be02..33186174 100644
--- a/js/helper-classes/RDGE/runtime/GLRuntime.js
+++ b/js/helper-classes/RDGE/runtime/GLRuntime.js
@@ -25,14 +25,24 @@ function GLRuntime( canvas, importStr )
25 this._rootNode = null; 25 this._rootNode = null;
26 26
27 this._firstRender = true; 27 this._firstRender = true;
28 this._initialized = false;
29
30 // view parameters
31 this._fov = 45.0;
32 this._zNear = 0.1;
33 this._zFar = 100.0;
34 this._viewDist = 5.0;
35
36 this._aspect = canvas.width/canvas.height;
28 37
29 /////////////////////////////////////////////////////////////////////// 38 ///////////////////////////////////////////////////////////////////////
30 // initialization code 39 // accessors
31 /////////////////////////////////////////////////////////////////////// 40 ///////////////////////////////////////////////////////////////////////
32 var id = canvas.getAttribute( "data-RDGE-id" ); 41 this.getZNear = function() { return this._zNear; }
33 canvas.rdgeid = id; 42 this.getZFar = function() { return this._zFar; }
34 g_Engine.registerCanvas(canvas, this); 43 this.getFOV = function() { return this._fov; }
35 RDGEStart( canvas ); 44 this.getAspect = function() { return this._aspect; }
45 this.getViewDistance = function() { return this._viewDist; }
36 46
37 this.loadScene = function() 47 this.loadScene = function()
38 { 48 {
@@ -72,8 +82,7 @@ function GLRuntime( canvas, importStr )
72 82
73 // create an empty scene graph 83 // create an empty scene graph
74 this.myScene = new SceneGraph(); 84 this.myScene = new SceneGraph();
75 this.loadScene(); 85
76
77 /* 86 /*
78 // create some lights 87 // create some lights
79 // light 1 88 // light 1
@@ -104,54 +113,70 @@ function GLRuntime( canvas, importStr )
104 */ 113 */
105 114
106 // load the scene graph data 115 // load the scene graph data
116 this.loadScene();
107 117
108 // Add the scene to the engine - necessary if you want the engine to draw for you 118 // Add the scene to the engine - necessary if you want the engine to draw for you
109 var name = "myScene" + this._canvas.getAttribute( "data-RDGE-id" ); 119 //var name = "myScene" + this._canvas.getAttribute( "data-RDGE-id" );
110 g_Engine.AddScene(name, this.myScene); 120 //g_Engine.AddScene(name, this.myScene);
121
122 this._initialized = true;
111 } 123 }
112 124
113 // main code for handling user interaction and updating the scene 125 // main code for handling user interaction and updating the scene
114 this.update = function(dt) 126 this.update = function(dt)
115 { 127 {
116 if (!dt) dt = 0.2; 128 if (this._initialized)
129 {
130 if (!dt) dt = 0.2;
117 131
118 dt = 0.01; // use our own internal throttle 132 dt = 0.01; // use our own internal throttle
119 this.elapsed += dt; 133 this.elapsed += dt;
120 134
121 // changed the global position uniform of light 0, another way to change behavior of a light 135 // changed the global position uniform of light 0, another way to change behavior of a light
122 rdgeGlobalParameters.u_light0Pos.set( [5*Math.cos(this.elapsed), 5*Math.sin(this.elapsed), 20]); 136 //rdgeGlobalParameters.u_light0Pos.set( [5*Math.cos(this.elapsed), 5*Math.sin(this.elapsed), 20]);
123 137
124 // orbit the light nodes around the boxes 138 // orbit the light nodes around the boxes
125 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)]); 139 //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)]);
126 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)]); 140 //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)]);
127 141
128 // now update all the nodes in the scene 142 // now update all the nodes in the scene
129 this.myScene.update(dt); 143 this.myScene.update(dt);
144 }
130 } 145 }
131 146
132 // defining the draw function to control how the scene is rendered 147 // defining the draw function to control how the scene is rendered
133 this.draw = function() 148 this.draw = function()
134 { 149 {
135 g_Engine.setContext( this._canvas.rdgeid ); 150 if (this._initialized)
136
137 var ctx = g_Engine.getContext();
138 var renderer = ctx.renderer;
139 if (renderer.unloadedTextureCount <= 0)
140 { 151 {
141 renderer.disableCulling(); 152 g_Engine.setContext( this._canvas.rdgeid );
142 renderer._clear();
143 this.myScene.render();
144 153
145 if (this._firstRender) 154 var ctx = g_Engine.getContext();
155 var renderer = ctx.renderer;
156 if (renderer.unloadedTextureCount <= 0)
146 { 157 {
147 if (this._canvas.task) 158 renderer.disableCulling();
159 renderer._clear();
160 this.myScene.render();
161
162 if (this._firstRender)
148 { 163 {
149 this._firstRender = false; 164 if (this._canvas.task)
150 this._canvas.task.stop(); 165 {
166 this._firstRender = false;
167 //this._canvas.task.stop();
168 }
151 } 169 }
152 } 170 }
153 } 171 }
154 } 172 }
173
174 // start RDGE
175 var id = canvas.getAttribute( "data-RDGE-id" );
176 canvas.rdgeid = id;
177 g_Engine.registerCanvas(canvas, this);
178 RDGEStart( canvas );
179
155} 180}
156 181
157 182