private void OnDragBeganOnDotHandler(object grid)
        {
            var cellView = (GridCellView)grid;

            _currentDotOrigin = cellView as DotView;
            var gridDatum = cellView.GridDatum;

            if (_lineLookup.ContainsKey(gridDatum.ColorData.ColorId))
            {
                _currentLineRenderer = _lineLookup[gridDatum.ColorData.ColorId];
                if (_completedLines.ContainsKey(gridDatum.ColorData.ColorId))
                {
                    ClearLine(gridDatum.ColorData.ColorId);
                }
            }
            else
            {
                _currentLineRenderer            = Instantiate(_linePrefab, transform, false);
                _currentLineRenderer.startColor = _currentLineRenderer.endColor = gridDatum.ColorData.UnityColor;
                _lineLookup.Add(gridDatum.ColorData.ColorId, _currentLineRenderer);
            }

            var lineData = new List <Vector3Int>();
            var gridData = new List <GridDatum>();

            lineData.Add(GridUtility.GetLocalPositionFromIndices(gridDatum.PosX, gridDatum.PosY));
            UpdateLine(_currentLineRenderer, lineData);
            _currentGridDatum     = gridDatum;
            _currentLineColorData = gridDatum.ColorData;
            _currentLineData      = lineData;
            _currentLineGridData  = gridData;
            _lineDrawState        = LineDrawState.Drawing;
        }
 private void FinishDrawing()
 {
     _currentDotOrigin    = null;
     _currentGridDatum    = null;
     _currentLineData     = null;
     _currentLineRenderer = null;
     _currentLineData     = null;
     _lineDrawState       = LineDrawState.None;
 }
        private void CancelCurrentLine()
        {
            if (_currentLineRenderer == null)
            {
                return;
            }

            _currentLineRenderer.positionCount = 0;
            _currentLineRenderer  = null;
            _currentLineColorData = null;
            _currentDotOrigin     = null;
            foreach (var gridDatum in _currentLineGridData)
            {
                gridDatum.ColorData = null;
            }
            _lineDrawState = LineDrawState.None;
        }