diff -r 925b7ee746e3 -r a1bf0d21022e middleware/src/Tracking/KinectMain.cs --- a/middleware/src/Tracking/KinectMain.cs Fri Mar 23 16:24:36 2012 +0100 +++ b/middleware/src/Tracking/KinectMain.cs Mon Mar 26 16:22:51 2012 +0200 @@ -67,6 +67,8 @@ public delegate void JumpHandler(object o, JumpEventArgs e); //Il s'agit de la fonction permettant d'appeler les fonctions des événements de proximité. public delegate void UserPositionHandler(object o, UserPositionEventArgs e); + //Il s'agit de la fonctoin permettant de notifier le serveur en cas de changement de mode. + public delegate void ModChangeHandler(object o, ModChangeEventArgs e); public class KinectMain { @@ -94,6 +96,7 @@ private float minDist; private float maxDist; private float zeroPoint; + private int imagesToShow; //Temps de rafraichissement pour le timer (Détection de gesture dans le serveur TUIO). private int timerElapsing; @@ -114,6 +117,8 @@ public static event JumpHandler JumpEvent; //L'événement l'utilisateur se déplace dans la zone de détection. public static event UserPositionHandler UserPositionEvent; + //L'événement on change de mode. + public static event ModChangeHandler ModChangeEvent; private string connexionHost; private int connexionPort; @@ -142,6 +147,7 @@ connexionHost = "127.0.0.1"; connexionPort = 80; timerElapsing = 1000; + imagesToShow = 25; } //On crée la fenêtre de debug. @@ -239,6 +245,10 @@ UserPositionListener userPositionListener = new UserPositionListener(); UserPositionEvent += new UserPositionHandler(userPositionListener.ShowOnScreen); + //Fonction appelée lorsqu'on change de mode. + ModChangeListener modChangeListener = new ModChangeListener(); + ModChangeEvent += new ModChangeHandler(modChangeListener.ShowOnScreen); + //On connecte le serveur à l'adresse locale sur le port 80. server = new Server(connexionHost, connexionPort, timerElapsing, debug); } @@ -447,15 +457,15 @@ if (first.TrackingState == SkeletonTrackingState.Tracked) { float proximity = userPositionDetector.CalcProximity(first.Position.Z); + int numberOfImages = userPositionDetector.ImagesToShow(proximity, imagesToShow); if (proximity > 0f) { - UserPositionEventArgs userPositionEvent = new UserPositionEventArgs(debug, server, proximity); + UserPositionEventArgs userPositionEvent = new UserPositionEventArgs(debug, server, proximity, numberOfImages); OnUserPositionEvent(userPositionEvent); } else { - Console.Out.WriteLine("FAIL"); debug.hideSkeleton(); } } @@ -550,6 +560,15 @@ } /* + * Initialise l'événement et fait appel aux fonctions du listener quand on change de mode. + */ + public static void OnModChangeEvent(ModChangeEventArgs e) + { + if (ModChangeEvent != null) + ModChangeEvent(new object(), e); + } + + /* * Méthode de chargement des paramètres (position du champ de recherche...). */ public bool loadParameters() @@ -564,6 +583,7 @@ connexionHost = ConfigurationManager.AppSettings["connexionHost"]; connexionPort = int.Parse(ConfigurationManager.AppSettings["connexionPort"]); timerElapsing = int.Parse(ConfigurationManager.AppSettings["timerElapsing"]); + imagesToShow = int.Parse(ConfigurationManager.AppSettings["imagesToShow"]); } catch (Exception) { @@ -572,7 +592,7 @@ if (maxDistHands <= 0f || minDistHands <= 0f || maxDistHands > maxDist || minDistHands > maxDist || minDistHands >= maxDistHands || zeroPoint < maxDistHands || minDistHands < minDist || - zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0) + zeroPoint >= maxDist || connexionPort < 0 || timerElapsing < 0 || imagesToShow < 1) { debug.ExceptionLbl.Content = rm.GetString("loadParametersIncorrect"); return false; @@ -606,6 +626,8 @@ config.AppSettings.Settings.Add("connexionPort", connexionPort.ToString()); config.AppSettings.Settings.Remove("timerElapsing"); config.AppSettings.Settings.Add("timerElapsing", timerElapsing.ToString()); + config.AppSettings.Settings.Remove("imagesToShow"); + config.AppSettings.Settings.Add("imagesToShow", imagesToShow.ToString()); //Sauvegarde la configuration. config.Save(ConfigurationSaveMode.Modified); @@ -623,6 +645,18 @@ { maxDistHands = max; } + public void setMinDist(float min) + { + minDist = min; + } + public void setMaxDist(float max) + { + maxDist = max; + } + public void setZeroPoint(float zero) + { + zeroPoint = zero; + } public void setConnexionHost(String host) { connexionHost = host; @@ -635,6 +669,10 @@ { timerElapsing = time; } + public void setImagesToShow(int _imagesToShow) + { + imagesToShow = _imagesToShow; + } public float getMinDistHands() { @@ -644,6 +682,18 @@ { return maxDistHands; } + public float getMinDist() + { + return minDist; + } + public float getMaxDist() + { + return maxDist; + } + public float getZeroPoint() + { + return zeroPoint; + } public String getConnexionHost() { return connexionHost; @@ -656,5 +706,9 @@ { return timerElapsing; } + public int getImagesToShow() + { + return imagesToShow; + } } }