Source: scene/environment.js


import { v4 as uuid } from '../../node_modules/uuid/dist/esm-browser/index.js';

import { Reporter } from '../reporter/reporter.js';
import { WrappedImage } from '../package/image/wrapped_image.js';
import { checkPropTypes } from '../lib.js';
import { BuildableComponent } from '../package/component/buildable_component.js';
import { EnvironmentMap } from '../package/environment_map.js';

import {
    PMREMGenerator,
    WebGL1Renderer,
    Light,
    TextureLoader,
    Texture,
    CubeTexture,
    WebGLCubeRenderTarget,
    WebGLRenderer
} from '../../node_modules/three/build/three.module.js';


// environment ook deelmaken van de package?


/** Everything needed to give a scene a mood */
class Environment extends BuildableComponent {   
    
    /**
     * @param {Reporter} reporter
     * @param {Object} settings
     * @param {UUID} [settings.id] 
     * @param {Array<Light>} [settings.lights]
     * @param {EnvironmentMap} [settings.envMap]
     */

    constructor( reporter, settings ) {

        super(  
            reporter, 
            settings,
            {
                parse: {
                    lights: 'integral'
                }
            }
        );

        checkPropTypes(
            settings,
            {

            },    
            {   
                envMap: EnvironmentMap, 
                lights: val => 
                Array.isArray(val) && val.every( env => env instanceof Light )
            }
        );

        if ( settings.envMap  != undefined ){
            this._envMapEXR = settings.envMap._envMap //buildEnvironmentMapEXR( settings.exrMap )
            //console.log( exrMap )
        }

        this._lights = settings.lights
        this._envMapCube = settings.cubeMap

    }    

    _setEnvironment(){
        //hier de enviroment 
    }


}

export { Environment };