using CommunityToolkit.Mvvm.ComponentModel; using Microsoft.Kinect; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Resources; using System.Security.Policy; using System.Text; using System.Threading.Tasks; namespace KinectConnection { /// /// Classe KinectManager permettant la gestion des évènements autour du Kinect /// public class KinectManager : ObservableObject { private KinectSensor kinectSensor; private bool status; private string statusText; /// /// Constructeur de la classe KinectManager /// public KinectManager() { this.kinectSensor = KinectSensor.GetDefault(); this.Status = false; } /// /// Propriété définissant le statut de l'état actuel du Kinect sous la forme d'un booléen /// public bool Status { get { return status; } set { SetProperty(ref status, value); } } /// /// Propriété définissant le statut de l'état actuel du Kinect sous la forme d'un string /// public string StatusText { get { return statusText; } set { SetProperty(ref statusText, value); } } /// /// Méthode permettant de lancer la méthode Open du KinectSensor et de s'abonner à l'évènement "IsAvailableChanged" /// public void StartSensor() { this.kinectSensor.Open(); this.kinectSensor.IsAvailableChanged += this.KinectSensor_IsAvailableChanged; } /// /// Méthode permettant de lancer la méthode Close du KinectSensor et de se désabonner à l'évènement "IsAvailableChanged" /// public void StopSensor() { this.kinectSensor.IsAvailableChanged -= this.KinectSensor_IsAvailableChanged; this.kinectSensor.Close(); } /// /// Évènement IsAvailableChanged permettant de mettre à jour les propriétés du KinectManager en fonction de l'état du kinect /// /// /// private void KinectSensor_IsAvailableChanged(object sender, IsAvailableChangedEventArgs args) { this.StatusText = this.kinectSensor.IsAvailable ? "Kinect Available" : "Kinect Not Available"; this.Status = this.kinectSensor.IsAvailable; } } }