# HG changeset patch # User bastiena # Date 1333098854 -7200 # Node ID 10d5199d9874b5d757fabd71c23842d52549ceac # Parent 50de8e8f44d79ff7aa8081b5cc79db1dac50a772 Middleware : Mod transition stabilized. Order : NO_USER > USER_INCOMING > SHOWMOS_# > MOSAIC diff -r 50de8e8f44d7 -r 10d5199d9874 middleware/src/Communication/Server.cs --- a/middleware/src/Communication/Server.cs Thu Mar 29 14:39:21 2012 +0200 +++ b/middleware/src/Communication/Server.cs Fri Mar 30 11:14:14 2012 +0200 @@ -60,6 +60,8 @@ private System.Timers.Timer _timer; //Gestionnaire de ressources. private ResourceManager rm; + //Dernier code envoyé. + private String lastCode; /* * Constructeur : On initialise le serveur avec une adresse et un port, au début les curseurs @@ -76,6 +78,7 @@ messageCreated = false; gestureLocked = false; modLocked = false; + lastCode = ""; timerElapsing = _timerElapsing; @@ -220,6 +223,10 @@ */ public void GesturePerformed(String code) { + //Si le code vient d'être envoyé, on passe. + if (lastCode.Equals(code)) + return; + lastCode = code; //Si une gesture a été effectuée, on bloque un certain temps. if (!gestureLocked) { @@ -229,6 +236,7 @@ if (!messageCreated) { messageCreated = true; + Console.Out.WriteLine("A 2"); server.AddTuioString(2, code); //On démarre le timer. _timer.Start(); @@ -241,6 +249,10 @@ */ public void ModeNotification(String code) { + //Si le code vient d'être envoyé, on passe. + if (lastCode.Equals(code)) + return; + lastCode = code; //Si on a été notifié. if (!modLocked) { @@ -250,6 +262,7 @@ if (!messageCreated) { messageCreated = true; + Console.Out.WriteLine("A 3"); server.AddTuioString(2, code); //On démarre le timer. _timer.Start(); @@ -287,6 +300,8 @@ //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture. messageCreated = false; server.DeleteTuioString(2); + //server.DeleteTuioString(3); + Console.Out.WriteLine("R"); } } } diff -r 50de8e8f44d7 -r 10d5199d9874 middleware/src/Tracking/Events/UserPositionListener.cs --- a/middleware/src/Tracking/Events/UserPositionListener.cs Thu Mar 29 14:39:21 2012 +0200 +++ b/middleware/src/Tracking/Events/UserPositionListener.cs Fri Mar 30 11:14:14 2012 +0200 @@ -39,7 +39,8 @@ //On l'indique dans le debug. e.debug.showDistance(e.distance); //On notifie le serveur TUIO. - e.server.ModeNotification("MOSSHOW-" + e.imagesToShow); + if(e.distance > 10f && e.distance < 100f) + e.server.ModeNotification("MOSSHOW-" + e.imagesToShow); } } } diff -r 50de8e8f44d7 -r 10d5199d9874 middleware/src/Tracking/KinectMain.cs --- a/middleware/src/Tracking/KinectMain.cs Thu Mar 29 14:39:21 2012 +0200 +++ b/middleware/src/Tracking/KinectMain.cs Fri Mar 30 11:14:14 2012 +0200 @@ -256,6 +256,7 @@ //On crée le gestionnaire de modes. modeManagement = new ModeManagement(this, server, debug); + modeManagement.DetectProximityBasedModes(0); } /* @@ -464,16 +465,17 @@ float proximity = userPositionDetector.CalcProximity(first.Position.Z); int numberOfImages = userPositionDetector.ImagesToShow(proximity, imagesToShow); - modeManagement.DetectProximityBasedModes(proximity, numberOfImages); + modeManagement.DetectProximityBasedModes(proximity); if (proximity > 0f) { UserPositionEventArgs userPositionEvent = new UserPositionEventArgs(debug, server, proximity, numberOfImages); OnUserPositionEvent(userPositionEvent); } - else + else if(proximity < 10f) { debug.hideSkeleton(); + modeManagement.DetectProximityBasedModes(0); LeftHandQuitEventArgs leftHandQuitEvent = new LeftHandQuitEventArgs(debug, server); OnLeftHandQuitEvent(leftHandQuitEvent); RightHandQuitEventArgs rightHandQuitEvent = new RightHandQuitEventArgs(debug, server); @@ -488,6 +490,7 @@ else { debug.hideSkeleton(); + modeManagement.DetectProximityBasedModes(0); LeftHandQuitEventArgs leftHandQuitEvent = new LeftHandQuitEventArgs(debug, server); OnLeftHandQuitEvent(leftHandQuitEvent); RightHandQuitEventArgs rightHandQuitEvent = new RightHandQuitEventArgs(debug, server); diff -r 50de8e8f44d7 -r 10d5199d9874 middleware/src/Tracking/ModeManagement.cs --- a/middleware/src/Tracking/ModeManagement.cs Thu Mar 29 14:39:21 2012 +0200 +++ b/middleware/src/Tracking/ModeManagement.cs Fri Mar 30 11:14:14 2012 +0200 @@ -65,7 +65,7 @@ /* * Détecte tout changement de mode en se basant sur la proximité de l'utilisateur. */ - public void DetectProximityBasedModes(float proximity, int numberOfImages) + public void DetectProximityBasedModes(float proximity) { //Si l'utilisateur se déplace dans la zone de détection. //On traite le problème en plusieurs limites, on discrétise la zone. @@ -77,14 +77,14 @@ OnModChangeEvent(modChangeEvent); } //S'il n'est pas encore au point d'interaction maximale, on considère qu'il est en chemin. - else if (proximity >= 10f && proximity < 100f) + else if (proximity >= 10f && proximity < 100f && currentMode != Mode.USER_INCOMING) { currentMode = Mode.USER_INCOMING; ModChangeEventArgs modChangeEvent = new ModChangeEventArgs(debug, server, "USER_INCOMING"); OnModChangeEvent(modChangeEvent); } //S'il est arrivé au point, il a la mosaïque complète. - else + else if(proximity == 100f && currentMode != Mode.MOSAIC) { currentMode = Mode.MOSAIC; ModChangeEventArgs modChangeEvent = new ModChangeEventArgs(debug, server, "MOSAIC");