void OpenPanel(PanelOpenSignal signal)
    {
        var v = signal.SelectedVehicle;

        Vehicle3D result = null;

        result = _vehicles3D.GetItem(v.Id);

        if (result != null)
        {
            Debug.Log("panello trovato");
            _vehicles3D.RemoveItem(v.Id);
            result.Dispose();
        }
        else
        {
            AddVehicle3D(v);
        }
    }
    void OpenPanel(PanelOpenSignal signal)
    {
        //Debug.Log("[OpenPanel]");
        var v = signal.SelectedVehicle;

        VehicleDetailsPanelView result = null;

        if (_panels.ContainsKey(v.Id))
        {
            result = _panels[v.Id];
        }

        if (result != null)
        {
            //Debug.Log("panello trovato");

            if (result.Closing())
            {
                //Debug.Log("panello in chiusura, lo riapro");
                result.Show();
            }
            else
            {
                //Debug.Log("panello da chiudere");
                DoPanelClose(result);
            }
        }
        else
        {
            //Debug.Log("panello da creare e aprire");

            //Debug.Log("_panels.Count: " + _panels.Count);

            VehicleDetailsPanelView newPanel = _panelFactory.Create(v);
            newPanel.transform.SetParent(_canvasTransform);
            newPanel.Show();

            System.Random random = new System.Random();
            int           x      = random.Next(-400, 400);
            int           y      = random.Next(-300, 300);
            newPanel.GetComponent <RectTransform>().anchoredPosition = new Vector2(x, y);

            if (_panels.TryAdd(v.Id, newPanel))
            {
                //Debug.Log("panel added");
            }
            //Debug.Log("after Add: _panels.Count=" + _panels.Count);

/*
 *          if(v.Avm)
 *          {
 *              Vehicle3D vehicle3D = null;
 *              if(v.CodiceFamiglia==model.CodiceFamigliaEnum.EXTRAURBANO)
 *                  vehicle3D = _extraurbanoFactory.Create(v);
 *              else
 *                  vehicle3D = _urbanoFactory.Create(v);
 *
 * //                _vehicles3D.AddItem(v.Id, vehicle3D);
 *          }
 */
        }

        _scoreLabel.text = "Panels: " + _panels.Count.ToString();
        RemoveOldPanels();
    }