public override void Update()
    {
        foreach (Agent a in data.Agents)
        {
            a.Update();
        }

        if (!mouseClickUsable) // ugly placement for custom mouse click delay
        {
            mouseClickDelay -= data.Time.deltaTime;
            if (mouseClickDelay <= 0)
            {
                mouseClickUsable = true;
                mouseClickDelay  = 0.25f;
            }
        }

        if (Mouse.IsButtonPressed(Mouse.Button.Left) && mouseClickUsable) // check for toggle or print button clicks
        {
            mouseClickUsable = false;
            ToggleButton ClickedToggleButton = ToggleButton.GetToggleButtonClicked();
            if (ClickedToggleButton != null)
            {
                ClickedToggleButton.ChangeToggleStatus(!ClickedToggleButton.IsToggled);
                switch (ClickedToggleButton.ToggleOption)
                {
                case ToggleButton.ToggleOptions.ToggleAgents:
                {
                    data.RenderAgents = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleEnvironment:
                {
                    renderEnv = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleSpawns:
                {
                    data.RenderSpawn = ClickedToggleButton.IsToggled;
                    break;
                }

                case ToggleButton.ToggleOptions.ToggleTrails:
                {
                    renderTra = ClickedToggleButton.IsToggled;
                    break;
                }
                }
            }
            else
            {
                Button ClickedButton = Button.GetButtonClicked();
                if (ClickedButton != null)
                {
                    if (ClickedButton.Function == Button.ButtonFunctions.PrintPDF)
                    {
                        string thePath;
                        FolderBrowserDialog FBD = new FolderBrowserDialog();
                        if (FBD.ShowDialog() == DialogResult.OK)
                        {
                            thePath = FBD.SelectedPath;
                        }
                        else
                        {
                            thePath = "NULL";
                        }
                        PrintResults(thePath);
                    }
                    else if (ClickedButton.Function == Button.ButtonFunctions.ExitSim)
                    {
                        data.Input.EscapeKeyPressed = true;
                    }
                }
            }
        }

        //if(data.Input.CheckKeyPressed(Keyboard.Key.A))
        //{
        //    data.RenderAgents = !data.RenderAgents;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.S))
        //{
        //    data.RenderSpawn = !data.RenderSpawn;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.E))
        //{
        //    renderEnv = !renderEnv;
        //}

        //if(data.Input.CheckKeyPressed(Keyboard.Key.T))
        //{
        //    renderTra = !renderTra;
        //}


        if (renderEnv)
        {
            data.Graphics.ProgramDisplayTexture.Draw(SEnv, new RenderStates(BlendMode.Add));
        }

        if (renderTra)
        {
            TTra.Update(data.Trails);

            data.Graphics.ProgramDisplayTexture.Draw(STra, new RenderStates(BlendMode.Add));
        }


        data.Graphics.ProgramDisplayTexture.Display();
    }