コード例 #1
0
    /// used for updating every frame
    /// @note While we are still steady (i.e. we haven't gotten a "not steady" event) we update
    /// the time and frame every frame!
    public override void UpdateFrame()
    {
        if (m_context == null || m_context.UserSkeletonValid == false)
        {
            return; // no data;
        }
        NISkeletonTracker tracker = m_pointTracker as NISkeletonTracker;

        if (tracker.Valid == false)
        {
            return; // no one to track.
        }
        NISelectedPlayer player = tracker.GetTrackedPlayer();

        if (player == null || player.Valid == false)
        {
            return;
        }
        NIUserAndSkeleton.NIPoseDetectionStateStatus curStatus = new NIUserAndSkeleton.NIPoseDetectionStateStatus();
        if (m_context.UserGenrator.GetPoseStatus(player.OpenNIUserID, m_poseName, ref curStatus) == false)
        {
            return; // we do not have good pose information
        }
        if (curStatus.m_eState != PoseDetectionState.InPose)
        {
            return;
        }
        if (curStatus.m_timePoseHeld >= m_timeToHoldPose)
        {
            InternalFireDetectEvent();
        }
    }
コード例 #2
0
 /// This is true if the gesture is in the middle of doing (i.e. it has detected but not gone out of the gesture).
 /// for our purposes this means the steady event has occurred and the unsteady has not occurred yet
 /// @return a value between 0 and 1. 0 means no pose, 1 means the pose has been detected and held 
 /// for a while. a value in the middle means the pose has been detected and has been held this
 /// portion of the time required to fire the trigger (@ref m_timeToHoldPose).
 public override float GestureInProgress()
 {
     if(m_context==null || m_context.UserSkeletonValid==false)
         return 0.0f; // no data;
     NISkeletonTracker tracker = m_pointTracker as NISkeletonTracker;
     if(tracker.Valid == false)
         return 0.0f; // no one to track.
     NISelectedPlayer player = tracker.GetTrackedPlayer();
     if(player==null || player.Valid==false)
         return 0.0f;
     NIUserAndSkeleton.NIPoseDetectionStateStatus curStatus = new NIUserAndSkeleton.NIPoseDetectionStateStatus();
     if (m_context.UserGenrator.GetPoseStatus(player.OpenNIUserID, m_poseName, ref curStatus) == false)
         return 0.0f; // we do not have good pose information
     if (curStatus.m_eState != PoseDetectionState.InPose)
         return 0.0f;
     if (curStatus.m_timePoseHeld < 0)
         return 0.0f;
     if (curStatus.m_timePoseHeld >= m_timeToHoldPose)
         return 1.0f;
     return curStatus.m_timePoseHeld / m_timeToHoldPose;
 }
コード例 #3
0
    /// This is true if the gesture is in the middle of doing (i.e. it has detected but not gone out of the gesture).
    /// for our purposes this means the steady event has occurred and the unsteady has not occurred yet
    /// @return a value between 0 and 1. 0 means no pose, 1 means the pose has been detected and held
    /// for a while. a value in the middle means the pose has been detected and has been held this
    /// portion of the time required to fire the trigger (@ref m_timeToHoldPose).
    public override float GestureInProgress()
    {
        if (m_context == null || m_context.UserSkeletonValid == false)
        {
            return(0.0f); // no data;
        }
        NISkeletonTracker tracker = m_pointTracker as NISkeletonTracker;

        if (tracker.Valid == false)
        {
            return(0.0f); // no one to track.
        }
        NISelectedPlayer player = tracker.GetTrackedPlayer();

        if (player == null || player.Valid == false)
        {
            return(0.0f);
        }
        NIUserAndSkeleton.NIPoseDetectionStateStatus curStatus = new NIUserAndSkeleton.NIPoseDetectionStateStatus();
        if (m_context.UserGenrator.GetPoseStatus(player.OpenNIUserID, m_poseName, ref curStatus) == false)
        {
            return(0.0f); // we do not have good pose information
        }
        if (curStatus.m_eState != PoseDetectionState.InPose)
        {
            return(0.0f);
        }
        if (curStatus.m_timePoseHeld < 0)
        {
            return(0.0f);
        }
        if (curStatus.m_timePoseHeld >= m_timeToHoldPose)
        {
            return(1.0f);
        }
        return(curStatus.m_timePoseHeld / m_timeToHoldPose);
    }
コード例 #4
0
 /// used for updating every frame
 /// @note While we are still steady (i.e. we haven't gotten a "not steady" event) we update
 /// the time and frame every frame!
 public override void UpdateFrame()
 {
     if (m_context == null || m_context.UserSkeletonValid == false)
         return; // no data;
     NISkeletonTracker tracker = m_pointTracker as NISkeletonTracker;
     if (tracker.Valid == false)
         return; // no one to track.
     NISelectedPlayer player = tracker.GetTrackedPlayer();
     if (player == null || player.Valid == false)
         return;
     NIUserAndSkeleton.NIPoseDetectionStateStatus curStatus = new NIUserAndSkeleton.NIPoseDetectionStateStatus();
     if (m_context.UserGenrator.GetPoseStatus(player.OpenNIUserID, m_poseName, ref curStatus) == false)
         return; // we do not have good pose information
     if (curStatus.m_eState != PoseDetectionState.InPose)
         return;
     if (curStatus.m_timePoseHeld >= m_timeToHoldPose)
         InternalFireDetectEvent();
 }