private void ResetStatue()
 {
     if (!gameend)
     {
         current_challenge_succeed = false;
         challenge_countdown       = 10;
         Dictionary <ulong, GameObject> trackingbody = roomeventmanager.KinectEventSourceManager.GetComponent <KinectGestureEventController>().GetKinectBodyArgsManagers();
         foreach (GameObject body in trackingbody.Values)
         {
             KinectBodyArgsManager bodyarg = body.GetComponent <KinectBodyArgsManager>();
             bodyarg.myState = GestureState.NotValiding; //iter all body and set them to notvaliding(waiting for next challenge)
         }
     }
 }
        public IEnumerator KeepValiding()
        {
            Debug.Log($"{IenumeratorIndex} challenge start!");
            roomeventmanager.GestureName.text = $"challing on {RoomEventManager.currentchallenge}";
            while (challenging)                                  //when challinging
            {
                CheckBaseCondition();                            //move this mother f****r
                uint CountSucceed = 0;                           //cuclate the condition if match
                Dictionary <ulong, GameObject> trackingbody = roomeventmanager.KinectEventSourceManager.GetComponent <KinectGestureEventController>().GetKinectBodyArgsManagers();
                foreach (GameObject body in trackingbody.Values) //iter all
                {
                    //emit different event
                    KinectBodyArgsManager bodyarg = body.GetComponent <KinectBodyArgsManager>();
                    bodyarg.displaystate();
                    switch (bodyarg.myState)
                    {
                    case GestureState.NotValiding:
                        // roomeventmanager.CurrentGestureState.text = "NotValiding";

                        break;

                    case GestureState.Validing:
                        // roomeventmanager.CurrentGestureState.text = $"this guy is Validing Gesture On {RoomEventManager.currentchallenge}";
                        break;

                    case GestureState.Completed:
                        // roomeventmanager.CurrentGestureState.text = $"this guy is completed{RoomEventManager.currentchallenge}";
                        CountSucceed += 1;                              //count

                        if (CountSucceed >= roomeventmanager.Maxpeople) //once the count match to the condition
                        {
                            challenging = false;
                            current_challenge_succeed         = true;
                            roomeventmanager.GestureName.text = $"Current Challenge{RoomEventManager.currentchallenge} succeed!";
                            yield break;     //end this loop
                        }

                        break;     //this break is for 1 person
                    }
                    //emit different event
                }
                yield return(null);
            }
            yield break;
        }
 public OnValiding(KinectBodyArgsManager _kinectbodyargsmanager) : base(_kinectbodyargsmanager)
 {
 }
 public ValidGestureState(KinectBodyArgsManager _kinectbodyargsmanager)
 {
     kinectbodyargsmanager = _kinectbodyargsmanager;
 }
 public Completed(KinectBodyArgsManager _kinectbodyargsmanager) : base(_kinectbodyargsmanager)
 {
 }