Animatroller.Scenes.PanTiltDemo.PanTiltDemo C# (CSharp) Метод

PanTiltDemo() публичный Метод

public PanTiltDemo ( IEnumerable args ) : System
args IEnumerable
Результат System
        public PanTiltDemo(IEnumerable<string> args)
        {
            // Patch physical
            acnOutput.Connect(new Physical.MonopriceMovingHeadLight12chn(lightA, 200), 54);

            // Logging
            lightA.OutputPan.Log("Pan");
            lightA.OutputTilt.Log("Tilt");

            // Build preset
            var preset1 = new Preset
            {
                Brightness = 0.5,
                Color = Color.Firebrick,
                Pan = 0,
                Tilt = 0
            };

            var preset2 = new Preset
            {
                Brightness = 1.0,
                Color = Color.Yellow,
                Pan = 300,
                Tilt = 200
            };

            // Cues
            cueList.AddCue(new Cue
            {
                Preset = preset1,
                FadeS = 4.0
            }, lightA, lightB);

            cueList.AddCue(new Cue
            {
                Preset = preset2,
                FadeS = 2.0
            }, lightA, lightB);

            cueList.AddCue(new Cue
                {
                    Color = Color.Green,
                    AddDevice = lightA,
                    FadeS = 2,
                    Trigger = Cue.Triggers.Follow,
                    TriggerTimeS = 6
                });

            // BO
            cueList.AddCue(new Cue
            {
                Intensity = 0,
                AddDevice = lightA,
                FadeS = 1,
                Pan = 0,
                Tilt = 0
            }, lightB);

            cueList.AddCue(new Cue
            {
                Preset = preset2,
                FadeS = 2.0
            }, lightA, lightB);

            cueList.CueCompleted.Subscribe(x =>
                {
                    log.Debug("Cue {0} processing time: {1:N0}", x.Item1, x.Item2);
                });

            // Inputs
            button1.Output.Subscribe(x =>
                {
                    if (x)
                    {
                        cueList.Go();
                    }
                });

            button2.Output.Subscribe(x =>
                {
                    if (x)
                    {
                        double[] testListP = new double[1000];
                        for (int i = 0; i < testListP.Length; i++)
                            testListP[i] = 200 * Math.Sin(Math.PI * i / testListP.Length);

                        double[] testListT = new double[1000];
                        for (int i = 0; i < testListP.Length; i++)
                            testListT[i] = 270 * Math.Sin(Math.PI * i / testListP.Length);

                        var token = lightA.TakeControl();

                        lightA.SetOnlyColor(Color.Violet);

                        var tasks = new List<Task>();

                        tasks.Add(Exec.MasterEffect.Fade(lightA.GetBrightnessObserver(), 0.0, 1.0, 2000));

                        tasks.Add(Exec.MasterEffect.Custom(testListP, lightA.GetPanObserver(), 5000, 1));

                        tasks.Add(Exec.MasterEffect.Custom(testListT, lightA.GetTiltObserver(), 10000, 3));

                        Task.WhenAll(tasks.ToArray())
                            .ContinueWith(_ => token.Dispose());
                    }
                });

            test1.ConnectTo(lightA);
        }