/** * This component renders a scene * @param id String * @param name String * @param rendererType * @param autoClear bool * @param localClipping * @param width * @param height * @param parentEntity * @param preserveDrawingBuffer * @constructor */ GameLib.D3.API.Renderer = function ( id, name, rendererType, autoClear, localClipping, width, height, parentEntity, preserveDrawingBuffer ) { GameLib.Component.call( this, GameLib.Component.COMPONENT_RENDERER, null, null, parentEntity ); if (GameLib.Utils.UndefinedOrNull(id)) { id = GameLib.Utils.RandomId(); } this.id = id; if (GameLib.Utils.UndefinedOrNull(name)) { name = "Renderer (" + this.id + ")"; } this.name = name; if (GameLib.Utils.UndefinedOrNull(rendererType)) { rendererType = GameLib.D3.Renderer.RENDER_TYPE_NORMAL; } this.rendererType = rendererType; if (GameLib.Utils.UndefinedOrNull(autoClear)) { if (this.rendererType == GameLib.D3.Renderer.RENDER_TYPE_NORMAL) { autoClear = true; } else if (this.rendererType == GameLib.D3.Renderer.RENDER_TYPE_STEREO) { autoClear = false; } else { console.warn('Unhandled render type : ' + this.rendererType); throw new Error('Unhandled render type : ' + this.rendererType); } } this.autoClear = autoClear; if (GameLib.Utils.UndefinedOrNull(localClipping)) { localClipping = false; } this.localClipping = localClipping; if (GameLib.Utils.UndefinedOrNull(width)) { width = 800; } this.width = width; if (GameLib.Utils.UndefinedOrNull(height)) { height = 600; } this.height = height; if (GameLib.Utils.UndefinedOrNull(preserveDrawingBuffer)) { if (this.rendererType == GameLib.D3.Renderer.RENDER_TYPE_NORMAL) { preserveDrawingBuffer = false; } else if (this.rendererType == GameLib.D3.Renderer.RENDER_TYPE_STEREO) { preserveDrawingBuffer = true; } else { console.warn('Unhandled render type : ' + this.rendererType); throw new Error('Unhandled render type : ' + this.rendererType); } } this.preserveDrawingBuffer = preserveDrawingBuffer; }; GameLib.D3.API.Renderer.prototype = Object.create(GameLib.Component.prototype); GameLib.D3.API.Renderer.prototype.constructor = GameLib.D3.API.Renderer; /** * Object to GameLib.D3.API.Renderer * @param objectComponent * @constructor */ GameLib.D3.API.Renderer.FromObjectComponent = function(objectComponent) { return new GameLib.D3.API.Renderer( objectComponent.id, objectComponent.name, objectComponent.rendererType, objectComponent.autoClear, objectComponent.localClipping, objectComponent.width, objectComponent.height, objectComponent.parentEntity, objectComponent.preserveDrawingBuffer ); };