private void CreateAndRun() { m_context = new Context(@"data\openNI.xml"); m_imageGenerator = new ImageGenerator(m_context); m_depthGenerator = new DepthGenerator(m_context); SessionManager sessionManager = new SessionManager(m_context, "Wave", "RaiseHand"); // update the state Dispatcher.BeginInvoke(() => { State = SessionState.Idle; }); sessionManager.SessionStart += SessionManager_SessionStart; sessionManager.SessionEnd += SessionManager_SessionEnd; PointControl pointControl = new PointControl(); pointControl.PrimaryPointCreate += PointControl_PrimaryPointCreate; pointControl.PrimaryPointDestroy += PointControl_PrimaryPointDestroy; pointControl.PrimaryPointUpdate += PointControl_PrimaryPointUpdate; SwipeDetector swipeDetector = new SwipeDetector(); swipeDetector.UseSteady = true; swipeDetector.SwipeLeft += SwipeDetector_SwipeLeft; swipeDetector.SwipeRight += SwipeDetector_SwipeRight; PointDenoiser denoiser = new PointDenoiser(); denoiser.AddListener(pointControl); denoiser.AddListener(swipeDetector); sessionManager.AddListener(denoiser); while (m_running) { m_context.WaitAndUpdateAll(); sessionManager.Update(m_context); } }