public void matchFaceWithBody(FaceFrameSource[] faceFrameSources, FaceFrameResult[] faceFrameResults, FaceProcessor faceProcessor)
        {
            foreach (var body in bodies)
            {
                if (!body.IsTracked)
                {
                    continue;
                }

                int i = getBodyIndex(body);
                //Debug.Print("Body {0} comes with ID {1}", i, body.TrackingId);

                if (faceFrameSources[i].IsTrackingIdValid)
                {
                    // check if we have valid face frame results
                    //Debug.Print("Source Valid {0}", i);

                    if (faceFrameResults[i] != null)
                    {
                        //Debug.Print("Result Valid {0}", i);
                        int pitch, yaw, roll;
                        faceProcessor.ExtractFaceRotationInDegrees(faceFrameResults[i].FaceRotationQuaternion, out pitch,
                            out yaw, out roll);

                        eManager.users[faceFrameSources[i].TrackingId].headPitch = pitch;
                        eManager.users[faceFrameSources[i].TrackingId].headYaw = yaw;
                        eManager.users[faceFrameSources[i].TrackingId].headRoll = roll;
                    }
                    else
                    {
                        eManager.users[faceFrameSources[i].TrackingId].headPitch = 1000;
                        eManager.users[faceFrameSources[i].TrackingId].headYaw = 1000;
                        eManager.users[faceFrameSources[i].TrackingId].headRoll = 1000;
                    }

                    if (eManager.HasEngaged && eManager.Engager.body.TrackingId == faceFrameSources[i].TrackingId)
                    {
                        //Debug.Print("Engager: {0}", eManager.Engager.body.TrackingId);
                        eManager.setTrackerFaceOrientation(faceFrameSources[i].TrackingId);

                    }
                }
                else
                {
                    faceFrameSources[i].TrackingId = bodies[i].TrackingId;
                }
            }
        }
        //private EngagerTracker eTracker;
        public void start()
        {
            //eTracker = new EngagerTracker();
            eManager = new EngagementManager();

            man = new Manipulator();
            //recogniser = new GestureRecogniser();

            bodyProcessor = new BodyProcessor(drawer, eManager);
            faceProcessor = new FaceProcessor();

            ffsDic = new Dictionary<FaceFrameSource, int>();

            CoordinateConverter.Sensor = sensor;
            bodyCount = sensor.BodyFrameSource.BodyCount;

            readBodyFrame();
            readFaceFrame();
        }