aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/runtime/GLRuntime.js
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/GLRuntime.js
parent347fc28227d822e9fea3fa823fae79cf14ea041c (diff)
downloadninja-07c48708a99b94a220c043ad5951a331bbd4fc2d.tar.gz
WebGL file I/O
Diffstat (limited to 'js/helper-classes/RDGE/runtime/GLRuntime.js')
-rw-r--r--js/helper-classes/RDGE/runtime/GLRuntime.js87
1 files changed, 56 insertions, 31 deletions
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