public LightSource(GraphicsDeviceManager graphics, int radius, LightAreaQuality quality, Color color) { switch (quality) { case LightAreaQuality.VeryLow: this.qualityRatio = 0.1f; break; case LightAreaQuality.Low: this.qualityRatio = 0.25f; break; case LightAreaQuality.Middle: this.qualityRatio = 0.5f; break; case LightAreaQuality.High: this.qualityRatio = 0.75f; break; case LightAreaQuality.VeryHigh: this.qualityRatio = 1f; break; } this.graphics = graphics; this.Radius = radius; this.RenderRadius = (float)radius * this.qualityRatio; float baseSize = (float)this.Radius * 2f; this.Size = new Vector2(baseSize); baseSize *= this.qualityRatio; this.RenderTargetSize = new Vector2(baseSize); PrintedLight = new RenderTarget2D(graphics.GraphicsDevice, (int)baseSize, (int)baseSize); this.Color = color; }
public LightSource(GraphicsDevice graphics, int radius, LightAreaQuality quality, Color color, BeamStencilType bst, SpotStencilType sst) { switch (quality) { case LightAreaQuality.VeryLow: this.qualityRatio = 0.1f; break; case LightAreaQuality.Low: this.qualityRatio = 0.25f; break; case LightAreaQuality.Middle: this.qualityRatio = 0.5f; break; case LightAreaQuality.High: this.qualityRatio = 0.75f; break; case LightAreaQuality.VeryHigh: this.qualityRatio = 1f; break; } this.graphics = graphics; this.Radius = radius; this.RenderRadius = (float)radius * this.qualityRatio; float baseSize = (float)this.Radius * 2f; this.Size = new Vector2(baseSize); baseSize *= this.qualityRatio; this.RenderTargetSize = new Vector2(baseSize); //PrintedLight = new RenderTarget2D(graphics, (int)baseSize, (int)baseSize); //BeamLight = new RenderTarget2D(graphics, (int)baseSize, (int)baseSize); this.Color = color; if (bst != BeamStencilType.None) BeamStencil = LightingEngine.Instance.BeamStencils[bst]; if (sst != SpotStencilType.None) SpotStencil = LightingEngine.Instance.SpotStencils[sst].Item3; }