Spaces:
Running
Running
| /** | |
| * @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 = {}; | |
| function onSceneDispose( event ) { | |
| var scene = event.target; | |
| scene.removeEventListener( 'dispose', onSceneDispose ); | |
| delete renderStates[ scene.id ]; | |
| } | |
| function get( scene, camera ) { | |
| var renderState; | |
| if ( renderStates[ scene.id ] === undefined ) { | |
| renderState = new WebGLRenderState(); | |
| renderStates[ scene.id ] = {}; | |
| renderStates[ scene.id ][ camera.id ] = renderState; | |
| scene.addEventListener( 'dispose', onSceneDispose ); | |
| } else { | |
| if ( renderStates[ scene.id ][ camera.id ] === undefined ) { | |
| renderState = new WebGLRenderState(); | |
| renderStates[ scene.id ][ camera.id ] = renderState; | |
| } else { | |
| renderState = renderStates[ scene.id ][ camera.id ]; | |
| } | |
| } | |
| return renderState; | |
| } | |
| function dispose() { | |
| renderStates = {}; | |
| } | |
| return { | |
| get: get, | |
| dispose: dispose | |
| }; | |
| } | |
| export { WebGLRenderStates }; | |