void nuiService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
 {
     if (this.userIsInRange)
     {
         this.ProcessHandControl(e);
     }
 }
Esempio n. 2
0
 void kinectService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
 {
     if (this.kinectService.UserIsInRange)
     {
         this.OffsetX = e.HandRight.Position.X * Scale;
         this.OffsetY = e.HandRight.Position.Y * -Scale;
     }
 }
 void nuiService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
 {
     if (this.enabled)
     {
         this.TorsoOffsetX =
             (this.BoundsDisplaySize / 2) * e.TorsoJoint.Position.X / (this.BoundsWidth / 2);
         this.TorsoOffsetZ = (this.BoundsDisplaySize / 2) * (e.TorsoJoint.Position.Z
                                                             - (this.MinDistanceFromCamera + this.BoundsDepth / 2)) / (this.BoundsDepth / 2);
     }
 }
        void kinectService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
        {
            UserPointColor = this.kinectService.UserIsInRange
                ? Color.FromArgb(255, 0, 255, 0) : Color.FromArgb(255, 255, 0, 0);

            TorsoOffsetX = (BoundsDisplaySize / 2) * e.Torso.Position.X / (BoundsWidth / 2);

            TorsoOffsetZ = (BoundsDisplaySize / 2) *
                           (e.Torso.Position.Z - (MinDistanceFromCamera + BoundsDepth / 2))
                           / (BoundsDepth / 2);
        }
        void AnalyzeSkeleton(SkeletonUpdatedEventArgs e)
        {
            if (e.HandRight.Position.Y > e.HipRight.Position.Y &&
                e.HandRight.Position.Y < e.Head.Position.Y &&
                e.HandRight.Position.X > (e.HipRight.Position.X + .2f)
                )
            {
                // adjust Y values so that head is at zero of y axis
                var hand   = e.HandRight.Position.Y - e.Head.Position.Y;
                var hip    = e.HipRight.Position.Y - e.Head.Position.Y;
                var result = hand / hip;

                var fraction = 1d / this.MenuItems.Count;

                for (var i = 1; i <= this.MenuItems.Count; i++)
                {
                    if (fraction * i > result)
                    {
                        var item = this.MenuItems[i - 1];
                        if (selectedItem != item)
                        {
                            if (selectedItem != null)
                            {
                                this.selectedItem.IsSelected = false;
                            }
                            this.selectedItem            = this.MenuItems[i - 1];
                            this.selectedItem.IsSelected = true;
                        }
                        break;
                    }
                }
            }
            //else
            //{
            //    if (this.selectedItem != null)
            //    {
            //        this.selectedItem.IsSelected = false;
            //        this.selectedItem = null;
            //    }
            //}
        }
 void kinectService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
 {
     this.AnalyzeSkeleton(e);
 }
        void ProcessHandControl(SkeletonUpdatedEventArgs e)
        {
            this.leftHandCanMove = e.LeftHandJoint.Position.Y < e.HeadJoint.Position.Y &&
                                   e.TorsoJoint.Position.Z - e.LeftHandJoint.Position.Z >= MinTorsoDistance &&
                                   e.TorsoJoint.Position.Z - e.RightHandJoint.Position.Z < MinTorsoDistance;

            this.rightHandCanMove = e.RightHandJoint.Position.Y < e.HeadJoint.Position.Y &&
                                    e.TorsoJoint.Position.Z - e.RightHandJoint.Position.Z >= MinTorsoDistance &&
                                    e.TorsoJoint.Position.Z - e.LeftHandJoint.Position.Z < MinTorsoDistance;

            this.canZoom = e.LeftHandJoint.Position.Y < e.HeadJoint.Position.Y &&
                           e.RightHandJoint.Position.Y < e.HeadJoint.Position.Y &&
                           e.TorsoJoint.Position.Z - e.LeftHandJoint.Position.Z >= MinTorsoDistance &&
                           e.TorsoJoint.Position.Z - e.RightHandJoint.Position.Z >= MinTorsoDistance;

            if (this.rotationXMoving & !this.leftHandCanMove)
            {
                // stop X rotation
                this.rotationXMoving = false;
                return;
            }

            if (this.rotationYMoving & !this.rightHandCanMove)
            {
                // stop y rotation
                this.rotationYMoving = false;
                return;
            }

            if (!this.rotationXMoving & this.leftHandCanMove)
            {
                // start x rotation
                this.previousX       = new Point(e.LeftHandJoint.Position.X, e.LeftHandJoint.Position.Y);
                this.rotationXMoving = true;
                return;
            }

            if (!this.rotationYMoving & this.rightHandCanMove)
            {
                // start y rotation
                this.previousY       = new Point(e.RightHandJoint.Position.X, e.RightHandJoint.Position.Y);
                this.rotationYMoving = true;
                return;
            }

            if (this.rotationXMoving & this.leftHandCanMove)
            {
                // continue x rotation
                this.HandleMeterMovement(
                    new Point(e.LeftHandJoint.Position.X, e.LeftHandJoint.Position.Y),
                    false,
                    true); // right and left are inversed
                return;
            }

            if (this.rotationYMoving & this.rightHandCanMove)
            {
                // continue y rotation
                this.HandleMeterMovement(
                    new Point(e.RightHandJoint.Position.X, e.RightHandJoint.Position.Y),
                    true,
                    false); // right and left are inversed
                return;
            }

            if (this.zooming & !this.canZoom)
            {
                // stop zooming
                this.zooming = false;
                return;
            }

            if (!this.zooming & this.canZoom)
            {
                // start zooming
                this.zooming   = true;
                this.previousY = this.previousY = new Point(e.RightHandJoint.Position.X, e.RightHandJoint.Position.Y);
                return;
            }

            if (this.zooming & this.canZoom)
            {
                // continue zooming
                this.HandleMeterMovement(
                    new Point(e.RightHandJoint.Position.X, e.RightHandJoint.Position.Y),
                    true,
                    true);
            }
        }
 void kinectService_SkeletonUpdated(object sender, SkeletonUpdatedEventArgs e)
 {
     this.OffsetX = e.HandRightJoint.Position.X * Scale;
     this.OffsetY = e.HandRightJoint.Position.Y * -Scale;
 }