Exemplo n.º 1
0
        public async Task Start(EntertainmentLayer layer, Func <TimeSpan> waitTime, RGBColor?color, CancellationToken cancellationToken)
        {
            layer.SetBrightness(cancellationToken, 0, waitTime(), false);

            //Wait for other events to finish and set brightness again
            await Task.Delay(waitTime(), cancellationToken);

            layer.SetBrightness(cancellationToken, 0, waitTime(), false);
        }
Exemplo n.º 2
0
        public async Task Start(EntertainmentLayer layer, Func <TimeSpan> waitTime, RGBColor?color, CancellationToken cancellationToken)
        {
            //Non repeating effects should not run on baselayer
            if (layer.IsBaseLayer)
            {
                return;
            }

            var center            = EffectSettings.LocationCenter;
            var orderedByDistance = layer.OrderBy(x => x.LightLocation.Distance(center.X, center.Y, center.Z));

            if (!color.HasValue)
            {
                color = RGBColor.Random();
            }

            Func <TimeSpan> customWaitTime = () => waitTime() / layer.Count;


            await orderedByDistance.To2DGroup().SetColor(cancellationToken, color.Value, IteratorEffectMode.Single, IteratorEffectMode.All, customWaitTime);

            layer.SetBrightness(cancellationToken, 0, transitionTime: TimeSpan.FromMilliseconds(0));
        }