private void UpdateHandTrackData(HandCollection handData)
{
foreach (var newHand in handData.Hands.Where(h => !this.handTracks.Any(t => t.Id == h.Id)))
{
this.handTracks.Add(new HandTracker(newHand));
}
foreach (var handTrack in this.handTracks.ToList())
{
var newHand = handData.Hands.Where(h => h.Id == handTrack.Id).FirstOrDefault();
if (newHand == null)
{
this.handTracks.Remove(handTrack);
}
else
{
if (!newHand.HasPalmPoint)
{
continue;
}
handTrack.SetHandData(newHand);
var hoveredImage = this.images.Where(i => this.ImageContains(i, newHand.PalmPoint.Value)).LastOrDefault();
if (hoveredImage != null)
{
MoveImageToFront(hoveredImage);
handTrack.HandleTranslation(hoveredImage, this.handLayer.ZoomFactor);
}
}
}
}