private Skeleton FindClosestSkeleton(Skeleton[] skeletons)
{
var seed = new
{
Distance = float.PositiveInfinity,
Skeleton = new Skeleton()
};
var result = skeletons.Where(skeleton => skeleton.TrackingState != SkeletonTrackingState.NotTracked)
.Aggregate(seed, (running, cur) =>
{
if (cur.Position.Z >= running.Distance)
return running;
return new
{
Distance = cur.Position.Z,
Skeleton = cur
};
});
return result.Skeleton;
}