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); }
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; } } }