new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
132 lines
3.1 KiB
JavaScript
132 lines
3.1 KiB
JavaScript
/*!
|
|
* bkcore.threejs.RenderManager helps handling multiple scenes, cameras and render loops.
|
|
*
|
|
* @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
|
|
* @license MIT
|
|
*
|
|
* Initialize the a RenderManager by passing a Renderer object:
|
|
* var renderManager = new bkcore.threejs.RenderManager(new THREE.WebGLRenderer());
|
|
*
|
|
* A render setup structure :
|
|
* {
|
|
* id <String> : render setup ID,
|
|
* scene <THREE.Scene> : main scene,
|
|
* camera <THREE.Camera> : main camera,
|
|
* render <Function> : render loop called when render setup is active (current),
|
|
* objects <Dic> : object references accessible in the render loop via this.objects
|
|
* }
|
|
*
|
|
* The render method's context will be the render setup's object, so in your render loop:
|
|
* function(delta, renderer)
|
|
* {
|
|
* this.scene;
|
|
* this.camera;
|
|
* this.id;
|
|
* this.objects;
|
|
* renderer.render(...);
|
|
* }
|
|
*
|
|
* Use the "objects" attribute to store useful references and variables like time, geometries, materials, etc.
|
|
* Example:
|
|
* renderManager.add('mySetup', scene, camera, function(delta, renderer)
|
|
* {
|
|
* this.objects.timer += delta;
|
|
* this.objects.torus.rotation.z = Math.PI * Math.cos(this.objects.timer);
|
|
* renderer.render(this.scene, this.camera);
|
|
* },
|
|
* {
|
|
* timer: 0,
|
|
* torus: torusMesh
|
|
* });
|
|
*/
|
|
|
|
var bkcore = bkcore || {};
|
|
bkcore.threejs = bkcore.threejs || {};
|
|
|
|
(function(w){
|
|
var perfNow;
|
|
var perfNowNames = ['now', 'webkitNow', 'msNow', 'mozNow'];
|
|
if(!!w['performance']) for(var i = 0; i < perfNowNames.length; ++i)
|
|
{
|
|
var n = perfNowNames[i];
|
|
if(!!w['performance'][n])
|
|
{
|
|
perfNow = function(){return w['performance'][n]()};
|
|
break;
|
|
}
|
|
}
|
|
if(!perfNow)
|
|
{
|
|
perfNow = Date.now;
|
|
}
|
|
w.perfNow = perfNow;
|
|
})(window);
|
|
|
|
bkcore.threejs.RenderManager = function(renderer)
|
|
{
|
|
this.renderer = renderer;
|
|
this.time = window.perfNow();
|
|
|
|
this.renders = {};
|
|
this.current = {};
|
|
this.size = 0;
|
|
|
|
this.defaultRenderMethod = function(delta, renderer)
|
|
{
|
|
renderer.render(this.scene, this.camera);
|
|
};
|
|
};
|
|
|
|
bkcore.threejs.RenderManager.prototype.add = function(id, scene, camera, render, objects)
|
|
{
|
|
render = render || this.defaultRenderMethod;
|
|
objects = objects || {};
|
|
|
|
this.renders[id] = {
|
|
id: id,
|
|
scene: scene,
|
|
camera: camera,
|
|
render: render,
|
|
objects: objects
|
|
};
|
|
|
|
if(this.size == 0) this.current = this.renders[id];
|
|
|
|
this.size++;
|
|
};
|
|
|
|
bkcore.threejs.RenderManager.prototype.get = function(id)
|
|
{
|
|
return this.renders[id];
|
|
};
|
|
|
|
bkcore.threejs.RenderManager.prototype.remove = function(id)
|
|
{
|
|
if(id in this.renders)
|
|
{
|
|
delete this.renders[id];
|
|
this.size--;
|
|
}
|
|
};
|
|
|
|
bkcore.threejs.RenderManager.prototype.renderCurrent = function()
|
|
{
|
|
if(this.current && this.current.render)
|
|
{
|
|
var now = window.perfNow();
|
|
var delta = now - this.time;
|
|
this.time = now;
|
|
|
|
this.current.render.call(this.current, delta, this.renderer);
|
|
}
|
|
else console.warn('RenderManager: No current render defined.');
|
|
};
|
|
|
|
bkcore.threejs.RenderManager.prototype.setCurrent = function(id)
|
|
{
|
|
if(id in this.renders)
|
|
{
|
|
this.current = this.renders[id];
|
|
}
|
|
else console.warn('RenderManager: Render "'+id+'" not found.');
|
|
}; |