/// <summary>
        /// Sets a new coordinate frame. This is different from simply setting
        /// the <see cref="coordinateFrame"/>. This method causes the reference point
        /// to be computed relative to a different coordinate frame entirely.
        /// </summary>
        /// <param name="cfuid">The UID of the new coordinate frame</param>
        /// <param name="coordinateFrame">The pose of the new coordinate frame</param>
        public void SetCoordinateFrame(MLCoordinateFrameUID cfuid, Pose coordinateFrame)
        {
            // Compute the current reference point pose
            var pose = referencePointPose;

            // Set new coordinate frame
            this.cfuid           = cfuid;
            this.coordinateFrame = coordinateFrame;

            // Recompute the delta transform based on the new coordinate frame
            ComputeDelta(pose);
        }
 public static extern MLResult.Code MLPersistentCoordinateFrameGetClosest(ulong trackerHandle, ref MLVec3f target, ref MLCoordinateFrameUID cfuId);
 public static extern bool TryGetPose(MLCoordinateFrameUID id, out Pose out_pose);
 public static unsafe extern MLApiResult GetClosest(ulong tracker_handle, ref Vector3 target, out MLCoordinateFrameUID out_cfuid);