public static SkeletonPoint DepthToSkeleton(Rectangle rect, byte[,,] depthData, int width, int height, CoordinateConverter mapper) { var aveDepth = 0.0; var count = 0; for (int y = rect.Top; y < rect.Top + rect.Height && y < height; y++) { for (int x = rect.Left; x < rect.Left + rect.Width && x < width; x++) { if (x > 0 && y > 0) { aveDepth += depthData[y, x, 0]; count++; } } } var depth = PlayerDetector.ToWorldDepth(aveDepth / count); var center = rect.Center(); var centerX = Math.Max(0, center.X); centerX = Math.Min(centerX, width); var centerY = Math.Max(0, center.Y); centerY = Math.Min(centerY, height); return(mapper.MapDepthPointToSkeletonPoint((int)centerX, (int)centerY, depth)); }