middleware/src/Communication/Server.cs
author bastiena
Mon, 19 Mar 2012 10:21:56 +0100
changeset 5 d40f84d77db4
parent 3 92f19af39024
child 8 e4e7db2435f8
permissions -rw-r--r--
Documentations (readme) Installer Deletion of useless comments and code lines
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     1
/*
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
     2
 * Projet : TraKERS
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     3
 * Module : MIDDLEWARE
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     4
 * Sous-Module : Communication
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     5
 * Classe : Server
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     6
 * 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     7
 * Auteur : alexandre.bastien@iri.centrepompidou.fr
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     8
 * 
6fefd4afe506 First Import
bastiena
parents:
diff changeset
     9
 * Fonctionnalités : Reçoit des notifications du module sous-module Tracking.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    10
 * Traduit les notifications sous forme de messages OSC et les envoie au Front Atelier.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    11
 * Forme des messages :
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    12
 * - Notification de main dans le champ de recherche : Point3D indiquant la position de la main dans l'espace.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    13
 */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    14
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    15
using System;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    16
using System.Collections.Generic;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    17
using System.Linq;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    18
using System.Text;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    19
using System.IO;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    20
using System.Net;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    21
using System.Net.Sockets;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    22
using System.Threading;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    23
using Tuio;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    24
using System.Windows;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    25
using Microsoft.Kinect;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    26
using Trakers.Tracking;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    27
using System.Windows.Media.Media3D;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    28
using Trakers.Tracking.Events;
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    29
using System.Timers;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    30
using Trakers.Debug;
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    31
using System.Resources;
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    32
using System.Reflection;
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    33
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    34
namespace Trakers.Communication
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    35
{
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    36
    public class Server
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    37
    {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    38
        //Serveur TUIO, provenant de la DLL TuioServer créé par Bespoke.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    39
        private TuioServer server;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    40
        //Affichage de debug.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    41
        private DebugWindow debug;
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    42
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    43
        //Permet de savoir si un curseur pour la main gauche/droite a été créé.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    44
        private bool leftHandCursorCreated;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    45
        private bool rightHandCursorCreated;
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    46
        private bool messageCreated;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    47
        private bool gestureLocked;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    48
        //Intervalle minimum entre les gestures.
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    49
        private int timerElapsing;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    50
        //Timer.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    51
        private System.Timers.Timer _timer;
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    52
        //Gestionnaire de ressources.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    53
        private ResourceManager rm;
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    54
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    55
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    56
        * Constructeur : On initialise le serveur avec une adresse et un port, au début les curseurs
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    57
        * ne sont pas créés et on indique au ThreadPool une fonction de callback de manière à vérifier
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    58
        * s'il reçoit des notifications.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    59
        */
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    60
        public Server(String host, int port, int _timerElapsing, DebugWindow _debug)
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    61
        {
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    62
            debug = _debug;
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    63
            rm = new ResourceManager("Trakers.Properties.resources", Assembly.GetExecutingAssembly());
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    64
            //Au départ, aucune main n'est dans le champ de recherche et aucune gesture n'est détectée.
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    65
            leftHandCursorCreated = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    66
            rightHandCursorCreated = false;
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    67
            messageCreated = false;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    68
            gestureLocked = false;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    69
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    70
            timerElapsing = _timerElapsing;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    71
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    72
            try
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    73
            {
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    74
                //On démarre le serveur TUIO.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    75
                server = new TuioServer(host, port);
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    76
                //On initialise le threadPool (appelé toutes les N ms).
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    77
                ThreadPool.QueueUserWorkItem(ThreadPoolCallback);
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    78
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    79
                //On instancie le timer à N ms.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    80
                _timer = new System.Timers.Timer(timerElapsing);
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    81
                //Dès que le timer est expiré, on appelle _timer_Elapsed.
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    82
                _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed);
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    83
            }
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    84
            catch (Exception)
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    85
            {
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    86
                debug.ExceptionLbl.Content = rm.GetString("serverCantStart");
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
    87
            }
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    88
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    89
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    90
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    91
        * Getter du serveur.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    92
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    93
        public TuioServer getServer()
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    94
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    95
            return server;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    96
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    97
6fefd4afe506 First Import
bastiena
parents:
diff changeset
    98
        /*
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
    99
         * Méthode appelée à l'expiration du timer.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   100
         */
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   101
        public void _timer_Elapsed(object sender, ElapsedEventArgs e)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   102
        {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   103
            //On débloque la détection de gesture.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   104
            gestureLocked = false;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   105
            //On arrête le timer.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   106
            _timer.Stop();
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   107
        }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   108
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   109
        /*
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   110
        * Méthode appelée lors d'une notification de type : main gauche entrée dans le champ.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   111
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   112
        public void LeftHandTracked(object sender, LeftHandTrackedEventArgs e)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   113
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   114
            //Si le curseur de la main gauche n'est pas créé, alors on le crée.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   115
            if (!leftHandCursorCreated)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   116
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   117
                server.AddTuioCursor(0, SkeletonPointToPoint3D(e.handJoint.Position));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   118
                leftHandCursorCreated = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   119
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   120
            //S'il existe, on le met simplement à jour.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   121
            else
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   122
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   123
                server.UpdateTuioCursor(0, SkeletonPointToPoint3D(e.handJoint.Position));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   124
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   125
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   126
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   127
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   128
        * Méthode appelée lors d'une notification de type : main droite entrée dans le champ.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   129
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   130
        public void RightHandTracked(object sender, RightHandTrackedEventArgs e)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   131
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   132
            //Si le curseur de la main droite n'est pas créé, alors on le crée.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   133
            if (!rightHandCursorCreated)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   134
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   135
                server.AddTuioCursor(1, SkeletonPointToPoint3D(e.handJoint.Position));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   136
                rightHandCursorCreated = true;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   137
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   138
            //S'il existe, on le met simplement à jour.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   139
            else
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   140
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   141
                server.UpdateTuioCursor(1, SkeletonPointToPoint3D(e.handJoint.Position));
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   142
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   143
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   144
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   145
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   146
        * Méthode appelée lors d'une notification de type : main gauche sortie du champ.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   147
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   148
        public void LeftHandQuit(object sender, LeftHandQuitEventArgs e)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   149
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   150
            //Si le curseur de la main gauche existe, alors on le supprime.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   151
            if (leftHandCursorCreated)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   152
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   153
                server.DeleteTuioCursor(0);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   154
                leftHandCursorCreated = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   155
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   156
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   157
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   158
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   159
        * Méthode appelée lors d'une notification de type : main droite sortie du champ.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   160
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   161
        public void RightHandQuit(object sender, RightHandQuitEventArgs e)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   162
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   163
            //Si le curseur de la main droite existe, alors on le supprime.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   164
            if (rightHandCursorCreated)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   165
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   166
                server.DeleteTuioCursor(1);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   167
                rightHandCursorCreated = false;
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   168
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   169
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   170
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   171
        /*
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   172
        * Méthode appelée lors d'une notification de type : l'utilisateur fait un swipe.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   173
        */
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   174
        public void Swipe(object sender, SwipeEventArgs e)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   175
        {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   176
            if (e.direction == Tracking.Gestures.SwipeDetector.Direction.LEFT)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   177
                GesturePerformed("SWIPE LEFT");
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   178
            else if (e.direction == Tracking.Gestures.SwipeDetector.Direction.RIGHT)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   179
                GesturePerformed("SWIPE RIGHT");
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   180
        }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   181
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   182
        /*
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   183
        * Méthode appelée lors d'une notification de type : l'utilisateur fait un push/pull.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   184
        */
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   185
        public void Pull(object sender, PushEventArgs e)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   186
        {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   187
            if(e.hand == Tracking.Gestures.PushDetector.Hand.NONE)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   188
                return;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   189
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   190
            String pushPull = "", hand = "";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   191
            if (e.direction == Tracking.Gestures.PushDetector.Direction.PUSH)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   192
                pushPull = "PUSH";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   193
            else
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   194
                pushPull = "PULL";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   195
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   196
            if (e.hand == Tracking.Gestures.PushDetector.Hand.LEFT)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   197
                hand = "LEFT";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   198
            else if (e.hand == Tracking.Gestures.PushDetector.Hand.RIGHT)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   199
                hand = "RIGHT";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   200
            else
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   201
                hand = "BOTH";
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   202
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   203
            GesturePerformed(pushPull + "-" + hand);
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   204
        }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   205
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   206
        /*
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   207
        * Méthode appelée lorsqu'une gesture a été détectée et que l'événement approprié a été lancé.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   208
        */
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   209
        public void GesturePerformed(String code)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   210
        {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   211
            //Si une gesture a été effectuée, on bloque un certain temps.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   212
            if (!gestureLocked)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   213
            {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   214
                gestureLocked = true;
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   215
                
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   216
                //On crée un message contenant le code à envoyer.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   217
                if (!messageCreated)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   218
                {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   219
                    messageCreated = true;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
   220
                    server.AddTuioString(2, code);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   221
                    //On démarre le timer.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   222
                    _timer.Start();
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   223
                }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   224
            }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   225
        }
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   226
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   227
        /*
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   228
        * Permet de convertir un point de position de noeud en Point3D.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   229
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   230
        private Point3D SkeletonPointToPoint3D(SkeletonPoint p)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   231
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   232
            return new Point3D((double)p.X, (double)p.Y, (double)p.Z);
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   233
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   234
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   235
        /*
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   236
        * Méthode de callback vérifiant toutes les 25 ms les nouvelles notifications.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   237
        * Il est à noter que si le temps de rafraîchissement des trop rapide, les messages n'ont pas
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   238
        * le temps d'être envoyés.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   239
        */
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   240
        private void ThreadPoolCallback(Object threadContext)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   241
        {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   242
            while (true)
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   243
            {
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   244
                //On initialise le message OSC.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   245
                server.InitFrame();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   246
                //On l'envoie au client (au host et au port spécifiés dans le constructeur).
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   247
                server.CommitFrame();
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   248
                //On attend 25 ms.
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   249
                Thread.Sleep(25);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   250
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   251
                //Si une gesture a été effectuée et que le délai d'attente est expiré.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   252
                if (messageCreated && !gestureLocked)
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   253
                {
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   254
                    //On débloque la détection de gesture et on supprime l'objet envoyant les messages OSC de gesture.
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   255
                    messageCreated = false;
5
d40f84d77db4 Documentations (readme)
bastiena
parents: 3
diff changeset
   256
                    server.DeleteTuioString(2);
3
92f19af39024 Middleware :
bastiena
parents: 0
diff changeset
   257
                }
0
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   258
            }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   259
        }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   260
    }
6fefd4afe506 First Import
bastiena
parents:
diff changeset
   261
}