/// <summary> /// Handle the callback sent by the Tango Service when a new pose is sampled. /// </summary> /// <param name="callbackContext">Callback context.</param> /// <param name="pose">The pose data returned from Tango.</param> private void _OnPoseAvailable(IntPtr callbackContext, TangoPoseData pose) { if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { // MotionTracking lock (m_lockObject) { m_motionTrackingData.DeepCopy(pose); m_isMotionTrackingPoseAvailable = true; } } else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { // ADF Localized lock (m_lockObject) { m_areaLearningData.DeepCopy(pose); m_isAreaLearningPoseAvailable = true; } } else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE) { // Relocalized against ADF lock (m_lockObject) { m_relocalizationData.DeepCopy(pose); m_isRelocalizaitonPoseAvailable = true; } } }
/// <summary> /// Handle the callback sent by the Tango Service when a new pose is sampled. /// </summary> /// <param name="callbackContext">Callback context.</param> /// <param name="pose">Pose.</param> private void _OnPoseAvailable(IntPtr callbackContext, TangoPoseData pose) { if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { // MotionTracking lock (m_lockObject) { // Only set new pose once the previous pose has been returned. if (m_motionTrackingData == null) { TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_motionTrackingData = currentPose; } } } else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { // ADF Localized lock (m_lockObject) { // Only set new pose once the previous pose has been returned. if (m_areaLearningData == null) { TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_areaLearningData = currentPose; } } } else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE) { // Relocalized against ADF lock (m_lockObject) { // Only set new pose once the previous pose has been returned. if (m_relocalizationData == null) { TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_relocalizationData = currentPose; } } } m_isDirty = true; }