middleware/Debug/DebugWindow.xaml.cs
changeset 41 d2f735d7763f
parent 37 37ebedd84755
child 49 1c2834888adc
--- a/middleware/Debug/DebugWindow.xaml.cs	Thu Jun 21 17:51:27 2012 +0200
+++ b/middleware/Debug/DebugWindow.xaml.cs	Fri Jun 29 15:37:26 2012 +0200
@@ -32,6 +32,7 @@
 using System.Timers;
 using System.Configuration;
 using System.IO;
+using System.Collections.Specialized;
 
 namespace Trakers.Debug
 {
@@ -41,22 +42,8 @@
         private ResourceManager rm;
 
         //Paramètres du serveur TUIO.
-        private string connexionHost;
-        private int connexionPort;
-        //Temps de rafraichissement pour le timer (Détection de gesture dans le serveur TUIO).
-        private int timerElapsing;
-        //Distances min/max délimitant le champ de recherche.
-        private float minDistHands;
-        private float maxDistHands;
-        private float minDist;
-        private float maxDist;
-        private float zeroPoint;
-        //Paramètres de la mosaïque.
-        private int imagesToShow;
-        //Paramètres de la recherche par courbes.
-        private int takenPoints;
-        private int directionChangeTresholdXY;
-        private float directionChangeTresholdZ;
+        private OrderedDictionary config;
+
         //Images
         private String imgLocation;
 
@@ -72,8 +59,6 @@
         private bool closing;
         //Indique si l'image doit être raffraichie.
         private Boolean refreshImage;
-        //Fenêtre de paramètres
-        private DebugParameters param;
 
         /*
         * Constructeur : Affiche la fenêtre de debug en lui passant en paramètre une instanciation de la
@@ -86,6 +71,8 @@
 
             imgLocation = "Imgs";
 
+            config = new OrderedDictionary();
+
             //On fait appel au gestionnaire de ressources.
             rm = new ResourceManager("Trakers.Debug.Properties.Resources", Assembly.GetExecutingAssembly());
             //On tente de charger les paramètres du fichier params.ini.
@@ -93,44 +80,33 @@
             if (!loadParameters())
             {
                 ExceptionLbl.Content = rm.GetString("loadParametersFail");
+                config.Clear();
                 //Distances de détection des mains par défaut pour la recherche (ici de 1m à 2m de la Kinect).
-                minDistHands = 1.0f;
-                maxDistHands = 1.5f;
-                minDist = 1.0f;
-                maxDist = 4.0f;
-                zeroPoint = 1.7f;
-                connexionHost = "127.0.0.1";
-                connexionPort = 80;
-                timerElapsing = 1000;
-                imagesToShow = 20;
-                takenPoints = 10;
-                directionChangeTresholdXY = 10;
-                directionChangeTresholdZ = 0.01f;
-                /*minDistHands = 1.0f;
-                maxDistHands = 5.5f;
-                minDist = 1.0f;
-                maxDist = 6.0f;
-                zeroPoint = 1.7f;
-                connexionHost = "127.0.0.1";
-                connexionPort = 80;
-                timerElapsing = 1000;
-                imagesToShow = 25;
-                takenPoints = 10;
-                directionChangeTresholdXY = 10;
-                directionChangeTresholdZ = 0.01f;*/
+                config.Add("minDistHands", 1.0f);
+                config.Add("maxDistHands", 1.5f);
+                config.Add("minDist", 1.0f);
+                config.Add("maxDist", 4.0f);
+                config.Add("zeroPoint", 1.7f);
+                config.Add("tuioConnexionHost", "127.0.0.1");
+                config.Add("tuioConnexionPort", 80);
+                config.Add("wsConnexionHost", "127.0.0.1");
+                config.Add("wsConnexionPort", 81);
+                config.Add("tuioTimerElapsing", 1000);
+                config.Add("wsTimerElapsing", 1000);
+                config.Add("imagesToShow", 20);
+                config.Add("takenPoints", 10);
+                config.Add("directionChangeTresholdXY", 10);
+                config.Add("directionChangeTresholdZ", 0.01f);
             }
 
-            //On charge la fenêtre de paramètres.
-            param = new DebugParameters(this);
-
             //kinectMain = main;
             on = true;
             closing = false;
             refreshImage = true;
             try
             {
-                //On instancie le timer à N ms.
-                _timer = new System.Timers.Timer(timerElapsing);
+                //On instancie les timers à N ms.
+                _timer = new System.Timers.Timer((int)config["tuioTimerElapsing"]);
                 //Dès que le timer est expiré, on appelle _timer_Elapsed.
                 _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
             }
@@ -163,7 +139,7 @@
         }
 
         /*
-         * Méthode appelée à l'expiration du timer pour les gestures et modes.
+         * Méthode appelée à l'expiration du timer ws pour les gestures et modes.
          */
         public void _timer_Elapsed(object sender, ElapsedEventArgs e)
         {
@@ -268,64 +244,6 @@
             }
         }
 
-        /*public void showCorrect(bool C1, bool C2, bool C3, bool C4, bool C5, bool C6, bool C7, bool C8, bool C9, bool C10, bool C11)
-        {
-            if(C1)
-                R0.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R0.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C2)
-                R1.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R1.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C3)
-                R2.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R2.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C4)
-                R3.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R3.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C5)
-                R4.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R4.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C6)
-                R5.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R5.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C7)
-                R6.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R6.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C8)
-                R7.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R7.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C9)
-                R8.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R8.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C10)
-                R9.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R9.Fill = System.Windows.Media.Brushes.DarkGray;
-
-            if (C11)
-                R10.Fill = System.Windows.Media.Brushes.Blue;
-            else
-                R10.Fill = System.Windows.Media.Brushes.DarkGray;
-        }*/
-
         /*
         * Affiche la distance de l'utilisateur dans le rendu visuel.
         * Sous forme de nombre en m et de rectangles changeant de couleur en fonction de la distance.
@@ -652,21 +570,6 @@
         }
 
         /*
-         * Méthode associée à l'événement : Ouvrir la fenêtre de paramétrage via le menu.
-         */
-        private void Parameters_Click(object sender, RoutedEventArgs e)
-        {
-            try
-            {
-                param.ShowDialog();
-            }
-            catch (Exception)
-            {
-                ExceptionLbl.Content = rm.GetString("loadParamFail");
-            }
-        }
-
-        /*
          * Méthode associée à l'événement : Quitter via le menu.
          */
         public void Quit_Click(object sender, RoutedEventArgs e)
@@ -773,62 +676,65 @@
         }
 
         /*
-        *  Méthode de chargement des paramètres (position du champ de recherche...).
-        */
-        /*public bool loadParameters()
-        {
-            try
-            {
-                minDistHands = Properties.Settings.Default.searchMinDistance;
-                maxDistHands = Properties.Settings.Default.searchMaxDistance;
-                minDist = Properties.Settings.Default.minDistance;
-                maxDist = Properties.Settings.Default.maxDistance;
-                zeroPoint = Properties.Settings.Default.zeroPoint;
-                connexionHost = Properties.Settings.Default.connexionHost;
-                connexionPort = Properties.Settings.Default.connexionPort;
-                timerElapsing = Properties.Settings.Default.timerElapsing;
-                imagesToShow = Properties.Settings.Default.imagesToShow;
-                takenPoints = Properties.Settings.Default.takenPoints;
-                directionChangeTresholdXY = Properties.Settings.Default.directionChangeTresholdXY;
-                directionChangeTresholdZ = Properties.Settings.Default.directionChangeTresholdZ;
-            }
-            catch (Exception)
-            {
-                return false;
-            }
-
-            if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
-                minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands > minDist ||
-                zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1 ||
-                takenPoints <= 0 || directionChangeTresholdXY < 0 || directionChangeTresholdZ < 0)
-            {
-                ExceptionLbl.Content = rm.GetString("loadParametersIncorrect");
-                return false;
-            }
-            return true;
-        }*/
-
+         * Méthode de chargement des paramètres via le fichier de configuration.
+         */
         public bool loadParameters()
         {
             try
             {
+                //On lit le fichier de config.
                 String[] lines = System.IO.File.ReadAllLines("config.txt");
 
-                minDistHands = float.Parse(lines[0].Split(':')[1]);
-                minDist = float.Parse(lines[1].Split(':')[1]);
-                connexionHost = lines[2].Split(':')[1];
-                timerElapsing = int.Parse(lines[3].Split(':')[1]);
-                takenPoints = int.Parse(lines[4].Split(':')[1]);
-                directionChangeTresholdXY = int.Parse(lines[5].Split(':')[1]);
-                connexionPort = int.Parse(lines[6].Split(':')[1]);
-                imagesToShow = int.Parse(lines[7].Split(':')[1]);
-                maxDistHands = float.Parse(lines[8].Split(':')[1]);
-                maxDist = float.Parse(lines[9].Split(':')[1]);
-                zeroPoint = float.Parse(lines[10].Split(':')[1]);
-                directionChangeTresholdZ = float.Parse(lines[11].Split(':')[1]);
+                //On repère les paramètres supposés être des int ou float de manière à les parser.
+                String[] ints = { "tuioConnexionPort", "wsConnexionPort", "takenPoints", "tuioTimerElapsing", "wsTimerElapsing", "directionChangeTresholdXY", "imagesToShow" };
+                String[] floats = { "minDistHands", "minDist", "maxDistHands", "maxDist", "zeroPoint", "directionChangeTresholdZ" };
+
+                //Indique si on a affecté le paramètre actuel.
+                bool goToNextParam = false;
+
+                //Pour chaque ligne du fichier de config.
+                for (int i = 0 ; i < lines.Length ; i++)
+                {
+                    //On récupère la clé et la valeur.
+                    String key = lines[i].Split(':')[0];
+                    String value = lines[i].Split(':')[1];
+
+                    //Si c'est un int on le parse.
+                    for (int j = 0 ; j < ints.Length ; j++)
+                    {
+                        if (ints[j] == key)
+                        {
+                            config.Add(key, int.Parse(value));
+                            goToNextParam = true;
+                        }
+                    }
+
+                    //Si il n'était pas un int.
+                    if (!goToNextParam)
+                    {
+                        //Si c'est un float on le parse.
+                        for (int j = 0; j < floats.Length; j++)
+                        {
+                            if (floats[j] == key)
+                            {
+                                config.Add(key, float.Parse(value));
+                                goToNextParam = true;
+                            }
+                        }
+
+                        //Si c'était en fait un string.
+                        if (!goToNextParam)
+                        {
+                            config.Add(key, value);
+                        }
+                    }
+                    goToNextParam = false;
+                }
             }
+            //S'il s'est passé un problème durant la lecture du fichier de config.
             catch (Exception e)
             {
+                //On génère un fichier qui va afficher l'erreur.
                 StreamWriter SW;
                 try
                 {
@@ -841,31 +747,35 @@
                 return false;
             }
 
-            if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist ||
-                minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands > minDist ||
-                zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1 ||
-                takenPoints <= 0 || directionChangeTresholdXY < 0 || directionChangeTresholdZ < 0)
+            //Si l'extraction s'est bien passé mais que les paramètres sont incohérents.
+            if ((float)config["maxDistHands"] <= 0f || (float)config["minDistHands"] <= 0f || (float)config["maxDistHands"] > (float)config["maxDist"] || (float)config["minDistHands"] > (float)config["maxDist"] ||
+                (float)config["minDistHands"] >= (float)config["maxDistHands"] || (float)config["zeroPoint"] < (float)config["maxDistHands"] || (float)config["minDistHands"] > (float)config["minDist"] ||
+                (float)config["zeroPoint"] >= (float)config["maxDist"] || (int)config["tuioConnexionPort"] < 0 || (int)config["wsConnexionPort"] < 0 || (int)config["tuioTimerElapsing"] < 0 || (int)config["wsTimerElapsing"] < 0 || (int)config["imagesToShow"] < 1 ||
+                (int)config["takenPoints"] <= 0 || (int)config["directionChangeTresholdXY"] < 0 || (float)config["directionChangeTresholdZ"] < 0)
             {
                 ExceptionLbl.Content = rm.GetString("loadParametersIncorrect");
 
                 StreamWriter SW;
                 try
                 {
+                    //On indique les incohérences trouvées dans le fichier.
                     SW = File.CreateText("ErrorFile.txt");
-                    if (maxDistHands <= 0f) { SW.WriteLine("searchMaxDistance <= 0"); }
-                    if (minDistHands <= 0f) { SW.WriteLine("minDistance <= 0"); }
-                    if (maxDistHands > maxDist) { SW.WriteLine("searchMaxDistance > maxDistance"); }
-                    if (minDistHands > maxDist) { SW.WriteLine("searchMinDistance > maxDistance"); }
-                    if (minDistHands >= maxDistHands) { SW.WriteLine("searchMinDistance >= searchMaxDistance"); }
-                    if (zeroPoint < maxDistHands) { SW.WriteLine("zeroPoint < searchMaxDistance"); }
-                    if (minDistHands > minDist) { SW.WriteLine("searchMinDistance > minDistance"); }
-                    if (zeroPoint >= maxDist) { SW.WriteLine("zeroPoint >= maxDistance"); }
-                    if (connexionPort < 0) { SW.WriteLine("connexionPort < 0"); }
-                    if (timerElapsing < 0) { SW.WriteLine("timerElapsing < 0"); }
-                    if (imagesToShow < 1) { SW.WriteLine("imagesToShow < 1"); }
-                    if (takenPoints <= 0) { SW.WriteLine("takenPoints <= 0"); }
-                    if (directionChangeTresholdXY < 0) { SW.WriteLine("directionChangeTresholdXY < 0"); }
-                    if (directionChangeTresholdZ < 0) { SW.WriteLine("directionChangeTresholdZ < 0"); }
+                    if ((float)config["maxDistHands"] <= 0f) { SW.WriteLine("searchMaxDistance <= 0"); }
+                    if ((float)config["minDistHands"] <= 0f) { SW.WriteLine("minDistance <= 0"); }
+                    if ((float)config["maxDistHands"] > (float)config["maxDist"]) { SW.WriteLine("searchMaxDistance > maxDistance"); }
+                    if ((float)config["minDistHands"] > (float)config["maxDist"]) { SW.WriteLine("searchMinDistance > maxDistance"); }
+                    if ((float)config["minDistHands"] >= (float)config["maxDistHands"]) { SW.WriteLine("searchMinDistance >= searchMaxDistance"); }
+                    if ((float)config["zeroPoint"] < (float)config["maxDistHands"]) { SW.WriteLine("zeroPoint < searchMaxDistance"); }
+                    if ((float)config["minDistHands"] > (float)config["minDist"]) { SW.WriteLine("searchMinDistance > minDistance"); }
+                    if ((float)config["zeroPoint"] >= (float)config["maxDist"]) { SW.WriteLine("zeroPoint >= maxDistance"); }
+                    if ((int)config["tuioConnexionPort"] < 0) { SW.WriteLine("tuioConnexionPort < 0"); }
+                    if ((int)config["wsConnexionPort"] < 0) { SW.WriteLine("wsConnexionPort < 0"); }
+                    if ((int)config["tuioTimerElapsing"] < 0) { SW.WriteLine("tuioTimerElapsing < 0"); }
+                    if ((int)config["wsTimerElapsing"] < 0) { SW.WriteLine("wsTimerElapsing < 0"); }
+                    if ((int)config["imagesToShow"] < 1) { SW.WriteLine("imagesToShow < 1"); }
+                    if ((int)config["takenPoints"] <= 0) { SW.WriteLine("takenPoints <= 0"); }
+                    if ((int)config["directionChangeTresholdXY"] < 0) { SW.WriteLine("directionChangeTresholdXY < 0"); }
+                    if ((float)config["directionChangeTresholdZ"] < 0) { SW.WriteLine("directionChangeTresholdZ < 0"); }
                     SW.Close();
                     Console.WriteLine("Error File Created SucacessFully");
                 }
@@ -877,96 +787,67 @@
         }
 
         /*
-         * Met à jour les nouveaux paramètres dans la configuration.
-         */
-        public void updateParameters()
-        {
-            //userPositionDetector.setParams(minDist, maxDist, minDistHands, maxDistHands, zeroPoint);
-            //segmenter.setParams(takenPoints, directionChangeTresholdXY, directionChangeTresholdZ);
-
-            //On récupère la config.
-            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
-            //On met à jour.
-            Properties.Settings.Default.Context.Remove("searchMinDistance");
-            Properties.Settings.Default.Context.Add("searchMinDistance", minDistHands.ToString());
-            Properties.Settings.Default.Context.Remove("searchMaxDistance");
-            Properties.Settings.Default.Context.Add("searchMaxDistance", maxDistHands.ToString());
-            Properties.Settings.Default.Context.Remove("minDistance");
-            Properties.Settings.Default.Context.Add("minDistance", minDist.ToString());
-            Properties.Settings.Default.Context.Remove("maxDistance");
-            Properties.Settings.Default.Context.Add("maxDistance", maxDist.ToString());
-            Properties.Settings.Default.Context.Remove("zeroPoint");
-            Properties.Settings.Default.Context.Add("zeroPoint", zeroPoint.ToString());
-            Properties.Settings.Default.Context.Remove("connexionHost");
-            Properties.Settings.Default.Context.Add("connexionHost", connexionHost);
-            Properties.Settings.Default.Context.Remove("connexionPort");
-            Properties.Settings.Default.Context.Add("connexionPort", connexionPort.ToString());
-            Properties.Settings.Default.Context.Remove("timerElapsing");
-            Properties.Settings.Default.Context.Add("timerElapsing", timerElapsing.ToString());
-            Properties.Settings.Default.Context.Remove("imagesToShow");
-            Properties.Settings.Default.Context.Add("imagesToShow", imagesToShow.ToString());
-            Properties.Settings.Default.Context.Remove("takenPoints");
-            Properties.Settings.Default.Context.Add("takenPoints", takenPoints.ToString());
-            Properties.Settings.Default.Context.Remove("directionChangeTresholdXY");
-            Properties.Settings.Default.Context.Add("directionChangeTresholdXY", directionChangeTresholdXY.ToString());
-            Properties.Settings.Default.Context.Remove("directionChangeTresholdZ");
-            Properties.Settings.Default.Context.Add("directionChangeTresholdZ", directionChangeTresholdZ.ToString());
-
-            //Sauvegarde la configuration.
-            Properties.Settings.Default.Save();
-            Properties.Settings.Default.Reload();
-        }
-
-        /*
          * Getters et setters des paramètres du Middleware.
          */
         public void setMinDistHands(float min)
         {
-            minDistHands = min;
+            config["minDistHands"] = min;
         }
         public void setMaxDistHands(float max)
         {
-            maxDistHands = max;
+            config["maxDistHands"] = max;
         }
         public void setMinDist(float min)
         {
-            minDist = min;
+            config["minDist"] = min;
         }
         public void setMaxDist(float max)
         {
-            maxDist = max;
+            config["maxDist"] = max;
         }
         public void setZeroPoint(float zero)
         {
-            zeroPoint = zero;
+            config["zeroPoint"] = zero;
         }
-        public void setConnexionHost(String host)
+        public void setTuioConnexionHost(String host)
         {
-            connexionHost = host;
+            config["tuioConnexionHost"] = host;
+        }
+        public void setTuioConnexionPort(int port)
+        {
+            config["tuioConnexionPort"] = port;
         }
-        public void setConnexionPort(int port)
+        public void setWsConnexionHost(String host)
         {
-            connexionPort = port;
+            config["wsConnexionHost"] = host;
+        }
+        public void setWsConnexionPort(int port)
+        {
+            config["wsConnexionPort"] = port;
         }
-        public void setTimerElapsing(int time)
+        public void setTuioTimerElapsing(int time)
         {
-            timerElapsing = time;
+            config["tuioTimerElapsing"] = time;
+        }
+        public void setWsTimerElapsing(int time)
+        {
+            config["wsTimerElapsing"] = time;
         }
         public void setImagesToShow(int _imagesToShow)
         {
-            imagesToShow = _imagesToShow;
+            config["imagesToShow"] = _imagesToShow;
         }
         public void setTakenPoints(int _takenPoints)
         {
-            takenPoints = _takenPoints;
+            config["takenPoints"] = _takenPoints;
         }
         public void setDirectionChangeTresholdXY(int _directionChangeTresholdXY)
         {
-            directionChangeTresholdXY = _directionChangeTresholdXY;
+            config["directionChangeTresholdXY"] = _directionChangeTresholdXY;
         }
         public void setDirectionChangeTresholdZ(float _directionChangeTresholdZ)
         {
-            directionChangeTresholdZ = _directionChangeTresholdZ;
+            config["directionChangeTresholdZ"] = _directionChangeTresholdZ;
         }
         public void setSwitch(Button _switch)
         {
@@ -976,66 +857,66 @@
         {
             on = _on;
         }
-        /*public void setQuitMenu(MenuItem quitMenu)
-        {
-            QuitMenu = quitMenu;
-        }
-        public void setParametersWindow(DebugParameters parameters)
-        {
-            param = parameters;
-        }
-        public void setParamMenu(MenuItem parameters)
-        {
-            ParamMenu = parameters;
-        }*/
-
+        
         public float getMinDistHands()
         {
-            return minDistHands;
+            return (float)config["minDistHands"];
         }
         public float getMaxDistHands()
         {
-            return maxDistHands;
+            return (float)config["maxDistHands"];
         }
         public float getMinDist()
         {
-            return minDist;
+            return (float)config["minDist"];
         }
         public float getMaxDist()
         {
-            return maxDist;
+            return (float)config["maxDist"];
         }
         public float getZeroPoint()
         {
-            return zeroPoint;
+            return (float)config["zeroPoint"];
         }
-        public String getConnexionHost()
+        public String getTuioConnexionHost()
         {
-            return connexionHost;
+            return (String)config["tuioConnexionHost"];
+        }
+        public int getTuioConnexionPort()
+        {
+            return (int)config["tuioConnexionPort"];
         }
-        public int getConnexionPort()
+        public int getTuioTimerElapsing()
         {
-            return connexionPort;
+            return (int)config["tuioTimerElapsing"];
+        }
+        public String getWsConnexionHost()
+        {
+            return (String)config["wsConnexionHost"];
         }
-        public int getTimerElapsing()
+        public int getWsConnexionPort()
         {
-            return timerElapsing;
+            return (int)config["wsConnexionPort"];
+        }
+        public int getWsTimerElapsing()
+        {
+            return (int)config["wsTimerElapsing"];
         }
         public int getImagesToShow()
         {
-            return imagesToShow;
+            return (int)config["imagesToShow"];
         }
         public int getTakenPoints()
         {
-            return takenPoints;
+            return (int)config["takenPoints"];
         }
         public int getDirectionChangeTresholdXY()
         {
-            return directionChangeTresholdXY;
+            return (int)config["directionChangeTresholdXY"];
         }
         public float getDirectionChangeTresholdZ()
         {
-            return directionChangeTresholdZ;
+            return (float)config["directionChangeTresholdZ"];
         }
         public Button getSwitch()
         {
@@ -1045,18 +926,6 @@
         {
             return on;
         }
-        /*public MenuItem getQuitMenu()
-        {
-            return QuitMenu;
-        }
-        public DebugParameters getParametersWindow()
-        {
-            return param;
-        }
-        public MenuItem getParamMenu()
-        {
-            return ParamMenu;
-        }*/
 
         public void onR0(bool b)
         {