/** * Renders a scene with a camera * @param graphics GameLib.D3.Graphics * @param apiRenderer GameLib.D3.API.Renderer * @constructor */ GameLib.D3.Renderer = function ( graphics, apiRenderer ) { this.graphics = graphics; this.graphics.isNotThreeThrow(); GameLib.D3.API.Renderer.call( this, apiRenderer.id, apiRenderer.name, apiRenderer.rendererType, apiRenderer.autoClear, apiRenderer.localClipping, apiRenderer.width, apiRenderer.height, apiRenderer.parentEntity, apiRenderer.preserveDrawingBuffer, apiRenderer.composer ); this.instance = this.createInstance(); }; GameLib.D3.Renderer.prototype = Object.create(GameLib.D3.API.Renderer.prototype); GameLib.D3.Renderer.prototype.constructor = GameLib.D3.Renderer; GameLib.D3.Renderer.RENDER_TYPE_NORMAL = 0x1; GameLib.D3.Renderer.RENDER_TYPE_STEREO = 0x2; /** * Create Renderer Instance * @param update * @returns {*} */ GameLib.D3.Renderer.prototype.createInstance = function(update) { var instance = null; if (update) { instance = this.instance; } else { instance = new THREE.WebGLRenderer(); } instance.localClippingEnabled = this.localClipping; instance.setSize(this.width, this.height); instance.autoClear = this.autoClear; instance.preserveDrawingBuffer = this.preserveDrawingBuffer; return instance; }; GameLib.D3.Renderer.prototype.updateInstance = function() { this.instance = this.createInstance(true); }; GameLib.D3.Renderer.prototype.toApiComponent = function() { var apiRenderer = new GameLib.D3.API.Renderer( this.id, this.name, this.rendererType, this.autoClear, this.localClipping, this.width, this.height, GameLib.Utils.IdOrNull(this.parentEntity), preserveDrawingBuffer, GameLib.Utils.IdOrNull(this.composer) ); return apiRenderer; }; /** * * @param graphics * @param objectComponent * @returns {GameLib.D3.Renderer} * @constructor */ GameLib.D3.Renderer.FromObjectComponent = function(graphics, objectComponent) { var apiRenderer = GameLib.D3.API.Renderer.FromObjectComponent(objectComponent); return new GameLib.D3.Renderer( graphics, apiRenderer ); };