| Server IP : 210.245.233.93 / Your IP : 216.73.216.226 Web Server : Apache/2.2.15 (CentOS) System : Linux webserver2.onesolution.com.hk 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64 User : apache ( 48) PHP Version : 5.3.3 Disable Function : exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/hkosl.com/3dweb/src/renderers/webgl/ |
Upload File : |
/**
* @author Mugen87 / https://github.com/Mugen87
*/
import { WebGLLights } from './WebGLLights.js';
function WebGLRenderState() {
var lights = new WebGLLights();
var lightsArray = [];
var shadowsArray = [];
function init() {
lightsArray.length = 0;
shadowsArray.length = 0;
}
function pushLight( light ) {
lightsArray.push( light );
}
function pushShadow( shadowLight ) {
shadowsArray.push( shadowLight );
}
function setupLights( camera ) {
lights.setup( lightsArray, shadowsArray, camera );
}
var state = {
lightsArray: lightsArray,
shadowsArray: shadowsArray,
lights: lights
};
return {
init: init,
state: state,
setupLights: setupLights,
pushLight: pushLight,
pushShadow: pushShadow
};
}
function WebGLRenderStates() {
var renderStates = new WeakMap();
function onSceneDispose( event ) {
var scene = event.target;
scene.removeEventListener( 'dispose', onSceneDispose );
renderStates.delete( scene );
}
function get( scene, camera ) {
var renderState;
if ( renderStates.has( scene ) === false ) {
renderState = new WebGLRenderState();
renderStates.set( scene, new WeakMap() );
renderStates.get( scene ).set( camera, renderState );
scene.addEventListener( 'dispose', onSceneDispose );
} else {
if ( renderStates.get( scene ).has( camera ) === false ) {
renderState = new WebGLRenderState();
renderStates.get( scene ).set( camera, renderState );
} else {
renderState = renderStates.get( scene ).get( camera );
}
}
return renderState;
}
function dispose() {
renderStates = new WeakMap();
}
return {
get: get,
dispose: dispose
};
}
export { WebGLRenderStates };