protected override void StopDrawing()
        {
            base.StopDrawing();
            for (int i = _triangleHelper.Length - 1; i >= 0; i--)
            {
                if (_triangleHelper[i] != null)
                {
                    Destroy(_triangleHelper[i].gameObject);
                }

                _triangleHelper[i] = null;
            }

            Destroy(_previewMeshFilter.gameObject);
            _previewVertices.Clear();
            _triangles.Clear();
            _vertices.Clear();
            LastDrawnObjects.Push(_completeMeshFilter.gameObject);
            if (_completeMeshFilter.mesh.vertices.Length <= 2)
            {
                Undo();
            }
            _previewMesh  = null;
            _completeMesh = null;
        }
        // Base stop drawing method
        protected override void StopDrawing()
        {
            base.StopDrawing();
            LastDrawnObjects.Push(_currentLineRenderer.gameObject);
            switch (Mode)
            {
            case LineMode.FreeHand:
                FreeHandDraw(false);
                break;

            case LineMode.Straight:
                _positions.RemoveAt(_positions.Count - 1);
                SetPositions();
                break;
            }
            _positions.Clear();
            Mode = LineMode.None;
        }
        /// <summary>
        /// Draw measurement positions
        /// </summary>
        public override void DrawObject()
        {
            int pointId = clickCounter % 2;

            switch (pointId)
            {
            case 0:
                var prefab            = MeasureObjectPrefab.gameObject;
                var measureGameObject = Instantiate <GameObject>(prefab, Vector3.zero, Quaternion.identity, transform);
                currentMeasureObjectManager = measureGameObject.GetComponent <MeasurementObjectManager>();
                LastDrawnObjects.Push(measureGameObject);
                break;

            case 1:
                currentMeasureObjectManager.DoMeasurement();
                break;
            }
            currentMeasureObjectManager.SetPoint(pointId, CurrentPosition, true);
            clickCounter++;
        }
        protected override void StopDrawing()
        {
            base.StopDrawing();

            if (!_writtenLine.enabled)
            {
                Destroy(_writtenLine.gameObject);
            }
            else
            {
                LastDrawnObjects.Push(_writtenLine.gameObject);
                //SnapToPlane();
            }

            if (!_writtenPoint.enabled)
            {
                Destroy(_writtenPoint.gameObject);
            }
            else
            {
                LastDrawnObjects.Push(_writtenPoint.gameObject);
            }
        }
        /// <summary>
        /// Base draw method, draws points
        /// </summary>
        public override void DrawObject()
        {
            var point = Instantiate <GameObject>(_pointPrefab, CurrentPosition, Quaternion.identity, transform);

            LastDrawnObjects.Push(point);
        }