Santo Graal delle bestemmie trovato!
Come ho fatto a non pensarci prima. I px all’interno del tag G sono sempre da intendersi con scale = 1! Quindi è ovvio che ragionare in px dello schermo non va bene, perché all’esterno del tag G 1 px della variabile = 1 px dello schermo, ma all’interno del G 1 px della variabile = (1 / scale) px dello schermo.
Non sono sicuro che questo risolva tutti i problemi, ma di sicuro in quando non correggo questo problema non potrà funzionare.
Come fare… mmm.. dunque
Ho comunque bisogno di coordinate in cache in px schermo di ogni disegno per quando implementerò il click sulla dashboard (magari in futuro questa idea si rivelerà una cazzata ed eliminerò parecchio codice su drag e zoom, ma per ora lo tengo), quindi continuo con gli _updateCacheForDrag e _updateCacheForZoom. Ma al momento della visualizzazione oltre che sottrarre le attuali coordinate in px generali del gruppo, devo anche moltiplicare per lo scale.
E fine, speriamo che funzioni e che non ci sia altro.
Ho modificato anche il socket backend per non inviare 2 volte lo stesso disegno allo stesso client. Quando implementerò la cache client che elimina i disegni vecchi, dovrò comunicare al server che in caso di bisogno devono essere trasferiti di nuovo.