Exemple #1
0
        private void menuitemAddFilledRectangleTrack_Click(object sender, RoutedEventArgs e)
        {
            AnimationTrack newFilledRectangleTrack = new AnimationTrack(GetAvailableTrackName("Filled Rectangle Track"), 0.0f);

            newFilledRectangleTrack.SetFrame(0.0f, new AnimationFilledRectangle());

            ContextMix = ContextMix.AddTrack(newFilledRectangleTrack);
        }
Exemple #2
0
        private void menuitemAddManualColorTrack_Click(object sender, RoutedEventArgs e)
        {
            AnimationTrack newManualColorTrack = new AnimationTrack(GetAvailableTrackName("Manual Color Track"), 0.0f);

            newManualColorTrack.SetFrame(0.0f, new AnimationManualColorFrame());

            ContextMix = ContextMix.AddTrack(newManualColorTrack);
        }
Exemple #3
0
        private void RegenerateHyperspaceExitAnimation(StarClass starClass = StarClass.K)
        {
            if (starClass == hyperspace_exit_star)
            {
                return;
            }

            hypespace_exit_mix = new AnimationMix();
            float startingX           = Effects.canvas_width_center - 10;
            Color hyperspaceExitColor = starColors.ContainsKey(starClass) ? starColors[starClass] : starColors[StarClass.K];

            AnimationTrack star_entry = new AnimationTrack("Hyperspace exit", 2.0f);

            star_entry.SetFrame(0.0f,
                                new AnimationFilledCircle(startingX, Effects.canvas_height_center, 0, hyperspaceExitColor, 1)
                                );
            star_entry.SetFrame(1.0f,
                                new AnimationFilledCircle(startingX, Effects.canvas_height_center, Effects.canvas_biggest, hyperspaceExitColor, 1)
                                );
            star_entry.SetFrame(1.2f,
                                new AnimationFilledCircle(startingX, Effects.canvas_height_center, Effects.canvas_biggest, hyperspaceExitColor, 1)
                                );
            star_entry.SetFrame(2f,
                                new AnimationFilledCircle(startingX, Effects.canvas_height_center, Effects.canvas_biggest, Color.Empty, 1)
                                );

            AnimationTrack star_entry_bg = new AnimationTrack("Hyperspace exit bg", 2f);

            star_entry_bg.SetFrame(0.0f,
                                   new AnimationFill(Color.Black)
                                   );
            star_entry_bg.SetFrame(1.2f,
                                   new AnimationFill(Color.Black)
                                   );

            hypespace_exit_mix.AddTrack(star_entry_bg);
            hypespace_exit_mix.AddTrack(star_entry);
        }
Exemple #4
0
        private AnimationTrack GenerateHyperspaceStreak(float xOffset, float timeShift, int index = 0)
        {
            Color streakEndColor   = Color.FromArgb(178, 217, 255);
            Color streakStartColor = Color.FromArgb(0, 64, 135);

            float animationDuration = 0.8f;
            int   streakSize        = 7;
            int   streakWidth       = 3;

            int startPosition = -40;
            int endPosition   = Effects.canvas_height + streakSize * 2;

            AnimationTrack streak = new AnimationTrack("Hyperspace streak " + index, animationDuration, timeShift);

            streak.SetFrame(0.0f,
                            new AnimationLine(new PointF(xOffset, startPosition), new PointF(xOffset, startPosition + streakSize), streakStartColor, streakEndColor, streakWidth)
                            );
            streak.SetFrame(animationDuration,
                            new AnimationLine(new PointF(xOffset, endPosition), new PointF(xOffset, endPosition + streakSize), streakStartColor, streakEndColor, streakWidth)
                            );

            return(streak);
        }
Exemple #5
0
        private AnimationTrack GenerateFsdPulse(int index = 0)
        {
            Color pulseStartColor = Color.FromArgb(0, 126, 255);
            Color pulseEndColor   = Color.FromArgb(200, 0, 126, 255);

            float startingX       = Effects.canvas_width_center - 10;
            int   pulseStartWidth = 10;
            int   pulseEndWidth   = 2;

            float pulseFrameDuration = 1;
            float pulseDuration      = 0.7f;

            AnimationTrack countdown_pulse = new AnimationTrack("Fsd countdown pulse " + index, pulseFrameDuration, index);

            countdown_pulse.SetFrame(0.0f,
                                     new AnimationCircle(startingX, Effects.canvas_height_center, 0, pulseStartColor, pulseStartWidth)
                                     );
            countdown_pulse.SetFrame(pulseDuration,
                                     new AnimationCircle(startingX, Effects.canvas_height_center, Effects.canvas_biggest, pulseEndColor, pulseEndWidth)
                                     );

            return(countdown_pulse);
        }
Exemple #6
0
        private input_item CreateInputItem(Devices.DeviceKeys key, EffectPoint origin)
        {
            Color primary_c   = (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_primary_color;
            Color secondary_c = (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_secondary_color;

            if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effects_random_primary_color)
            {
                primary_c = Utils.ColorUtils.GenerateRandomColor(primary_c);
            }

            if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effects_random_secondary_color)
            {
                secondary_c = Utils.ColorUtils.GenerateRandomColor(secondary_c);
            }

            AnimationMix anim_mix = new AnimationMix();

            if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_type == InteractiveEffects.Wave)
            {
                AnimationTrack wave = new AnimationTrack("Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationCircle(origin.ToPointF(), 0, primary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                wave.SetFrame(0.80f,
                              new AnimationCircle(origin.ToPointF(), Effects.canvas_width * 0.80f, secondary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                wave.SetFrame(1.00f,
                              new AnimationCircle(origin.ToPointF(), Effects.canvas_width, Color.FromArgb(0, secondary_c), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                anim_mix.AddTrack(wave);
            }
            else if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_type == InteractiveEffects.Wave_Filled)
            {
                AnimationTrack wave = new AnimationTrack("Filled Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationFilledCircle(origin.ToPointF(), 0, primary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                wave.SetFrame(0.80f,
                              new AnimationFilledCircle(origin.ToPointF(), Effects.canvas_width * 0.80f, secondary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                wave.SetFrame(1.00f,
                              new AnimationFilledCircle(origin.ToPointF(), Effects.canvas_width, Color.FromArgb(0, secondary_c), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                              );
                anim_mix.AddTrack(wave);
            }
            else if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_type == InteractiveEffects.KeyPress)
            {
                ColorSpectrum spec = new ColorSpectrum(primary_c, secondary_c);
                if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_type == InteractiveEffects.KeyPress)
                {
                    spec = new ColorSpectrum(primary_c, Color.FromArgb(0, secondary_c));
                    spec.SetColorAt(0.80f, secondary_c);
                }

                return(new input_item(key, 0.0f, spec));
            }
            else if ((Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_type == InteractiveEffects.ArrowFlow)
            {
                PointF starting_pt = origin.ToPointF();

                AnimationTrack arrow = new AnimationTrack("Arrow Flow effect", 1.0f);
                arrow.SetFrame(0.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(starting_pt, starting_pt, primary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width),
                    new AnimationLine(starting_pt, starting_pt, primary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                }
                                   )
                               );
                arrow.SetFrame(0.33f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(starting_pt, new PointF(starting_pt.X + Effects.canvas_width * 0.33f, starting_pt.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width),
                    new AnimationLine(starting_pt, new PointF(starting_pt.X - Effects.canvas_width * 0.33f, starting_pt.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                }
                                   )
                               );
                arrow.SetFrame(0.66f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(starting_pt.X + Effects.canvas_width * 0.33f, starting_pt.Y), new PointF(starting_pt.X + Effects.canvas_width * 0.66f, starting_pt.Y), secondary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width),
                    new AnimationLine(new PointF(starting_pt.X - Effects.canvas_width * 0.33f, starting_pt.Y), new PointF(starting_pt.X - Effects.canvas_width * 0.66f, starting_pt.Y), secondary_c, (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                }
                                   )
                               );
                arrow.SetFrame(1.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(starting_pt.X + Effects.canvas_width * 0.66f, starting_pt.Y), new PointF(starting_pt.X + Effects.canvas_width, starting_pt.Y), Color.FromArgb(0, secondary_c), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width),
                    new AnimationLine(new PointF(starting_pt.X - Effects.canvas_width * 0.66f, starting_pt.Y), new PointF(starting_pt.X - Effects.canvas_width, starting_pt.Y), Color.FromArgb(0, secondary_c), (Global.Configuration.desktop_profile.Settings as DesktopSettings).interactive_effect_width)
                }
                                   )
                               );
                anim_mix.AddTrack(arrow);
            }

            return(new input_item(key, 0.0f, anim_mix));
        }
Exemple #7
0
        private input_item CreateInputItem(Devices.DeviceKeys key, PointF origin)
        {
            Color primary_c   = Properties.RandomPrimaryColor ? Utils.ColorUtils.GenerateRandomColor() : Properties.PrimaryColor;
            Color secondary_c = Properties.RandomSecondaryColor ? Utils.ColorUtils.GenerateRandomColor() : Properties.SecondaryColor;

            AnimationMix anim_mix = new AnimationMix();

            if (Properties.InteractiveEffect == InteractiveEffects.Wave)
            {
                AnimationTrack wave = new AnimationTrack("Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationCircle(origin, 0, primary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(0.80f,
                              new AnimationCircle(origin, Effects.canvas_width * 0.80f, secondary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(1.00f,
                              new AnimationCircle(origin, Effects.canvas_width + (Properties.EffectWidth / 2), Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                              );
                anim_mix.AddTrack(wave);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.Wave_Rainbow)
            {
                AnimationTrack rainbowWave = new AnimationTrack("Rainbow Wave", 1.0f);

                rainbowWave.SetFrame(0.0f, new AnimationGradientCircle(origin, 0, new EffectBrush(new ColorSpectrum(ColorSpectrum.Rainbow).Flip()).SetBrushType(EffectBrush.BrushType.Radial), Properties.EffectWidth));
                rainbowWave.SetFrame(1.0f, new AnimationGradientCircle(origin, Effects.canvas_width + (Properties.EffectWidth / 2), new EffectBrush(new ColorSpectrum(ColorSpectrum.Rainbow).Flip()).SetBrushType(EffectBrush.BrushType.Radial), Properties.EffectWidth));

                anim_mix.AddTrack(rainbowWave);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.Wave_Filled)
            {
                AnimationTrack wave = new AnimationTrack("Filled Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationFilledCircle(origin, 0, primary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(0.80f,
                              new AnimationFilledCircle(origin, Effects.canvas_width * 0.80f, secondary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(1.00f,
                              new AnimationFilledCircle(origin, Effects.canvas_width + (Properties.EffectWidth / 2), Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                              );
                anim_mix.AddTrack(wave);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.KeyPress)
            {
                ColorSpectrum spec = new ColorSpectrum(primary_c, secondary_c);
                spec = new ColorSpectrum(primary_c, Color.FromArgb(0, secondary_c));
                spec.SetColorAt(0.80f, secondary_c);

                return(new input_item(key, 0.0f, Properties.WaitOnKeyUp, spec));
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.ArrowFlow)
            {
                AnimationTrack arrow = new AnimationTrack("Arrow Flow effect", 1.0f);
                arrow.SetFrame(0.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(origin, origin, primary_c, Properties.EffectWidth),
                    new AnimationLine(origin, origin, primary_c, Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(0.33f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(origin, new PointF(origin.X + Effects.canvas_width * 0.33f, origin.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), Properties.EffectWidth),
                    new AnimationLine(origin, new PointF(origin.X - Effects.canvas_width * 0.33f, origin.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(0.66f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(origin.X + Effects.canvas_width * 0.33f, origin.Y), new PointF(origin.X + Effects.canvas_width * 0.66f, origin.Y), secondary_c, Properties.EffectWidth),
                    new AnimationLine(new PointF(origin.X - Effects.canvas_width * 0.33f, origin.Y), new PointF(origin.X - Effects.canvas_width * 0.66f, origin.Y), secondary_c, Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(1.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(origin.X + Effects.canvas_width * 0.66f, origin.Y), new PointF(origin.X + Effects.canvas_width, origin.Y), Color.FromArgb(0, secondary_c), Properties.EffectWidth),
                    new AnimationLine(new PointF(origin.X - Effects.canvas_width * 0.66f, origin.Y), new PointF(origin.X - Effects.canvas_width, origin.Y), Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                }
                                   )
                               );
                anim_mix.AddTrack(arrow);
            }

            return(new input_item(key, 0.0f, Properties.WaitOnKeyUp, anim_mix));
        }
Exemple #8
0
        private input_item CreateInputItem(Devices.DeviceKeys key, PointF origin)
        {
            Color primary_c   = Properties.RandomPrimaryColor ? Utils.ColorUtils.GenerateRandomColor() : Properties.PrimaryColor;
            Color secondary_c = Properties.RandomSecondaryColor ? Utils.ColorUtils.GenerateRandomColor() : Properties.SecondaryColor;

            AnimationMix anim_mix = new AnimationMix();

            if (Properties.InteractiveEffect == InteractiveEffects.Wave)
            {
                AnimationTrack wave = new AnimationTrack("Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationCircle(origin, 0, primary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(0.80f,
                              new AnimationCircle(origin, Effects.canvas_width * 0.80f, secondary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(1.00f,
                              new AnimationCircle(origin, Effects.canvas_width, Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                              );
                anim_mix.AddTrack(wave);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.Wave_Rainbow)
            {
                float dT = (float)(Math.Sqrt((double)Properties.EffectWidth - 0.7) * Math.Sqrt(12.0)) * 0.0065f;

                AnimationTrack wave_red       = new AnimationTrack("Wave effect (red)", 1.00f - dT * 6);
                AnimationTrack wave_orange    = new AnimationTrack("Wave effect (orange)", 1.00f - dT * 5);
                AnimationTrack wave_yellow    = new AnimationTrack("Wave effect (yellow)", 1.00f - dT * 4);
                AnimationTrack wave_green     = new AnimationTrack("Wave effect (green)", 1.00f - dT * 3);
                AnimationTrack wave_lightblue = new AnimationTrack("Wave effect (light blue)", 1.00f - dT * 2);
                AnimationTrack wave_blue      = new AnimationTrack("Wave effect (blue)", 1.00f - dT * 1);
                AnimationTrack wave_purple    = new AnimationTrack("Wave effect (purple)", 1.00f);

                wave_red.SetFrame(0.0f,
                                  new AnimationCircle(origin, 0, Color.Red, Properties.EffectWidth)
                                  );
                wave_red.SetFrame(1.00f - dT * 6,
                                  new AnimationCircle(origin, Effects.canvas_width, Color.Red, Properties.EffectWidth)
                                  );

                wave_orange.SetFrame(0.0f,
                                     new AnimationCircle(origin, 0, Color.Orange, Properties.EffectWidth)
                                     );
                wave_orange.SetFrame(0.0f + dT,
                                     new AnimationCircle(origin, 0, Color.Orange, Properties.EffectWidth)
                                     );
                wave_orange.SetFrame(1.00f - dT * 5,
                                     new AnimationCircle(origin, Effects.canvas_width, Color.Orange, Properties.EffectWidth)
                                     );

                wave_yellow.SetFrame(0.0f,
                                     new AnimationCircle(origin, 0, Color.Yellow, Properties.EffectWidth)
                                     );
                wave_yellow.SetFrame(0.0f + dT * 2,
                                     new AnimationCircle(origin, 0, Color.Yellow, Properties.EffectWidth)
                                     );
                wave_yellow.SetFrame(1.00f - dT * 4,
                                     new AnimationCircle(origin, Effects.canvas_width, Color.Yellow, Properties.EffectWidth)
                                     );

                wave_green.SetFrame(0.0f,
                                    new AnimationCircle(origin, 0, Color.Green, Properties.EffectWidth)
                                    );
                wave_green.SetFrame(0.0f + dT * 3,
                                    new AnimationCircle(origin, 0, Color.Green, Properties.EffectWidth)
                                    );
                wave_green.SetFrame(1.00f - dT * 3,
                                    new AnimationCircle(origin, Effects.canvas_width, Color.Green, Properties.EffectWidth)
                                    );

                wave_lightblue.SetFrame(0.0f,
                                        new AnimationCircle(origin, 0, Color.Blue, Properties.EffectWidth)
                                        );
                wave_lightblue.SetFrame(0.0f + dT * 4,
                                        new AnimationCircle(origin, 0, Color.Blue, Properties.EffectWidth)
                                        );
                wave_lightblue.SetFrame(1.00f - dT * 2,
                                        new AnimationCircle(origin, Effects.canvas_width, Color.Blue, Properties.EffectWidth)
                                        );

                wave_blue.SetFrame(0.0f,
                                   new AnimationCircle(origin, 0, Color.DarkBlue, Properties.EffectWidth)
                                   );
                wave_blue.SetFrame(0.0f + dT * 5,
                                   new AnimationCircle(origin, 0, Color.DarkBlue, Properties.EffectWidth)
                                   );
                wave_blue.SetFrame(1.00f - dT,
                                   new AnimationCircle(origin, Effects.canvas_width, Color.DarkBlue, Properties.EffectWidth)
                                   );

                wave_purple.SetFrame(0.0f,
                                     new AnimationCircle(origin, 0, Color.Purple, Properties.EffectWidth)
                                     );
                wave_purple.SetFrame(0.0f + dT * 6,
                                     new AnimationCircle(origin, 0, Color.Purple, Properties.EffectWidth)
                                     );
                wave_purple.SetFrame(1.00f,
                                     new AnimationCircle(origin, Effects.canvas_width, Color.Purple, Properties.EffectWidth)
                                     );

                anim_mix.AddTrack(wave_red);
                anim_mix.AddTrack(wave_orange);
                anim_mix.AddTrack(wave_yellow);
                anim_mix.AddTrack(wave_green);
                anim_mix.AddTrack(wave_lightblue);
                anim_mix.AddTrack(wave_blue);
                anim_mix.AddTrack(wave_purple);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.Wave_Filled)
            {
                AnimationTrack wave = new AnimationTrack("Filled Wave effect", 1.0f);
                wave.SetFrame(0.0f,
                              new AnimationFilledCircle(origin, 0, primary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(0.80f,
                              new AnimationFilledCircle(origin, Effects.canvas_width * 0.80f, secondary_c, Properties.EffectWidth)
                              );
                wave.SetFrame(1.00f,
                              new AnimationFilledCircle(origin, Effects.canvas_width, Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                              );
                anim_mix.AddTrack(wave);
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.KeyPress)
            {
                ColorSpectrum spec = new ColorSpectrum(primary_c, secondary_c);
                spec = new ColorSpectrum(primary_c, Color.FromArgb(0, secondary_c));
                spec.SetColorAt(0.80f, secondary_c);

                return(new input_item(key, 0.0f, spec));
            }
            else if (Properties.InteractiveEffect == InteractiveEffects.ArrowFlow)
            {
                AnimationTrack arrow = new AnimationTrack("Arrow Flow effect", 1.0f);
                arrow.SetFrame(0.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(origin, origin, primary_c, Properties.EffectWidth),
                    new AnimationLine(origin, origin, primary_c, Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(0.33f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(origin, new PointF(origin.X + Effects.canvas_width * 0.33f, origin.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), Properties.EffectWidth),
                    new AnimationLine(origin, new PointF(origin.X - Effects.canvas_width * 0.33f, origin.Y), Utils.ColorUtils.BlendColors(primary_c, secondary_c, 0.33D), Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(0.66f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(origin.X + Effects.canvas_width * 0.33f, origin.Y), new PointF(origin.X + Effects.canvas_width * 0.66f, origin.Y), secondary_c, Properties.EffectWidth),
                    new AnimationLine(new PointF(origin.X - Effects.canvas_width * 0.33f, origin.Y), new PointF(origin.X - Effects.canvas_width * 0.66f, origin.Y), secondary_c, Properties.EffectWidth)
                }
                                   )
                               );
                arrow.SetFrame(1.0f,
                               new AnimationLines(
                                   new AnimationLine[] {
                    new AnimationLine(new PointF(origin.X + Effects.canvas_width * 0.66f, origin.Y), new PointF(origin.X + Effects.canvas_width, origin.Y), Color.FromArgb(0, secondary_c), Properties.EffectWidth),
                    new AnimationLine(new PointF(origin.X - Effects.canvas_width * 0.66f, origin.Y), new PointF(origin.X - Effects.canvas_width, origin.Y), Color.FromArgb(0, secondary_c), Properties.EffectWidth)
                }
                                   )
                               );
                anim_mix.AddTrack(arrow);
            }

            return(new input_item(key, 0.0f, anim_mix));
        }
        public override EffectLayer Render(IGameState state)
        {
            previoustime = currenttime;
            currenttime  = Utils.Time.GetMillisecondsSinceEpoch();

            EffectLayer  bg_layer           = new EffectLayer("Rocket League - Background");
            AnimationMix goal_explosion_mix = new AnimationMix();
            Color        playerColor        = new Color();
            Color        enemyColor         = new Color();


            if (state is GameState_RocketLeague)
            {
                GameState_RocketLeague rlstate = state as GameState_RocketLeague;

                switch (rlstate.Player.Team)
                {
                case PlayerTeam.Blue:
                    bg_layer.Fill(Properties.BlueColor);
                    playerColor = Properties.BlueColor;
                    enemyColor  = Properties.OrangeColor;
                    break;

                case PlayerTeam.Orange:
                    bg_layer.Fill(Properties.OrangeColor);
                    playerColor = Properties.OrangeColor;
                    enemyColor  = Properties.BlueColor;
                    break;

                default:
                    bg_layer.Fill(Properties.DefaultColor);
                    playerColor = Properties.DefaultColor;
                    enemyColor  = Properties.DefaultColor;
                    break;
                }

                if (Properties.ShowTeamScoreSplit)
                {
                    if (rlstate.Match.BlueTeam_Score != 0 || rlstate.Match.OrangeTeam_Score != 0)
                    {
                        int total_score = rlstate.Match.BlueTeam_Score + rlstate.Match.OrangeTeam_Score;


                        LinearGradientBrush the__split_brush = new LinearGradientBrush(
                            new Point(0, 0),
                            new Point(Effects.canvas_biggest, 0),
                            Color.Red, Color.Red);
                        Color[] colors = new Color[]
                        {
                            Properties.OrangeColor,   //Orange //Team 1
                            Properties.OrangeColor,   //Orange "Line"
                            Properties.BlueColor,     //Blue "Line" //Team 2
                            Properties.BlueColor      //Blue
                        };
                        int     num_colors      = colors.Length;
                        float[] blend_positions = new float[num_colors];

                        if (rlstate.Match.OrangeTeam_Score > rlstate.Match.BlueTeam_Score)
                        {
                            blend_positions[0] = 0.0f;
                            blend_positions[1] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) - 0.01f;
                            blend_positions[2] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) + 0.01f;
                            blend_positions[3] = 1.0f;
                        }
                        else if (rlstate.Match.OrangeTeam_Score < rlstate.Match.BlueTeam_Score)
                        {
                            blend_positions[0] = 0.0f;
                            blend_positions[1] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) - 0.01f;
                            blend_positions[2] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) + 0.01f;
                            blend_positions[3] = 1.0f;
                        }
                        else
                        {
                            blend_positions[0] = 0.0f;
                            blend_positions[1] = 0.49f;
                            blend_positions[2] = 0.51f;
                            blend_positions[3] = 1.0f;
                        }

                        ColorBlend color_blend = new ColorBlend();
                        color_blend.Colors    = colors;
                        color_blend.Positions = blend_positions;
                        the__split_brush.InterpolationColors = color_blend;

                        bg_layer.Fill(the__split_brush);
                    }
                }

                if (Properties.ShowGoalExplosion)
                {
                    if (rlstate.Match.YourTeam_LastScore < (rlstate.Player.Team == PlayerTeam.Blue ? rlstate.Match.BlueTeam_Score
                                                                                     : rlstate.Match.OrangeTeam_Score))
                    {
                        goal_explosion_track.SetFrame(0.0f,
                                                      new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4)
                                                      );
                        goal_explosion_track.SetFrame(1.0f,
                                                      new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4)
                                                      );

                        goal_explosion_track_1.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4)
                                                        );
                        goal_explosion_track_1.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4)
                                                        );

                        goal_explosion_track_2.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4)
                                                        );
                        goal_explosion_track_2.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4)
                                                        );

                        goal_explosion_track_3.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4)
                                                        );
                        goal_explosion_track_3.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4)
                                                        );

                        goal_explosion_track_4.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4)
                                                        );
                        goal_explosion_track_4.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4)
                                                        );

                        goal_explosion_mix.Clear();
                        showAnimation_Explosion = true;
                    }
                }

                if (Properties.ShowEnemyExplosion)
                {
                    if (rlstate.Match.EnemyTeam_LastScore < (rlstate.Player.Team == PlayerTeam.Orange ? rlstate.Match.BlueTeam_Score
                                                                                 : rlstate.Match.OrangeTeam_Score))
                    {
                        goal_explosion_track.SetFrame(0.0f,
                                                      new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4)
                                                      );
                        goal_explosion_track.SetFrame(1.0f,
                                                      new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4)
                                                      );

                        goal_explosion_track_1.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4)
                                                        );
                        goal_explosion_track_1.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4)
                                                        );

                        goal_explosion_track_2.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4)
                                                        );
                        goal_explosion_track_2.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4)
                                                        );

                        goal_explosion_track_3.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4)
                                                        );
                        goal_explosion_track_3.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4)
                                                        );

                        goal_explosion_track_4.SetFrame(0.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4)
                                                        );
                        goal_explosion_track_4.SetFrame(1.0f,
                                                        new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4)
                                                        );

                        goal_explosion_mix.Clear();
                        showAnimation_Explosion = true;
                    }
                }

                if (showAnimation_Explosion)
                {
                    bg_layer.Fill(Color.FromArgb(0, 0, 0));
                    goal_explosion_mix.AddTrack(goal_explosion_track);
                    goal_explosion_mix.AddTrack(goal_explosion_track_1);
                    goal_explosion_mix.AddTrack(goal_explosion_track_2);
                    goal_explosion_mix.AddTrack(goal_explosion_track_3);
                    goal_explosion_mix.AddTrack(goal_explosion_track_4);

                    goal_explosion_mix.Draw(bg_layer.GetGraphics(), goalEffect_keyframe);
                    goalEffect_keyframe += (currenttime - previoustime) / 1000.0f;

                    if (goalEffect_keyframe >= goalEffect_animationTime)
                    {
                        showAnimation_Explosion = false;
                        goalEffect_keyframe     = 0;
                    }
                }
            }
            return(bg_layer);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            AnimationMix   sandking_epicenter_mix   = new AnimationMix();
            AnimationTrack sandking_epicenter_wave0 = new AnimationTrack("Sandsking Epicenter Wave0", 0.5f);

            sandking_epicenter_wave0.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(115, 255, 0), 4)
                                              );
            sandking_epicenter_wave0.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(115, 255, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave1 = new AnimationTrack("Sandsking Epicenter Wave1", 0.5f, 2.0f);

            sandking_epicenter_wave1.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave1.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave2 = new AnimationTrack("Sandsking Epicenter Wave2", 0.5f, 2.16f);

            sandking_epicenter_wave2.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave2.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave3 = new AnimationTrack("Sandsking Epicenter Wave3", 0.5f, 2.32f);

            sandking_epicenter_wave3.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave3.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave4 = new AnimationTrack("Sandsking Epicenter Wave4", 0.5f, 2.48f);

            sandking_epicenter_wave4.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave4.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave5 = new AnimationTrack("Sandsking Epicenter Wave5", 0.5f, 2.64f);

            sandking_epicenter_wave5.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave5.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave6 = new AnimationTrack("Sandsking Epicenter Wave6", 0.5f, 2.8f);

            sandking_epicenter_wave6.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave6.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave7 = new AnimationTrack("Sandsking Epicenter Wave7", 0.5f, 2.96f);

            sandking_epicenter_wave7.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave7.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave8 = new AnimationTrack("Sandsking Epicenter Wave8", 0.5f, 3.12f);

            sandking_epicenter_wave8.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave8.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave9 = new AnimationTrack("Sandsking Epicenter Wave9", 0.5f, 3.28f);

            sandking_epicenter_wave9.SetFrame(0.0f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );
            sandking_epicenter_wave9.SetFrame(0.5f,
                                              new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                              );

            AnimationTrack sandking_epicenter_wave10 = new AnimationTrack("Sandsking Epicenter Wave10", 0.5f, 3.44f);

            sandking_epicenter_wave10.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave10.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave11 = new AnimationTrack("Sandsking Epicenter Wave11", 0.5f, 3.6f);

            sandking_epicenter_wave11.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave11.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            AnimationTrack sandking_epicenter_wave12 = new AnimationTrack("Sandsking Epicenter Wave12", 0.5f, 3.76f);

            sandking_epicenter_wave12.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave12.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave13 = new AnimationTrack("Sandsking Epicenter Wave13", 0.5f, 3.92f);

            sandking_epicenter_wave13.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave13.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave14 = new AnimationTrack("Sandsking Epicenter Wave14", 0.5f, 4.08f);

            sandking_epicenter_wave14.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave14.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave15 = new AnimationTrack("Sandsking Epicenter Wave15", 0.5f, 4.24f);

            sandking_epicenter_wave15.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave15.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave16 = new AnimationTrack("Sandsking Epicenter Wave16", 0.5f, 4.4f);

            sandking_epicenter_wave16.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave16.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave17 = new AnimationTrack("Sandsking Epicenter Wave17", 0.5f, 4.56f);

            sandking_epicenter_wave17.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave17.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave18 = new AnimationTrack("Sandsking Epicenter Wave18", 0.5f, 4.72f);

            sandking_epicenter_wave18.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave18.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave19 = new AnimationTrack("Sandsking Epicenter Wave19", 0.5f, 4.88f);

            sandking_epicenter_wave19.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave19.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            AnimationTrack sandking_epicenter_wave20 = new AnimationTrack("Sandsking Epicenter Wave20", 0.5f, 5f);

            sandking_epicenter_wave20.SetFrame(0.0f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, 0, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );
            sandking_epicenter_wave20.SetFrame(0.5f,
                                               new AnimationCircle(Effects.canvas_width_center, Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, System.Drawing.Color.FromArgb(255, 160, 0), 4)
                                               );

            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave0);

            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave1);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave2);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave3);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave4);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave5);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave6);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave7);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave8);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave9);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave10);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave11);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave12);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave13);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave14);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave15);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave16);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave17);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave18);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave19);
            sandking_epicenter_mix.AddTrack(sandking_epicenter_wave20);


            Window win = new Window();

            win.Content = new Controls.Control_AnimationEditor()
            {
                AnimationMix = sandking_epicenter_mix
            };
            win.Background = new SolidColorBrush(Color.FromRgb(0, 0, 0));
            win.Show();
        }