/** * GameLib.D3.Shadow.Spot * @param graphics GameLib.GraphicsRuntime * @param apiSpotShadow * @constructor */ GameLib.D3.Shadow.Spot = function( graphics, apiSpotShadow ) { this.graphics = graphics; this.graphics.isNotThreeThrow(); if (GameLib.Utils.UndefinedOrNull(apiSpotShadow)) { apiSpotShadow = { shadowType : GameLib.D3.API.Shadow.SHADOW_TYPE_SPOT }; } GameLib.D3.API.Shadow.Spot.call( this, apiSpotShadow ); if (this.camera instanceof GameLib.D3.API.Camera.Perspective) { this.camera = new GameLib.D3.Camera.Perspective( this.graphics, this.camera ) } GameLib.D3.Shadow.call( this, this.graphics, apiSpotShadow ); }; GameLib.D3.Shadow.Spot.prototype = Object.create(GameLib.D3.Shadow.prototype); GameLib.D3.Shadow.Spot.prototype.constructor = GameLib.D3.Shadow.Spot; /** * Creates a shadow instance * @returns {*} */ GameLib.D3.Shadow.Spot.prototype.createInstance = function() { this.instance = {}; GameLib.D3.Shadow.prototype.createInstance.call(this); }; /** * Updates the instance with the current state */ GameLib.D3.Shadow.Spot.prototype.updateInstance = function(property) { if (property === 'camera') { console.warn('todo: updateInstance for directional shadow camera instance'); return; } GameLib.D3.Shadow.prototype.updateInstance.call(this, property); }; /** * Converts a GameLib.D3.Shadow to a GameLib.D3.API.Shadow * @returns {GameLib.D3.API.Shadow} */ GameLib.D3.Shadow.Spot.prototype.toApiObject = function() { var apiShadow = GameLib.D3.Shadow.prototype.toApiObject.call(this); var apiSpotShadow = new GameLib.D3.API.Shadow.Spot( apiShadow ); return apiSpotShadow; };