private void HandleCoordinateChange(IVoxelDataController dc, Coordinate prevCoord, int radius)
        {
            if (prevCoord.Weight != dc.Coordinate.Weight)
            {
                m_voxelMap.Map.ForEachInRadius(prevCoord, radius, (ignoredCell, pos) =>
                {
                    IgnoreCell(dc.ControlledData.Owner, ignoredCell, pos, prevCoord.Weight);
                });

                m_voxelMap.Map.ForEachInRadius(dc.Coordinate, radius, (observedCell, pos) =>
                {
                    ObserveCell(dc.ControlledData.Owner, observedCell, pos, dc.Coordinate.Weight);
                });
            }
            else if (prevCoord.Row != dc.Coordinate.Row)
            {
                Debug.Assert(Mathf.Abs(prevCoord.Row - dc.Coordinate.Row) == 1);
                m_voxelMap.Map.ForEachColInRadius(prevCoord, radius * (int)Mathf.Sign(dc.Coordinate.Row - prevCoord.Row), (ignoredCell, pos) =>
                {
                    IgnoreCell(dc.ControlledData.Owner, ignoredCell, pos, prevCoord.Weight);
                });

                m_voxelMap.Map.ForEachColInRadius(dc.Coordinate, -radius * (int)Mathf.Sign(dc.Coordinate.Row - prevCoord.Row), (observedCell, pos) =>
                {
                    ObserveCell(dc.ControlledData.Owner, observedCell, pos, dc.Coordinate.Weight);
                });
            }
            else if (prevCoord.Col != dc.Coordinate.Col)
            {
                Debug.Assert(Mathf.Abs(prevCoord.Col - dc.Coordinate.Col) == 1);
                m_voxelMap.Map.ForEachRowInRadius(prevCoord, radius * (int)Mathf.Sign(dc.Coordinate.Col - prevCoord.Col), (ignoredCell, pos) =>
                {
                    IgnoreCell(dc.ControlledData.Owner, ignoredCell, pos, prevCoord.Weight);
                });

                m_voxelMap.Map.ForEachRowInRadius(dc.Coordinate, -radius * (int)Mathf.Sign(dc.Coordinate.Col - prevCoord.Col), (observedCell, pos) =>
                {
                    ObserveCell(dc.ControlledData.Owner, observedCell, pos, dc.Coordinate.Weight);
                });
            }

            m_minimap.Move(dc.ControlledData, prevCoord, dc.Coordinate);
        }