middleware/src/Communication/Server.cs
changeset 11 a1bf0d21022e
parent 8 e4e7db2435f8
child 14 10d5199d9874
--- a/middleware/src/Communication/Server.cs	Fri Mar 23 16:24:36 2012 +0100
+++ b/middleware/src/Communication/Server.cs	Mon Mar 26 16:22:51 2012 +0200
@@ -53,7 +53,7 @@
         private bool leftHandCursorCreated;
         private bool rightHandCursorCreated;
         private bool messageCreated;
-        private bool gestureLocked;
+        private bool gestureLocked, modLocked;
         //Intervalle minimum entre les gestures.
         private int timerElapsing;
         //Timer.
@@ -75,6 +75,7 @@
             rightHandCursorCreated = false;
             messageCreated = false;
             gestureLocked = false;
+            modLocked = false;
 
             timerElapsing = _timerElapsing;
 
@@ -105,12 +106,14 @@
         }
 
         /*
-         * Méthode appelée à l'expiration du timer.
+         * Méthode appelée à l'expiration du timer pour les gestures et modes.
          */
         public void _timer_Elapsed(object sender, ElapsedEventArgs e)
         {
             //On débloque la détection de gesture.
             gestureLocked = false;
+            //On débloque la notification de nouveau mode.
+            modLocked = false;
             //On arrête le timer.
             _timer.Stop();
         }
@@ -191,7 +194,7 @@
         /*
         * Méthode appelée lors d'une notification de type : l'utilisateur fait un push/pull.
         */
-        public void Pull(object sender, PushEventArgs e)
+        public void Push(object sender, PushEventArgs e)
         {
             if(e.hand == Tracking.Gestures.PushDetector.Hand.NONE)
                 return;
@@ -234,6 +237,27 @@
         }
 
         /*
+        * Méthode appelée lorsqu'on doit entrer dans un autre mode.
+        */
+        public void ModeNotification(String code)
+        {
+            //Si on a été notifié.
+            if (!modLocked)
+            {
+                modLocked = true;
+
+                //On crée un message contenant le code à envoyer.
+                if (!messageCreated)
+                {
+                    messageCreated = true;
+                    server.AddTuioString(2, code);
+                    //On démarre le timer.
+                    _timer.Start();
+                }
+            }
+        }
+
+        /*
         * Permet de convertir un point de position de noeud en Point3D.
         */
         private Point3D SkeletonPointToPoint3D(SkeletonPoint p)
@@ -258,7 +282,7 @@
                 Thread.Sleep(25);
 
                 //Si une gesture a été effectuée et que le délai d'attente est expiré.
-                if (messageCreated && !gestureLocked)
+                if (messageCreated && !gestureLocked && !modLocked)
                 {
                     //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
                     messageCreated = false;