Ejemplo n.º 1
0
        public static List <GroupModel> GetAll(EntertainmentLayer layer = null)
        {
            if (layer == null)
            {
                layer = StreamingSetup.Layers.First();
            }

            var center = EffectSettings.LocationCenter;

            var allLightsOrdered = layer.OrderBy(x => x.LightLocation.X).ThenBy(x => x.LightLocation.Y).ToList();

            var leftRight = new[] { allLightsOrdered.GetLeft(), allLightsOrdered.GetRight() }.ToList();
            var frontBack = new[] { allLightsOrdered.GetFront(), allLightsOrdered.GetBack() }.ToList();
            var quarter = new[] { layer.GetLeft().GetFront(), layer.GetLeft().GetBack(), layer.GetRight().GetBack(), layer.GetRight().GetFront() }.ToList();
            var alternating       = allLightsOrdered.ChunkByGroupNumber(2);
            var alternatingFour   = allLightsOrdered.ChunkByGroupNumber(4);
            var orderedByDistance = layer.OrderBy(x => x.LightLocation.Distance(center.X, center.Y)).ChunkByGroupNumber(3);
            var orderedByAngle    = layer.OrderBy(x => x.LightLocation.Angle(center.X, center.Y)).ChunkBy(6);

            var leftToRight = allLightsOrdered.GroupBy(x => (int)(((x.LightLocation.X + 1) / 2) * 50)).OrderBy(x => x.Key);
            var fronToBack  = allLightsOrdered.GroupBy(x => (int)(((x.LightLocation.Y + 1) / 2) * 50)).OrderBy(x => x.Key);
            var ring        = allLightsOrdered.GroupBy(x => (int)((x.LightLocation.Distance(center.X, center.Y) / 1.5) * 2));
            var tentacles   = allLightsOrdered.GroupBy(x => (int)((x.LightLocation.Angle(center.X, center.Y) / 3.6 / 3))).OrderBy(x => x.Key);

            var result = new List <GroupModel>()
            {
                //new GroupModel("All", allLightsOrdered.To2DGroup()),
                new GroupModel("Left/Right", leftRight),
                new GroupModel("Left To Right", leftToRight, 2),
                new GroupModel("Front/Back", frontBack),
                new GroupModel("Front To Back", fronToBack, 2),
                new GroupModel("Quarter", quarter, 2),
                new GroupModel("Alternating", alternating),
                new GroupModel("Alternating by 4", alternatingFour),
                //new GroupModel("Distance from center", orderedByDistance),
                //new GroupModel("Order by Angle from center", orderedByAngle),
                new GroupModel("Ring", ring, 2),
                new GroupModel("Tentacles", tentacles),
                new GroupModel("Random", GetRandomGroup()),
            };

            if (StreamingSetup.CurrentConnection.Name == "Ster" || StreamingSetup.CurrentConnection.Name == "DEMO Ster")
            {
                result.Add(new GroupModel("Tentacles (alternating 2)", tentacles.ChunkByGroupNumber(2).Select(x => x.SelectMany(l => l)), 2));
                result.Add(new GroupModel("Tentacles (alternating 3)", tentacles.ChunkByGroupNumber(3).Select(x => x.SelectMany(l => l)), 3));
                result.Add(new GroupModel("Tentacles (alternating 4)", tentacles.ChunkByGroupNumber(4).Select(x => x.SelectMany(l => l)), 4));
            }

            return(result);
        }
Ejemplo n.º 2
0
        public static async Task SendCommandL(BeatmapEventData data, HSB hsbColor, double brightness, HSB inithsbColor, HSB endhsbColor, double time, bool gradient)
        {
            CancellationToken  token    = LightInfo.token;
            EntertainmentLayer entLayer = LightInfo.layer;

            if (gradient == true)
            {
                switch (data.value)
                {
                case 0: entLayer.GetLeft().SetState(token, null, brightness); break;

                case 1: entLayer.GetLeft().SetState(token, inithsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.SetState(token, endhsbColor.GetRGB(), 1, TimeSpan.FromSeconds(time)); break;

                case 5: entLayer.GetLeft().SetState(token, inithsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.SetState(token, endhsbColor.GetRGB(), 1, TimeSpan.FromSeconds(time)); break;
                }
            }
            else
            {
                switch (data.value)
                {
                case 0: entLayer.GetLeft().SetState(token, null, brightness); break;

                case 1: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); break;

                case 2: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), brightness, TimeSpan.FromSeconds(1)); break;

                case 3: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), brightness, TimeSpan.FromSeconds(1)); break;

                case 5: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); break;

                case 6: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), brightness, TimeSpan.FromSeconds(1)); break;

                case 7: entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), 1); await Task.Delay(TimeSpan.FromMilliseconds(20), token); entLayer.GetLeft().SetState(token, hsbColor.GetRGB(), brightness, TimeSpan.FromSeconds(1)); break;
                }
            }
        }