From 9a8cff691598b7b98b062d2dacaba91110aed13b Mon Sep 17 00:00:00 2001 From: lobroda Date: Thu, 8 Feb 2024 16:26:59 +0100 Subject: [PATCH] ADD : Avancement GestureManager (Not Finished at all) --- KinectUtils/GestureManager.cs | 54 +++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/KinectUtils/GestureManager.cs b/KinectUtils/GestureManager.cs index 0ec7c72..f7760df 100644 --- a/KinectUtils/GestureManager.cs +++ b/KinectUtils/GestureManager.cs @@ -1,4 +1,5 @@ using KinectConnection; +using Microsoft.Kinect; using System; using System.Collections.Generic; using System.Linq; @@ -7,13 +8,16 @@ using System.Threading.Tasks; namespace KinectUtils { - // static ? public class GestureManager { + + private static bool isAcquiringFrame; + private static BodyFrameReader bodyFrameReader; + // Properties public static KinectManager KinectManager { get; set; } = new KinectManager(); - public static IEnumerable KnownGestures { get; private set; } = new List(); + public static List KnownGestures { get; private set; } = new List(); // public static EventHandler GestureRecognized { get; set; } @@ -31,11 +35,51 @@ namespace KinectUtils throw new NotImplementedException(); } - public static void RemoveGesture(BaseGesture baseGesture) { throw new NotImplementedException(); } + public static void RemoveGesture(BaseGesture baseGesture) + { + //baseGesture.GestureRecognized -= + KnownGestures.Remove(baseGesture); + } - public static void StartAcquiringFrames(KinectManager manager) { throw new NotImplementedException(); } + public static void StartAcquiringFrames(KinectManager manager) + { + if (!isAcquiringFrame) + { + KinectManager.KinectSensor.Open(); + bodyFrameReader = KinectManager.KinectSensor.BodyFrameSource.OpenReader(); + bodyFrameReader.FrameArrived += BodyFrameReader_FrameArrived; + isAcquiringFrame = true; + } + } - public static void StopAcquiringFrame(KinectManager manager) { throw new NotImplementedException(); } + public static void StopAcquiringFrame(KinectManager manager) + { + if (isAcquiringFrame) + { + KinectManager.KinectSensor.Close(); + bodyFrameReader.FrameArrived -= BodyFrameReader_FrameArrived; + isAcquiringFrame = false; + } + } + private static void BodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) + { + using (var bodyFrame = e.FrameReference.AcquireFrame()) + { + if (bodyFrame != null) + { + Body[] bodies = new Body[bodyFrame.BodyCount]; + bodyFrame.GetAndRefreshBodyData(bodies); + + foreach (Body body in bodies) + { + if (body.IsTracked) + { + //postureHandUpRight.TestGesture(body); + } + } + } + } + } } }