middleware/src/MainModule/KinectMain.cs
author bastiena
Wed, 30 May 2012 10:21:36 +0200
changeset 35 4267d6d27a7d
parent 28 9ccef81f02ab
child 37 37ebedd84755
permissions -rw-r--r--
Front IDILL : Config file added dor the Front Random play at the beginning (when no user is detected) Pointers added Curves added (search and filter modes) Mosaic completion added (depletion to come later) State of the Front : just before the communication module creation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
28
9ccef81f02ab Charset set to UTF-8 without bom
bastiena
parents: 27
diff changeset
     1
/*
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     2
* This file is part of the TraKERS\Middleware package.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     3
*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     4
* (c) IRI <http://www.iri.centrepompidou.fr/>
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     5
*
27
6c08d4d7219e Middleware :
bastiena
parents: 17
diff changeset
     6
* For the full copyright and license information, please view the LICENSE
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     7
* file that was distributed with this source code.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     8
*/
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
     9
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    10
/*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    11
 * Projet : TraKERS
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    12
 * Module : MIDDLEWARE
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    13
 * Sous-Module : Tracking
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    14
 * Classe : KinectMain
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    15
 * 
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    16
 * Auteur : alexandre.bastien@iri.centrepompidou.fr
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    17
 * 
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    18
 * Fonctionnalités : Récupère les trames de données de la Kinect, les squelettes détectés via le SDK 1.0 de Microsoft.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    19
 * Interprète ces trames de façon à afficher le flux vidéo couleurs, et récupérer la distance de l'utilisateur et les
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    20
 * noeuds de son squelette. Lance des événements lorsque la main gauche/droite entre dans/quitte le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    21
 * Envoie des données au sous-module de debug de manière a afficher un retour visuel sur la position de l'utilisateur,
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    22
 * son squelette, la détection de ses mains.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    23
 * Découpe l'interaction avec le middleware en différents modes.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    24
 */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    25
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    26
using System;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    27
using System.Collections.Generic;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    28
using System.Linq;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    29
using System.Windows.Documents;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    30
using Microsoft.Kinect;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    31
using Trakers.Communication;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    32
using Trakers.MainModule.Events;
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    33
using Trakers.Tracking.Search;
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    34
using Trakers.Debug;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    35
using System.Windows;
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    36
using Trakers.Tracking.Gestures;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    37
using Trakers.Tracking.Postures;
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    38
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    39
namespace Trakers.MainModule
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    40
{
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    41
    //Il s'agit des fonctions permettant d'appeler les fonctions des événements Main droite/gauche entre/quitte le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    42
    public delegate void LeftHandTrackedHandler(object o, LeftHandTrackedEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    43
    public delegate void RightHandTrackedHandler(object o, RightHandTrackedEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    44
    public delegate void LeftHandQuitHandler(object o, LeftHandQuitEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    45
    public delegate void RightHandQuitHandler(object o, RightHandQuitEventArgs e);
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    46
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    47
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Bend.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    48
    public delegate void BendHandler(object o, BendEventArgs e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    49
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Cross.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    50
    public delegate void CrossHandler(object o, CrossEventArgs e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    51
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements KneeUp.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    52
    public delegate void KneeUpHandler(object o, KneeUpEventArgs e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    53
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    54
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Swipe left/right/up/down.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    55
    public delegate void SwipeHandler(object o, SwipeEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    56
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Push/Pull.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    57
    public delegate void PushHandler(object o, PushEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    58
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Jump.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    59
    public delegate void JumpHandler(object o, JumpEventArgs e);
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    60
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Wave.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    61
    public delegate void WaveHandler(object o, WaveEventArgs e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    62
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements Circle.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    63
    public delegate void CircleHandler(object o, CircleEventArgs e);
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    64
    //Il s'agit de la fonction permettant d'appeler les fonctions des événements de proximité.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    65
    public delegate void UserPositionHandler(object o, UserPositionEventArgs e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    66
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    67
    public class KinectMain
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    68
    {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    69
        //Fenêtre de debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    70
        private DebugWindow debug;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    71
        //Squelettes (Il y en a 6 par défaut).
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    72
        private Skeleton[] skeletons;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    73
        //Caméra infrarouge (sensor) de la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    74
        private KinectSensor kinectSensor;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    75
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    76
        //Détecteur de penchés.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    77
        private BendDetector bendDetector;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    78
        //Détecteur de croisement de bras en X.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    79
        private CrossDetector crossDetector;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    80
        //Détecteur de levé de genou.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    81
        private KneeUpDetector kneeUpDetector;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    82
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    83
        //Détecteur de swipes.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    84
        private SwipeDetector swipeDetector;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    85
        //Détecteur de pushes.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    86
        private PushDetector pushDetector;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    87
        //Détecteur de jumps.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    88
        private JumpDetector jumpDetector;
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    89
        //Détecteur de waves.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    90
        private WaveDetector waveDetector;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    91
        //Détecteur de cercles.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
    92
        private CircleDetector circleDetector;
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    93
        //Détecteur de proximité.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    94
        private UserPositionDetector userPositionDetector;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    95
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    96
        //Serveur TUIO pour la connexion du Middleware vers le Front Atelier.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    97
        private Server server;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    98
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
    99
        //Gestionnaire de modes.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   100
        private ModeManagement modeManagement;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   101
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   102
        //Les événements des mains pour la recherche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   103
        public static event LeftHandTrackedHandler LeftHandTrackedEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   104
        public static event RightHandTrackedHandler RightHandTrackedEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   105
        public static event LeftHandQuitHandler LeftHandQuitEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   106
        public static event RightHandQuitHandler RightHandQuitEvent;
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   107
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   108
        //L'événement bend.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   109
        public static event BendHandler BendEvent;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   110
        //L'événement cross.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   111
        public static event CrossHandler CrossEvent;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   112
        //L'événement kneeUp.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   113
        public static event KneeUpHandler KneeUpEvent;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   114
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   115
        //L'événement swipe.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   116
        public static event SwipeHandler SwipeEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   117
        //L'événement push.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   118
        public static event PushHandler PushEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   119
        //L'événement jump.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   120
        public static event JumpHandler JumpEvent;
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   121
        //L'événement wave.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   122
        public static event WaveHandler WaveEvent;
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   123
        //L'événement circle.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   124
        public static event CircleHandler CircleEvent;
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   125
        //L'événement l'utilisateur se déplace dans la zone de détection.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   126
        public static event UserPositionHandler UserPositionEvent;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   127
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   128
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   129
        *  Initialisation de la classe principale.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   130
        *  Affiche l'écran de debug dans lequel on voit la distance à la Kinect,
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   131
        *  les mains détectées et le squelette de l'utilisateur.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   132
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   133
        public KinectMain()
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   134
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   135
            //On crée la fenêtre de debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   136
            debug = new DebugWindow();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   137
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   138
            //On crée les détecteurs de postures.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   139
            bendDetector = new BendDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   140
            crossDetector = new CrossDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   141
            kneeUpDetector = new KneeUpDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   142
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   143
            //On crée les détecteurs de gestes.
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   144
            swipeDetector = new SwipeDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   145
            pushDetector = new PushDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   146
            jumpDetector = new JumpDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   147
            waveDetector = new WaveDetector(debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   148
            circleDetector = new CircleDetector(debug);
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   149
            //On crée le détecteur de proximité.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   150
            userPositionDetector = new UserPositionDetector(debug.getMinDist(), debug.getMaxDist(), debug.getZeroPoint(), debug.getMinDistHands(), debug.getMaxDistHands());
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   151
16
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   152
            //On connecte le serveur à l'adresse locale sur le port 80.
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   153
            try
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   154
            {
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   155
                server = new Server(debug.getConnexionHost(), debug.getConnexionPort(), debug.getTimerElapsing());
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   156
                //On crée le gestionnaire de modes.
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   157
                modeManagement = new ModeManagement(server, debug, this);
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   158
            }
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   159
            catch (Exception)
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   160
            {
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   161
                debug.ShowException("serverCantStart");
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   162
            }
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   163
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   164
            //On écoute l'événement de clic sur le bouton on/off du debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   165
            //Car on lancera l'intitialisation/fermeture de la kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   166
            debug.getSwitch().Click += new RoutedEventHandler(Switch_ClickInKinectMain);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   167
            debug.Loaded += new RoutedEventHandler(Window_LoadedInKinectMain);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   168
            debug.Closed += new EventHandler(Window_CloseInKinectMain);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   169
            debug.getQuitMenu().Click += new RoutedEventHandler(Quit_ClickInKinectMain);
16
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   170
            debug.getParametersWindow().getModButton().Click += new RoutedEventHandler(updateParameters);
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   171
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   172
            //On affiche la fenêtre de debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   173
            try
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   174
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   175
                debug.ShowDialog();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   176
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   177
            catch(Exception){
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   178
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   179
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   180
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   181
        /*
16
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   182
         * Envoi les paramètres mis à jour dans les différents modules.
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   183
         */
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   184
        public void updateParameters(object sender, RoutedEventArgs e)
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   185
        {
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   186
            userPositionDetector.setParams(debug.getMinDist(), debug.getMaxDist(), debug.getMinDistHands(), debug.getMaxDistHands(), debug.getZeroPoint());
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   187
            server = new Server(debug.getConnexionHost(), debug.getConnexionPort(), debug.getTimerElapsing());
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   188
        }
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   189
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   190
        /*
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   191
        *  Initialisation du sensor de la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   192
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   193
        public void KinectInitialization()
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   194
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   195
            try
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   196
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   197
                //On sélectionne la première kinect détectée.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   198
                kinectSensor = KinectSensor.KinectSensors.FirstOrDefault(s => s.Status == KinectStatus.Connected);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   199
                //La caméra couleur est activée avec une résolution 640x480 et un framerate de 30 FPS.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   200
                kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   201
                //La caméra de profondeur est activée.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   202
                kinectSensor.DepthStream.Enable();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   203
                //Le squelette est activé.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   204
                kinectSensor.SkeletonStream.Enable();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   205
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   206
                //Quand le Middleware reçoit des trames de la Kinect, on va dans cette fonction.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   207
                kinectSensor.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(AllFramesReady);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   208
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   209
                //On applique des paramètres d'ajustement pour le squelette.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   210
                TransformSmoothParameters parameters = new TransformSmoothParameters();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   211
                parameters.Smoothing = 0.2f;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   212
                parameters.Correction = 0.8f;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   213
                parameters.Prediction = 0.0f;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   214
                parameters.JitterRadius = 0.5f;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   215
                parameters.MaxDeviationRadius = 0.5f;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   216
                kinectSensor.SkeletonStream.Enable(parameters);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   217
                //On démarre la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   218
                kinectSensor.Start();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   219
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   220
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   221
            catch (System.Exception)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   222
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   223
                debug.ShowException("KinectNotConnected");
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   224
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   225
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   226
            //Pour les événements main gauche/droite entre dans/quitte le champ, on a 4 listeners.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   227
            //Fonction appelée lorsque la main gauche entre dans le champ de recherche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   228
            LeftHandTrackedListener leftHandTrackedListener = new LeftHandTrackedListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   229
            LeftHandTrackedEvent += new LeftHandTrackedHandler(leftHandTrackedListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   230
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   231
            //Fonction appelée lorsque la main droite entre dans le champ de recherche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   232
            RightHandTrackedListener rightHandTrackedListener = new RightHandTrackedListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   233
            RightHandTrackedEvent += new RightHandTrackedHandler(rightHandTrackedListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   234
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   235
            //Fonction appelée lorsque la main gauche quitte le champ de recherche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   236
            LeftHandQuitListener leftHandQuitListener = new LeftHandQuitListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   237
            LeftHandQuitEvent += new LeftHandQuitHandler(leftHandQuitListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   238
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   239
            //Fonction appelée lorsque la main droite quitte le champ de recherche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   240
            RightHandQuitListener rightHandQuitListener = new RightHandQuitListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   241
            RightHandQuitEvent += new RightHandQuitHandler(rightHandQuitListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   242
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   243
            //Fonction appelée lorsque l'utilisateur se penche.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   244
            BendListener bendListener = new BendListener();
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   245
            BendEvent += new BendHandler(bendListener.showAndSend);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   246
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   247
            //Fonction appelée lorsque l'utilisateur croise les bras en X.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   248
            CrossListener crossListener = new CrossListener();
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   249
            CrossEvent += new CrossHandler(crossListener.showAndSend);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   250
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   251
            //Fonction appelée lorsque l'utilisateur lève le genou.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   252
            KneeUpListener kneeUpListener = new KneeUpListener();
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   253
            KneeUpEvent += new KneeUpHandler(kneeUpListener.showAndSend);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   254
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   255
            //Fonction appelée lorsque l'utilisateur effectue un Swipe right/left/up/down.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   256
            SwipeListener swipeListener = new SwipeListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   257
            SwipeEvent += new SwipeHandler(swipeListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   258
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   259
            //Fonction appelée lorsque l'utilisateur effectue un Push/Pull.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   260
            PushListener pushListener = new PushListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   261
            PushEvent += new PushHandler(pushListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   262
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   263
            //Fonction appelée lorsque l'utilisateur effectue un Jump.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   264
            JumpListener jumpListener = new JumpListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   265
            JumpEvent += new JumpHandler(jumpListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   266
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   267
            //Fonction appelée lorsque l'utilisateur effectue un Wave.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   268
            WaveListener waveListener = new WaveListener();
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   269
            WaveEvent += new WaveHandler(waveListener.showAndSend);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   270
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   271
            //Fonction appelée lorsque l'utilisateur effectue un Circle.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   272
            CircleListener circleListener = new CircleListener();
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   273
            CircleEvent += new CircleHandler(circleListener.showAndSend);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   274
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   275
            //Fonction appelée lorsque l'utilisateur se déplace dans la zone de détection.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   276
            UserPositionListener userPositionListener = new UserPositionListener();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   277
            UserPositionEvent += new UserPositionHandler(userPositionListener.showAndSend);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   278
16
a9ebacd6c089 Middleware :
bastiena
parents: 15
diff changeset
   279
            modeManagement.DetectProximityBasedModes(0);
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   280
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   281
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   282
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   283
        * Bouton ON/OFF du debug écouté dans KinectMain.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   284
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   285
        public void Switch_ClickInKinectMain(object sender, RoutedEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   286
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   287
            Console.Out.WriteLine(debug.getOn());
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   288
            //Si la kinect est allumée.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   289
            if (debug.getOn())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   290
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   291
                //On initialise la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   292
                KinectInitialization();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   293
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   294
            else
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   295
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   296
                //On éteint la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   297
                KinectClose();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   298
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   299
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   300
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   301
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   302
         * Méthode associée à l'événement : Quitter via le menu écoutée dans KinectMain.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   303
         */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   304
        private void Quit_ClickInKinectMain(object sender, RoutedEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   305
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   306
            KinectClose();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   307
            debug.Quit_Click(sender, e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   308
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   309
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   310
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   311
         * Permet d'initialiser la Kinect dès que la fenêtre est lancée écoutée dans KinectMain.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   312
         */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   313
        private void Window_LoadedInKinectMain(object sender, RoutedEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   314
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   315
            KinectInitialization();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   316
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   317
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   318
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   319
        * Fermeture du debug écouté dans KinectMain.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   320
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   321
        private void Window_CloseInKinectMain(object sender, EventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   322
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   323
            //On éteint la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   324
            KinectClose();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   325
            debug.Window_Closed(sender, e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   326
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   327
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   328
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   329
        *  Fermeture du sensor de la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   330
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   331
        public void KinectClose()
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   332
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   333
            try
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   334
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   335
                //On stoppe la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   336
                kinectSensor.Stop();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   337
                //On met a zero l'image d'affichage et le serveur.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   338
                debug.ShutDownInterface();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   339
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   340
            catch (System.Exception)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   341
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   342
                debug.ShowException("KinectNotConnected");
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   343
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   344
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   345
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   346
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   347
        *  Récupère le premier squelette.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   348
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   349
        Skeleton GetFirstSkeleton(object sender, AllFramesReadyEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   350
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   351
            using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   352
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   353
                if (skeletonFrameData == null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   354
                    return null;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   355
                if ((skeletons == null) || (skeletons.Length != skeletonFrameData.SkeletonArrayLength))
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   356
                    skeletons = new Skeleton[skeletonFrameData.SkeletonArrayLength];
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   357
                skeletonFrameData.CopySkeletonDataTo(skeletons);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   358
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   359
                //On obtient le premier skelette.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   360
                Skeleton first = (from s in skeletons where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   361
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   362
                return first;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   363
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   364
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   365
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   366
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   367
        *  Récupère le squelette le plus proche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   368
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   369
        Skeleton GetNearestSkeleton(object sender, AllFramesReadyEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   370
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   371
            using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   372
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   373
                if (skeletonFrameData == null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   374
                    return null;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   375
                if ((skeletons == null) || (skeletons.Length != skeletonFrameData.SkeletonArrayLength))
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   376
                    skeletons = new Skeleton[skeletonFrameData.SkeletonArrayLength];
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   377
                skeletonFrameData.CopySkeletonDataTo(skeletons);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   378
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   379
                Skeleton s;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   380
                float minDist = (float)-1.0;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   381
                int minID = 0;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   382
                    
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   383
                //Pour tous les squelettes.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   384
                for(int i = 0 ; i < skeletons.Count() ; i++)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   385
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   386
                    s = skeletons.ElementAt(i);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   387
                    //S'il est tracké.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   388
                    if(s.TrackingState == SkeletonTrackingState.Tracked)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   389
                    {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   390
                        //On récupère sa position et on obtient la distance min et l'ID du squelette qui est à la distance min.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   391
                        float dist = skeletons.ElementAt(i).Position.Z;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   392
                        if (minDist == -1)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   393
                        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   394
                            minDist = dist;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   395
                            minID = i;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   396
                        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   397
                        else if(minDist > dist)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   398
                        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   399
                            minDist = dist;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   400
                            minID = i;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   401
                        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   402
                    }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   403
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   404
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   405
                //On renvoie le skelette le plus proche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   406
                return skeletons.ElementAt(minID);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   407
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   408
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   409
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   410
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   411
        *  Récupère le squelette le plus proche.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   412
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   413
        private void AllFramesReady(object sender, AllFramesReadyEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   414
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   415
            //On ne calcule rien si la fenêtre de debug se ferme.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   416
            if (debug.isClosing())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   417
                return;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   418
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   419
            //On écoute le debug pour savoir si les paramètres ont été modifiés.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   420
            
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   421
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   422
            //On met à jour la vidéo de debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   423
            debug.RefreshVideo(e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   424
            //On récupère le premier squelette tracké.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   425
            //Skeleton first = GetFirstSkeleton(e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   426
            //On récupère le plus proche squelette tracké.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   427
            Skeleton first = GetNearestSkeleton(sender, e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   428
            //Si celui-ci n’est pas nul
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   429
            if (first == null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   430
                return;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   431
            
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   432
            //Si ce squelette est tracké (donc suivi et reconnu par la camera)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   433
            if (first.TrackingState == SkeletonTrackingState.Tracked)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   434
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   435
                //Ensemble des noeuds du squelette.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   436
                Joint hipCenter = getJoint(first, JointType.HipCenter), spine = getJoint(first, JointType.Spine), shoulderCenter = getJoint(first, JointType.ShoulderCenter), head = getJoint(first, JointType.Head);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   437
                Joint shoulderLeft = getJoint(first, JointType.ShoulderLeft), elbowLeft = getJoint(first, JointType.ElbowLeft), wristLeft = getJoint(first, JointType.WristLeft), handLeft = getJoint(first, JointType.HandLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   438
                Joint shoulderRight = getJoint(first, JointType.ShoulderRight), elbowRight = getJoint(first, JointType.ElbowRight), wristRight = getJoint(first, JointType.WristRight), handRight = getJoint(first, JointType.HandRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   439
                Joint hipLeft = getJoint(first, JointType.HipLeft), kneeLeft = getJoint(first, JointType.KneeLeft), ankleLeft = getJoint(first, JointType.AnkleLeft), footLeft = getJoint(first, JointType.FootLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   440
                Joint hipRight = getJoint(first, JointType.HipRight), kneeRight = getJoint(first, JointType.KneeRight), ankleRight = getJoint(first, JointType.AnkleRight), footRight = getJoint(first, JointType.FootRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   441
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   442
                //On construit l'historique des postures.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   443
                List<Joint> joints = new List<Joint>();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   444
                joints.Clear();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   445
                joints.Insert((int)JointType.HipCenter, hipCenter);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   446
                joints.Insert((int)JointType.Spine, spine);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   447
                joints.Insert((int)JointType.ShoulderCenter, shoulderCenter);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   448
                joints.Insert((int)JointType.Head, head);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   449
                joints.Insert((int)JointType.ShoulderLeft, shoulderLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   450
                joints.Insert((int)JointType.ElbowLeft, elbowLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   451
                joints.Insert((int)JointType.WristLeft, wristLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   452
                joints.Insert((int)JointType.HandLeft, handLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   453
                joints.Insert((int)JointType.ShoulderRight, shoulderRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   454
                joints.Insert((int)JointType.ElbowRight, elbowRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   455
                joints.Insert((int)JointType.WristRight, wristRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   456
                joints.Insert((int)JointType.HandRight, handRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   457
                joints.Insert((int)JointType.HipLeft, hipLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   458
                joints.Insert((int)JointType.KneeLeft, kneeLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   459
                joints.Insert((int)JointType.AnkleLeft, ankleLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   460
                joints.Insert((int)JointType.FootLeft, footLeft);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   461
                joints.Insert((int)JointType.HipRight, hipRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   462
                joints.Insert((int)JointType.KneeRight, kneeRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   463
                joints.Insert((int)JointType.AnkleRight, ankleRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   464
                joints.Insert((int)JointType.FootRight, footRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   465
                GestureDetector.UpdateSkeletonHistory(joints);
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   466
                PostureDetector.UpdateSkeletonState(joints);
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   467
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   468
                //Si la main gauche est dans le champ, on lance l'événement approprié.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   469
                if (handLeft.Position.Z < debug.getMaxDistHands() && handLeft.Position.Z > debug.getMinDistHands())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   470
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   471
                    LeftHandTrackedEventArgs leftHandTrackedEvent = new LeftHandTrackedEventArgs(server, debug, handLeft, handLeft.Position.Z);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   472
                    OnLeftHandTrackedEvent(leftHandTrackedEvent);
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   473
                    /*if (circleDetector.CheckForLeftCircle())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   474
                    {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   475
                        CircleEventArgs circleEvent = new CircleEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   476
                        OnCircleEvent(circleEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   477
                    }*/
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   478
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   479
                //Si la main gauche quitte le champ, on lance l'événement approprié.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   480
                else
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   481
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   482
                    LeftHandQuitEventArgs leftHandQuitEvent = new LeftHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   483
                    OnLeftHandQuitEvent(leftHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   484
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   485
                //Si la main droite est dans le champ, on lance l'événement approprié.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   486
                if (handRight.Position.Z < debug.getMaxDistHands() && handRight.Position.Z > debug.getMinDistHands())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   487
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   488
                    RightHandTrackedEventArgs rightHandTrackedEvent = new RightHandTrackedEventArgs(server, debug, handRight, handRight.Position.Z);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   489
                    OnRightHandTrackedEvent(rightHandTrackedEvent);
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   490
                    /*if (circleDetector.CheckForRightCircle())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   491
                    {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   492
                        CircleEventArgs circleEvent = new CircleEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   493
                        OnCircleEvent(circleEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   494
                        //Console.Out.WriteLine("CIRCLE");
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   495
                    }*/
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   496
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   497
                //Si la main droite quitte le champ, on lance l'événement approprié.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   498
                else
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   499
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   500
                    RightHandQuitEventArgs rightHandQuitEvent = new RightHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   501
                    OnRightHandQuitEvent(rightHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   502
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   503
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   504
                //Si l'utilisateur s'est penché.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   505
                if (bendDetector.CheckForBend())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   506
                {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   507
                    BendEventArgs bendEvent = new BendEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   508
                    OnBendEvent(bendEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   509
                }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   510
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   511
                //Si l'utilisateur a croisé les bras en X.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   512
                if (crossDetector.CheckForCross())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   513
                {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   514
                    CrossEventArgs crossEvent = new CrossEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   515
                    OnCrossEvent(crossEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   516
                }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   517
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   518
                //Si l'utilisateur a levé le genou.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   519
                if (kneeUpDetector.CheckForKneeUp())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   520
                {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   521
                    KneeUpEventArgs kneeUpEvent = new KneeUpEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   522
                    OnKneeUpEvent(kneeUpEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   523
                }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   524
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   525
                //Si l'utilisateur effectue un swipe left.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   526
                if (swipeDetector.CheckForSwipeLeft())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   527
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   528
                    SwipeEventArgs swipeEvent = new SwipeEventArgs(server, debug, SwipeDetector.Direction.LEFT);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   529
                    OnSwipeEvent(swipeEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   530
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   531
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   532
                //Si l'utilisateur effectue un swipe right.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   533
                if (swipeDetector.CheckForSwipeRight())
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   534
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   535
                    SwipeEventArgs swipeEvent = new SwipeEventArgs(server, debug, SwipeDetector.Direction.RIGHT);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   536
                    OnSwipeEvent(swipeEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   537
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   538
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   539
                //Enum sur la main qui effectue le geste.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   540
                PushDetector.Hand handPush;
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   541
                //Si l'utilisateur effectue un push.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   542
                if ((handPush = pushDetector.CheckForPush()) != PushDetector.Hand.NONE)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   543
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   544
                    PushEventArgs pushEvent = new PushEventArgs(server, debug, PushDetector.Direction.PUSH, handPush);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   545
                    OnPushEvent(pushEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   546
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   547
                //Si l'utilisateur effectue un pull.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   548
                if ((handPush = pushDetector.CheckForPull()) != PushDetector.Hand.NONE)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   549
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   550
                    PushEventArgs pushEvent = new PushEventArgs(server, debug, PushDetector.Direction.PULL, handPush);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   551
                    OnPushEvent(pushEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   552
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   553
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   554
                //Si l'utilisateur effectue un wave.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   555
                if (waveDetector.CheckForWave())
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   556
                {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   557
                    WaveEventArgs waveEvent = new WaveEventArgs(server, debug);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   558
                    OnWaveEvent(waveEvent);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   559
                    Console.Out.WriteLine("WAVE");
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   560
                }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   561
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   562
                //Si l'utilisateur se déplace dans la zone de détection.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   563
                //On traite le problème en plusieurs limites, on discrétise la zone.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   564
                if (first.TrackingState == SkeletonTrackingState.Tracked)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   565
                {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   566
                    float proximity = userPositionDetector.CalcProximity(first.Position.Z);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   567
                    int numberOfImages = userPositionDetector.ImagesToShow(proximity, debug.getImagesToShow());
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   568
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   569
                    modeManagement.DetectProximityBasedModes(proximity);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   570
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   571
                    if (proximity > 0f)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   572
                    {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   573
                        UserPositionEventArgs userPositionEvent = new UserPositionEventArgs(server, debug, proximity, numberOfImages);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   574
                        OnUserPositionEvent(userPositionEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   575
                    }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   576
                    else if(proximity < 10f)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   577
                    {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   578
                        debug.hideSkeleton();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   579
                        modeManagement.DetectProximityBasedModes(0);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   580
                        LeftHandQuitEventArgs leftHandQuitEvent = new LeftHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   581
                        OnLeftHandQuitEvent(leftHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   582
                        RightHandQuitEventArgs rightHandQuitEvent = new RightHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   583
                        OnRightHandQuitEvent(rightHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   584
                    }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   585
                }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   586
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   587
                //Dessine le squelette dans le debug.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   588
                debug.drawJoints(first.Joints, first);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   589
                debug.showSkeleton(hipCenter, spine, shoulderCenter, head, shoulderLeft, elbowLeft, wristLeft, handLeft, shoulderRight, elbowRight, wristRight, handRight, hipLeft, kneeLeft, ankleLeft, footLeft, hipRight, kneeRight, ankleRight, footRight);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   590
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   591
            else
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   592
            {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   593
                debug.hideSkeleton();
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   594
                modeManagement.DetectProximityBasedModes(0);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   595
                LeftHandQuitEventArgs leftHandQuitEvent = new LeftHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   596
                OnLeftHandQuitEvent(leftHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   597
                RightHandQuitEventArgs rightHandQuitEvent = new RightHandQuitEventArgs(server, debug);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   598
                OnRightHandQuitEvent(rightHandQuitEvent);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   599
            }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   600
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   601
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   602
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   603
        *  Change l'échelle des coordonnées d'un noeud pour qu'en X et Y il corresponde à la résolution et en Z à la distance à la Kinect.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   604
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   605
        public Joint getJoint(Skeleton ske, JointType jointID)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   606
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   607
            return Coding4Fun.Kinect.Wpf.SkeletalExtensions.ScaleTo(ske.Joints[jointID], 600, 400, 0.75f, 0.75f);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   608
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   609
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   610
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   611
        *  Initialise l'événement et fait appel aux fonctions du listener quand la main gauche entre dans le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   612
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   613
        public static void OnLeftHandTrackedEvent(LeftHandTrackedEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   614
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   615
            if (LeftHandTrackedEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   616
                LeftHandTrackedEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   617
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   618
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   619
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   620
        *  Initialise l'événement et fait appel aux fonctions du listener quand la main droite entre dans le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   621
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   622
        public static void OnRightHandTrackedEvent(RightHandTrackedEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   623
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   624
            if (RightHandTrackedEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   625
                RightHandTrackedEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   626
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   627
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   628
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   629
        *  Initialise l'événement et fait appel aux fonctions du listener quand la main gauche quitte le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   630
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   631
        public static void OnLeftHandQuitEvent(LeftHandQuitEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   632
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   633
            if (LeftHandQuitEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   634
                LeftHandQuitEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   635
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   636
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   637
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   638
        *  Initialise l'événement et fait appel aux fonctions du listener quand la main droite quitte le champ.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   639
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   640
        public static void OnRightHandQuitEvent(RightHandQuitEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   641
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   642
            if (RightHandQuitEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   643
                RightHandQuitEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   644
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   645
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   646
        /*
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   647
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur se penche.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   648
        */
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   649
        public static void OnBendEvent(BendEventArgs e)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   650
        {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   651
            if (BendEvent != null)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   652
                BendEvent(new object(), e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   653
        }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   654
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   655
        /*
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   656
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur croise les bras en X.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   657
        */
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   658
        public static void OnCrossEvent(CrossEventArgs e)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   659
        {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   660
            if (CrossEvent != null)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   661
                CrossEvent(new object(), e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   662
        }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   663
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   664
        /*
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   665
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur lève le genou.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   666
        */
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   667
        public static void OnKneeUpEvent(KneeUpEventArgs e)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   668
        {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   669
            if (KneeUpEvent != null)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   670
                KneeUpEvent(new object(), e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   671
        }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   672
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   673
        /*
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   674
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur effectue un swipe right.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   675
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   676
        public static void OnSwipeEvent(SwipeEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   677
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   678
            if (SwipeEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   679
                SwipeEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   680
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   681
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   682
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   683
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur effectue un push.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   684
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   685
        public static void OnPushEvent(PushEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   686
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   687
            if (PushEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   688
                PushEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   689
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   690
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   691
        /*
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   692
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur effectue un saut.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   693
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   694
        public static void OnJumpEvent(JumpEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   695
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   696
            if (JumpEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   697
                JumpEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   698
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   699
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   700
        /*
17
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   701
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur effectue un cercle.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   702
        */
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   703
        public static void OnCircleEvent(CircleEventArgs e)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   704
        {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   705
            if (CircleEvent != null)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   706
                CircleEvent(new object(), e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   707
        }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   708
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   709
        /*
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   710
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur effectue un wave.
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   711
        */
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   712
        public static void OnWaveEvent(WaveEventArgs e)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   713
        {
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   714
            if (WaveEvent != null)
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   715
                WaveEvent(new object(), e);
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   716
        }
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   717
fda26bfcabef Middleware :
bastiena
parents: 16
diff changeset
   718
        /*
15
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   719
        *  Initialise l'événement et fait appel aux fonctions du listener quand l'utilisateur se déplace
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   720
         *  dans la zone de détection.
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   721
        */
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   722
        public static void OnUserPositionEvent(UserPositionEventArgs e)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   723
        {
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   724
            if (UserPositionEvent != null)
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   725
                UserPositionEvent(new object(), e);
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   726
        }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   727
    }
4b78f179e7ce Middleware :
bastiena
parents:
diff changeset
   728
}