private void _reader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
        {
            using (var frame = e.FrameReference.AcquireFrame())
            {
                var fp = KinectMathAdapter.Plane3DFromVector4(frame.FloorClipPlane);

                OnFloorPlaneAvailable(fp);

                var bodies = new Body[frame.BodyCount];
                frame.GetAndRefreshBodyData(bodies);
                foreach (var body in bodies)
                {
                    if (!body.IsTracked)
                    {
                        continue;
                    }
                    BodyDataAvailable?.BeginInvoke(body, EndAsyncEvent, null);
                }
            }
        }