aboutsummaryrefslogtreecommitdiff
path: root/js/lib/drawing/world.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/lib/drawing/world.js')
-rwxr-xr-xjs/lib/drawing/world.js407
1 files changed, 178 insertions, 229 deletions
diff --git a/js/lib/drawing/world.js b/js/lib/drawing/world.js
index 4ca738f4..eb06e59d 100755
--- a/js/lib/drawing/world.js
+++ b/js/lib/drawing/world.js
@@ -29,14 +29,20 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
29 } 29 }
30 30
31 this._canvas = canvas; 31 this._canvas = canvas;
32 if (this._useWebGL) { 32 if (this._useWebGL)
33 {
33 preserveDrawingBuffer = true; 34 preserveDrawingBuffer = true;
34 if(preserveDrawingBuffer) { 35 if(preserveDrawingBuffer)
36 {
35 this._glContext = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true}); 37 this._glContext = canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});
36 } else { 38 }
39 else
40 {
37 this._glContext = canvas.getContext("experimental-webgl"); 41 this._glContext = canvas.getContext("experimental-webgl");
38 } 42 }
39 } else { 43 }
44 else
45 {
40 this._2DContext = canvas.getContext( "2d" ); 46 this._2DContext = canvas.getContext( "2d" );
41 } 47 }
42 48
@@ -124,6 +130,7 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
124 130
125 // Flag to play/pause animation at authortime 131 // Flag to play/pause animation at authortime
126 this._previewAnimation = true; 132 this._previewAnimation = true;
133
127 //////////////////////////////////////////////////////////////////////////////////// 134 ////////////////////////////////////////////////////////////////////////////////////
128 // RDGE 135 // RDGE
129 // local variables 136 // local variables
@@ -148,46 +155,47 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
148 this.setCameraMat( camMat ); 155 this.setCameraMat( camMat );
149 156
150 // post-load processing of the scene 157 // post-load processing of the scene
151 this.init = function() { 158 this.init = function()
152 var ctx1 = g_Engine.ctxMan.handleToObject(this._canvas.rdgeCtxHandle), 159 {
153 ctx2 = g_Engine.getContext(); 160 var ctx1 = RDGE.globals.engine.ctxMan.handleToObject(this._canvas.rdgeCtxHandle),
161 ctx2 = RDGE.globals.engine.getContext();
154 if (ctx1 != ctx2) console.log( "***** different contexts *****" ); 162 if (ctx1 != ctx2) console.log( "***** different contexts *****" );
155 this.renderer = ctx1.renderer; 163 this.renderer = ctx1.renderer;
156 this.renderer._world = this; 164 this.renderer._world = this;
157 165
158 // create a camera, set its perspective, and then point it at the origin 166 // create a camera, set its perspective, and then point it at the origin
159 var cam = new camera(); 167 var cam = new RDGE.camera();
160 this._camera = cam; 168 this._camera = cam;
161 cam.setPerspective(this.getFOV(), this.getAspect(), this.getZNear(), this.getZFar()); 169 cam.setPerspective(this.getFOV(), this.getAspect(), this.getZNear(), this.getZFar());
162 cam.setLookAt([0, 0, this.getViewDistance()], [0, 0, 0], vec3.up()); 170 cam.setLookAt([0, 0, this.getViewDistance()], [0, 0, 0], RDGE.vec3.up());
163 171
164 // make this camera the active camera 172 // make this camera the active camera
165 this.renderer.cameraManager().setActiveCamera(cam); 173 this.renderer.cameraManager().setActiveCamera(cam);
166 174
167 // change clear color 175 // change clear color
168 //this.renderer.setClearFlags(g_Engine.getContext().DEPTH_BUFFER_BIT); 176 //this.renderer.setClearFlags(RDGE.globals.engine.getContext().DEPTH_BUFFER_BIT);
169 this.renderer.setClearColor([0.0, 0.0, 0.0, 0.0]); 177 this.renderer.setClearColor([0.0, 0.0, 0.0, 0.0]);
170 //this.renderer.NinjaWorld = this; 178 //this.renderer.NinjaWorld = this;
171 179
172 // create an empty scene graph 180 // create an empty scene graph
173 this.myScene = new SceneGraph(); 181 this.myScene = new RDGE.SceneGraph();
174 182
175 // create some lights 183 // create some lights
176 // light 1 184 // light 1
177 this.light = createLightNode("myLight"); 185 this.light = RDGE.createLightNode("myLight");
178 this.light.setPosition([0,0,1.2]); 186 this.light.setPosition([0,0,1.2]);
179 this.light.setDiffuseColor([0.75,0.9,1.0,1.0]); 187 this.light.setDiffuseColor([0.75,0.9,1.0,1.0]);
180 188
181 // light 2 189 // light 2
182 this.light2 = createLightNode("myLight2"); 190 this.light2 = RDGE.createLightNode("myLight2");
183 this.light2.setPosition([-0.5,0,1.2]); 191 this.light2.setPosition([-0.5,0,1.2]);
184 this.light2.setDiffuseColor([1.0,0.9,0.75,1.0]); 192 this.light2.setDiffuseColor([1.0,0.9,0.75,1.0]);
185 193
186 // create a light transform 194 // create a light transform
187 var lightTr = createTransformNode("lightTr"); 195 var lightTr = RDGE.createTransformNode("lightTr");
188 196
189 // create and attach a material - materials hold the light data 197 // create and attach a material - materials hold the light data
190 lightTr.attachMaterial(createMaterialNode("lights")); 198 lightTr.attachMaterial(RDGE.createMaterialNode("lights"));
191 199
192 // enable light channels 1, 2 - channel 0 is used by the default shader 200 // enable light channels 1, 2 - channel 0 is used by the default shader
193 lightTr.materialNode.enableLightChannel(1, this.light); 201 lightTr.materialNode.enableLightChannel(1, this.light);
@@ -200,21 +208,23 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
200 this.myScene.addNode(lightTr); 208 this.myScene.addNode(lightTr);
201 209
202 // Add the scene to the engine - necessary if you want the engine to draw for you 210 // Add the scene to the engine - necessary if you want the engine to draw for you
203 //g_Engine.AddScene("myScene" + this._canvas.id, this.myScene); 211 //RDGE.globals.engine.AddScene("myScene" + this._canvas.id, this.myScene);
204 var name = this._canvas.getAttribute( "data-RDGE-id" ); 212 var name = this._canvas.getAttribute( "data-RDGE-id" );
205 g_Engine.AddScene("myScene" + name, this.myScene); 213 RDGE.globals.engine.AddScene("myScene" + name, this.myScene);
206 }; 214 };
207 215
208 // main code for handling user interaction and updating the scene 216 // main code for handling user interaction and updating the scene
209 this.update = function(dt) { 217 this.update = function(dt)
218 {
210 if (!dt) dt = 0.2; 219 if (!dt) dt = 0.2;
211 220
212 dt = 0.01; // use our own internal throttle 221 dt = 0.01; // use our own internal throttle
213 this.elapsed += dt; 222 this.elapsed += dt;
214 223
215 if (this._useWebGL) { 224 if (this._useWebGL)
225 {
216 // changed the global position uniform of light 0, another way to change behavior of a light 226 // changed the global position uniform of light 0, another way to change behavior of a light
217 rdgeGlobalParameters.u_light0Pos.set( [5*Math.cos(this.elapsed), 5*Math.sin(this.elapsed), 20]); 227 RDGE.rdgeGlobalParameters.u_light0Pos.set([5 * Math.cos(this.elapsed), 5 * Math.sin(this.elapsed), 20]);
218 228
219 // orbit the light nodes around the boxes 229 // orbit the light nodes around the boxes
220 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)]); 230 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)]);
@@ -229,36 +239,48 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
229 }; 239 };
230 240
231 // defining the draw function to control how the scene is rendered 241 // defining the draw function to control how the scene is rendered
232 this.draw = function() { 242 this.draw = function()
233 if (this._useWebGL) { 243 {
234 g_Engine.setContext( this._canvas.rdgeid ); 244 if (this._useWebGL)
235 var ctx = g_Engine.getContext(); 245 {
246 RDGE.globals.engine.setContext( this._canvas.rdgeid );
247 var ctx = RDGE.globals.engine.getContext();
236 var renderer = ctx.renderer; 248 var renderer = ctx.renderer;
237 if (renderer.unloadedTextureCount <= 0) { 249 if (renderer.unloadedTextureCount <= 0)
250 {
238 renderer.disableCulling(); 251 renderer.disableCulling();
239 renderer._clear(); 252 renderer._clear();
240 this.myScene.render(); 253 this.myScene.render();
241 254
242 if (this._firstRender) { 255 if (this._firstRender)
256 {
243 this._notifier.sendNotification( this._notifier.FIRST_RENDER ); 257 this._notifier.sendNotification( this._notifier.FIRST_RENDER );
244 if (this._canvas.task) { 258 if (this._canvas.task)
259 {
245 this._firstRender = false; 260 this._firstRender = false;
246 261
247 if (!this.hasAnimatedMaterials() || !this._previewAnimation) { 262 if (!this.hasAnimatedMaterials() || !this._previewAnimation)
263 {
248 this._canvas.task.stop(); 264 this._canvas.task.stop();
249 //this._renderCount = 10; 265 //this._renderCount = 10;
250 } 266 }
251 } 267 }
252 } else if (this._renderCount >= 0) { 268 }
253 if (this._canvas.task) { 269 else if (this._renderCount >= 0)
270 {
271 if (this._canvas.task)
272 {
254 this._renderCount--; 273 this._renderCount--;
255 if (this._renderCount <= 0) { 274 if (this._renderCount <= 0)
275 {
256 this._canvas.task.stop(); 276 this._canvas.task.stop();
257 } 277 }
258 } 278 }
259 } 279 }
260 } 280 }
261 } else { 281 }
282 else
283 {
262 this.render(); 284 this.render();
263 } 285 }
264 }; 286 };
@@ -272,8 +294,10 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
272// console.log( "GLWorld.onLoadState" ); 294// console.log( "GLWorld.onLoadState" );
273 }; 295 };
274 296
275 this.textureToLoad = function( texture ) { 297 this.textureToLoad = function( texture )
276 if (!texture.previouslyReferenced) { 298 {
299 if (!texture.previouslyReferenced)
300 {
277 var name = texture.lookUpName; 301 var name = texture.lookUpName;
278 texture._world = this; 302 texture._world = this;
279 texture.callback = this.textureMapLoaded; 303 texture.callback = this.textureMapLoaded;
@@ -285,7 +309,8 @@ var World = function GLWorld( canvas, use3D, preserveDrawingBuffer ) {
285 } 309