/// <summary> /// Gets the human body pose 2D joints for the current frame. /// </summary> /// <param name="defaultHumanBodyPose2DJoint">The default value for the body pose 2D joint.</param> /// <param name="screenWidth">The width of the screen, in pixels.</param> /// <param name="screenHeight">The height of the screen, in pixels.</param> /// <param name="screenOrientation">The orientation of the device so that the joint positions may be /// adjusted as required.</param> /// <param name="allocator">The allocator to use for the returned array memory.</param> /// <returns> /// The array of body pose 2D joints. /// </returns> /// <remarks> /// The returned array may be empty if the system does not detect a human in the camera image. /// </remarks> public override unsafe NativeArray <XRHumanBodyPose2DJoint> GetHumanBodyPose2DJoints(XRHumanBodyPose2DJoint defaultHumanBodyPose2DJoint, int screenWidth, int screenHeight, ScreenOrientation screenOrientation, Allocator allocator) { var joints = NativeApi.UnityARKit_HumanBodyProvider_AcquireHumanBodyPose2DJoints(screenWidth, screenHeight, screenOrientation, out int length, out int elementSize); try { var returnJoints = NativeCopyUtility.PtrToNativeArrayWithDefault(defaultHumanBodyPose2DJoint, joints, elementSize, length, allocator); return(returnJoints); } finally { NativeApi.UnityARKit_HumanBodyProvider_ReleaseHumanBodyPose2DJoints(joints); } }