public void updateAdd(E e) {
        ArrayList<Vec2i> vec2iArr = entities.get(e);
        if(vec2iArr == null)
        {
            // Это новый элемент, вызываем add
            this.add(e);
            return;
        }
        Rect rect = e.getAABB();
        int beginx = (int) (rect.x - rect.w2) / width;
        int beginy = (int) (rect.y - rect.h2) / height;
        int endx = (int) (rect.x + rect.w2) / width;
        int endy = (int) (rect.y + rect.h2) / height;
        
        ArrayList<Vec2i> newvec2iArr = new ArrayList<Vec2i>();




        Vec2i pos;
        for (int y = beginy; y <= endy; y++) {
            for (int x = beginx; x <= endx; x++) {
                pos = new Vec2i(x, y);
                
                if (vec2iArr.contains(pos)) {
                    // Уже добавлен в нужную клетку
                    newvec2iArr.add(pos);
                    vec2iArr.remove(pos);
                } else {
                    
                    ArrayList<E> mapList = map.get(pos);
                    if (mapList == null) {
                        mapList = new ArrayList<E>();
                        mapList.add(e);
                        map.put(pos, mapList);
                    } else {
                        mapList.add(e);
                    }
                    
                   newvec2iArr.add(pos);

                }


            }
        }
        for (Vec2i vec : vec2iArr)
        {
            ArrayList<E> mapList = map.get(vec);
            mapList.remove(e);
        }
        
        entities.put(e, newvec2iArr);
        
        // Теперь нужно удалить оставшееся из старого массива.
        
    }