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;
}
}
}