void SampleListener::onFrame(const Controller& controller) { bool thand, index = false; // Get the most recent frame and report some basic information const Frame frame = controller.frame(); // Receive Hand List HandList hands = frame.hands(); // For all hands for (HandList::const_iterator hl = hands.begin(); hl != hands.end(); ++hl) { // Get the first hand const Hand hand = *hl; // Only for right hand if( hand.isRight() ) { // Get fingers const FingerList fingers = hand.fingers(); // For all fingers in the list for (FingerList::const_iterator fl = fingers.begin(); fl != fingers.end(); ++fl) { Bone bone; const Finger finger = *fl; // If thamb or Index finger if( finger.type() == Finger::TYPE_THUMB ) { // Receive nided bone bone = finger.bone(Bone::TYPE_DISTAL); m_vThand = bone.center(); thand = true; } else if( finger.type() == Finger::TYPE_INDEX ) { // Receive nided bone bone = finger.bone(Bone::TYPE_DISTAL); m_vIndex = bone.center(); index = true; } } } } bool newState; if( !thand || !index ) { newState = false; } else { float distance = m_vThand.distanceTo(m_vIndex); qDebug () << "Distance: " << distance; if( distance < 40 ) { newState = true; } else { newState = false; } } if( newState != m_bLastState ) { Q_EMIT releySignal( newState ); m_bLastState = newState; } }