CNCMaps.Engine.Map.Map.ApplyLightSources C# (CSharp) Method

ApplyLightSources() private method

private ApplyLightSources ( ) : void
return void
        private void ApplyLightSources()
        {
            int before = _palettesToBeRecalculated.Count;
            foreach (LightSource lamp in _lightSources) {
                foreach (MapTile t in _tiles) {
                    if (t == null) continue;

                    bool wasShared = t.Palette.IsShared;
                    // make sure this tile can only end up in the "to-be-recalculated list" once
                    if (!lamp.ApplyLamp(t)) continue;

                    // this lamp caused a new unshared palette to be created
                    if (wasShared && !t.Palette.IsShared)
                        _palettesToBeRecalculated.Add(t.Palette);

                    foreach (var obj in t.AllObjects.Where(o => o.Lighting == LightingType.Full || o.Lighting == LightingType.Ambient)) {
                        wasShared = obj.Palette.IsShared;
                        lamp.ApplyLamp(obj, obj.Lighting == LightingType.Ambient);
                        _palettesToBeRecalculated.Add(obj.Palette);
                        if (wasShared && !obj.Palette.IsShared)
                            _palettesToBeRecalculated.Add(obj.Palette);
                    }
                }
            }
            Logger.Debug("Determined palettes to be recalculated due to lightsources ({0})",
                        _palettesToBeRecalculated.Count - before);
        }