--- 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;
+ }
}
}