
import renderSystem from './renderSystem.js';
import player from './player.js';
import eventManager from './eventManager.js';
import camera from './camera.js';
import scene from './scene.js';
import quad from './quad.js';
import primitives from './primitives.js';
import sampler2D from './sampler2D.js';
import linePrimitives from './linePrimitives.js';


/**
 * viewport
**/
class viewport{
	
	constructor( selector ){
		
		this.width; // width of canvas
		this.height; // height of canvas
		
		this.selector = selector; // Dom selector
		this.gl; // gl context
		
		if(selector)
			this.setup();
		
	}

	setSelector(selector) {
		
		this.selector = selector;
		
		
	}
	
	setup() {
		
		
		this.system = new renderSystem();
		this.scene = new scene();
		
		this.system.setViewport( this );
		this.system.setGraphicsLibrary("WebGL_1.0");
		
		this.canvas = document.getElementById( this.selector );
		
		this.gl = this.system.initializeWebgl( this.canvas );
		
		this.width = this.canvas.width;
		this.height = this.canvas.height;
		
		
		
		// Viewport dependend objects
		this.mainPlayer = new player();
		this.events = new eventManager( this );
		this.mainCamera = new camera();
		this.scene = new scene();
		this.quad = new quad();
		this.primitives = new primitives();
		this.linePrimitives = new linePrimitives();
		
		this.linePrimitives.setViewport( this );
		this.primitives.setViewport( this );
		this.quad.setViewport( this );
		this.mainPlayer.setViewport( this );
		this.mainCamera.setViewport( this );
		

		
		//this.system.createRenderPasses2();
		//createRenderPasses2
		//this.events.setViewport( this );
	}
	
	addScene( scene ){
		
		this.scene = scene;
		
	}
	
	render(){
		
		this.mainPlayer.update();
		this.mainCamera.update();

		
	}
	
}

export {viewport as default};