RhinoCyclesCore.Database.ChangeDatabase.UploadLightChanges C# (CSharp) Method

UploadLightChanges() public method

Upload all light changes to the Cycles render engine
public UploadLightChanges ( ) : void
return void
        public void UploadLightChanges()
        {
            /* new light shaders and lights. */
            foreach (var l in _lightDatabase.LightsToAdd)
            {
                if (_renderEngine.CancelRender) return;

                l.Gamma = PreProcessGamma;

                var lgsh = _renderEngine.CreateSimpleEmissionShader(l);
                _renderEngine.Client.Scene.AddShader(lgsh);
                _shaderDatabase.Add(l, lgsh);

                if (_renderEngine.CancelRender) return;

                var light = new CclLight(_renderEngine.Client, _renderEngine.Client.Scene, lgsh)
                {
                    Type = l.Type,
                    Size = l.Size,
                    Location = l.Co,
                    Direction = l.Dir,
                    UseMis = l.UseMis,
                    CastShadow = l.CastShadow,
                    Samples = 1,
                    MaxBounces = 1024,
                    SizeU = l.SizeU,
                    SizeV = l.SizeV,
                    AxisU = l.AxisU,
                    AxisV = l.AxisV,
                };

                switch (l.Type)
                {
                    case LightType.Area:
                        break;
                    case LightType.Point:
                        break;
                    case LightType.Spot:
                        light.SpotAngle = l.SpotAngle;
                        light.SpotSmooth = l.SpotSmooth;
                        break;
                    case LightType.Distant:
                        break;
                }

                light.TagUpdate();
                _lightDatabase.RecordLightRelation(l.Id, light);
            }

            // update existing ones
            foreach (var l in _lightDatabase.LightsToUpdate)
            {
                var existingL = _lightDatabase.ExistingLight(l.Id);
                TriggerLightShaderChanged(l, existingL.Shader);

                existingL.Type = l.Type;
                existingL.Size = l.Size;
                existingL.Location = l.Co;
                existingL.Direction = l.Dir;
                existingL.UseMis = l.UseMis;
                existingL.CastShadow = l.CastShadow;
                existingL.Samples = 1;
                existingL.MaxBounces = 1024;
                existingL.SizeU = l.SizeU;
                existingL.SizeV = l.SizeV;
                existingL.AxisU = l.AxisU;
                existingL.AxisV = l.AxisV;

                switch (l.Type)
                {
                    case LightType.Area:
                        break;
                    case LightType.Point:
                        break;
                    case LightType.Spot:
                        existingL.SpotAngle = l.SpotAngle;
                        existingL.SpotSmooth = l.SpotSmooth;
                        break;
                    case LightType.Distant:
                        break;
                }
                existingL.TagUpdate();
            }
        }