private void Start()
        {
            MLResult result = MLImageTracker.Start();

            if (!result.IsOk)
            {
                Debug.LogErrorFormat("MLImageTrackerBehavior failed to start image tracker. Reason: {0}", result);
                return;
            }

            _imageTarget = MLImageTracker.AddTarget(gameObject.GetInstanceID().ToString(), Image, LongerDimensionInSceneUnits, HandleTargetResult, IsStationary);
            if (_imageTarget == null)
            {
                Debug.LogErrorFormat("MLImageTrackerBehavior failed to add target {0} to the image tracker.", gameObject.name);
            }

            _trackerResult.Status = MLImageTargetTrackingStatus.NotTracked;
        }
 private void OnDestroy()
 {
     MLImageTracker.RemoveTarget(gameObject.GetInstanceID().ToString());
     MLImageTracker.Stop();
 }
            /// <summary>
            /// Updates this image target's tracking data, status, and transforms.
            /// OnImageResult is called with the updated result.
            /// </summary>
            public void UpdateTrackingData()
            {
                bool success = false;

                if (MagicLeapNativeBindings.MLHandleIsValid(this.trackerHandle) && this.IsValid)
                {
                    MLResult.Code result = NativeBindings.MLImageTrackerGetTargetResult(this.trackerHandle, this.targetHandle, ref this.nativeTrackingResult);
                    if (result != MLResult.Code.Ok)
                    {
                        MLPluginLog.ErrorFormat("MLImageTracker.Target.UpdateTrackingData failed getting image tracker target result. Reason: {0}", result);
                    }
                    else
                    {
                        this.lastTrackingResult.Status = (TrackingStatus)this.nativeTrackingResult.Status;
                        if (TrackingStatus.NotTracked == this.lastTrackingResult.Status || !MLImageTracker.GetTrackerStatus())
                        {
                            // If the target is not being tracked then there is no need to query for the transform.
                            success = true;
                        }
                        else
                        {
                            if (MagicLeapNativeBindings.UnityMagicLeap_TryGetPose(this.targetStaticData.CoordFrameTarget, out Pose outputPose))
                            {
                                this.lastTrackingResult.Position  = outputPose.position;
                                this.lastTrackingResult.Rotation  = outputPose.rotation;
                                this.lastTrackingResult.Rotation *= Quaternion.Euler(270, 0, 0);
                                success = true;
                            }
                            else
                            {
                                MLPluginLog.Error("MLImageTracker.Target.UpdateTrackingData failed getting target transforms.");
                            }
                        }
                    }

                    if (success)
                    {
                        this.OnImageResult?.Invoke(this, this.lastTrackingResult);
                    }
                }
                else
                {
                    MLPluginLog.ErrorFormat("MLImageTracker.Target.UpdateTrackingData failed. Reason: Handle was not valid: Tracker Handle: {0}, Existing Target Handle: {1}.", this.trackerHandle, this.targetHandle);
                }
            }