using Microsoft.Kinect; using System.ComponentModel; using System.Diagnostics; namespace Lib { public class KinectManager : INotifyPropertyChanged { private KinectSensor sensor; public KinectSensor Sensor { get { return sensor; } set { sensor = value; OnPropertyChanged(nameof(Sensor)); } } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public KinectManager() { sensor = KinectSensor.GetDefault(); if (Sensor == null) { StatusText = "Kinect n'est pas connecté"; } else if (!Sensor.IsOpen) { StatusText = "Kinect n'est pas ouvert"; } else if (Sensor.IsAvailable) { StatusText = "Kinect est disponible"; } else { StatusText = "Kinect n'est pas disponible"; } } public void StartSensor() { if (sensor != null) { sensor.Open(); } else { sensor = KinectSensor.GetDefault(); sensor.Open(); } } public void StopSensor() { if (sensor != null) { sensor.Close(); sensor = null; } } public bool Status { get { return Sensor != null && Sensor.IsAvailable; } } private string _statusText; public string StatusText { get { return _statusText; } set { _statusText = value; if(this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs("StatusText")); } } } private void KinectSensor_IsAvailableChanged(object sender, IsAvailableChangedEventArgs args) { if (Sensor == null) { StatusText = "Kinect n'est pas connecté"; } else if (!Sensor.IsOpen) { StatusText = "Kinect n'est pas ouvert"; } else if (Sensor.IsAvailable) { StatusText = "Kinect est disponible"; } else { StatusText = "Kinect n'est pas disponible"; } } } }