• Почему квадрантовое дерево медленнее брутфорса?

    @Quark_Hell Автор вопроса
    mikhanoid, Действительно,это в некотором смысле решило мою проблему.Теперь дерево в однопотоке работает так-же,как и брутфорс в многопотоке(даже чуть быстрее).Однако применение многопотока на алгоритм квадрантового дерева практически никак не отражается на производительности,что очень странно,ведь я таким способом надеялся понизить время выполнения в 2-3 раза.В любом случае спасибо за помощь.Эту уже другая история)))
  • Почему квадрантовое дерево медленнее брутфорса?

    @Quark_Hell Автор вопроса
    mikhanoid, А,извините.Я вас понял.
    Это всё,что мне нужно было сделать?Просто программа стала работать ещё медленнее
    Вот как это выглядит у меня:
    vector<Unit> query(Rectangle &range, vector<Unit> &found) {
            if (!Boundary.Intersects(range)) {
                return found;
            }
            else {
                for (size_t i = 0; i < Points.size(); i++) {
                    if (range.Contains(Points[i])) {
                        found.push_back(Points[i]);
                    }
                }
                if (NorthWest == nullptr) {
                    return found;
                }
                if (Divided) {
                    vector <Unit> NWfound = NorthWest->query(range,found);
                    //found.insert(found.end(), NWfound.begin(), NWfound.end());
    
                    vector <Unit> NEfound = NorthEast->query(range,found);
                    //found.insert(found.end(), NEfound.begin(), NEfound.end());
    
                    vector <Unit> SWfound = SouthWest->query(range,found);
                    //found.insert(found.end(), SWfound.begin(), SWfound.end());
    
                    vector <Unit> SEfound = SouthEast->query(range,found);
                    //found.insert(found.end(), SEfound.begin(), SEfound.end());
                }
            }
            return found;
        }


    vector<Unit> unitInRangeView;
    quadTree.query(range, unitInRangeView);//Все юниты,которые находятся в радиусе обзора юнита
  • Почему квадрантовое дерево медленнее брутфорса?

    @Quark_Hell Автор вопроса
    mikhanoid, что вы предлагаете сделать с push_back ?
  • Почему квадрантовое дерево медленнее брутфорса?

    @Quark_Hell Автор вопроса
    mikhanoid, Если я вас правильна понял,то вы хотите,чтобы я сделал так:
    vector<Unit> query(Rectangle range, vector<Unit> found = vector<Unit>(0)) {
            if (!Boundary.Intersects(range)) {
                return found;
            }
            else {
                for (size_t i = 0; i < Points.size(); i++) {
                    if (range.Contains(Points[i])) {
                        found.push_back(Points[i]);
                    }
                }
                if (NorthWest == nullptr) {
                    return found;
                }
                if (Divided) {
                    vector <Unit> NWfound = NorthWest->query(range,found);
                    //found.insert(found.end(), NWfound.begin(), NWfound.end());
    
                    vector <Unit> NEfound = NorthEast->query(range,found);
                    //found.insert(found.end(), NEfound.begin(), NEfound.end());
    
                    vector <Unit> SWfound = SouthWest->query(range,found);
                    //found.insert(found.end(), SWfound.begin(), SWfound.end());
    
                    vector <Unit> SEfound = SouthEast->query(range,found);
                    //found.insert(found.end(), SEfound.begin(), SEfound.end());
                }
            }
            return found;
        }
    };

    Однако теперь при функция query возвращает почти пустой массив(там всего 1-2 точки,когда их должно быть несколько сотен)
  • Почему квадрантовое дерево медленнее брутфорса?

    @Quark_Hell Автор вопроса
    Можете более подробно описать свои мысли?Я не совмес понял,что вы имеете ввиду под " found сделать параметром-аккумулятором в рекурсии"
  • Почему не работает событие OnClicked у кнопки в UE4?

    @Quark_Hell Автор вопроса
    Вроде как нет.Я прикрепил компонент "widget" к поверхности и к этому компоненту прикрепил "WidgetInteractive".Вы можете видеть это на изображение ниже:
    60af9742cc27f603012238.png
  • Как использовать ENUM в другом заголовочном файле?

    @Quark_Hell Автор вопроса
    jcmvbkbc, Я использовал уже такой инклуд и при компиляции выдавало ошибку,из-за чего я подумал,что такое решение не верно.Но,как оказалось,настоящая ошибка была в другом месте(я забыл инициализировать свою статическую переменную в cpp).Но,всё-равно спасибо за помощь.
  • Как использовать ENUM в другом заголовочном файле?

    @Quark_Hell Автор вопроса
    Я видел подобные объяснения на англоязычных сайтах. Но я не совсем понял как это должно выглядеть. Вы можете привести код в пример?
  • Как получить ссылку на UI элемент в с++?

    @Quark_Hell Автор вопроса
    Quark_Hell, Quark_Hell, Возможно не совсем правильно выразился. BindWidget не работает только если ты получил ссылку на UUserWidget класс через команду NewObject.Если получать ссылку через мир,то всё прекрасно работает.
  • Как получить ссылку на UI элемент в с++?

    @Quark_Hell Автор вопроса
    Здравствуйте.Подобных решений в интернете целая куча.Однако проблема была не в этом.Оказывается,если вызывать функции UUserWidget класса не из самих функций UUserWidget класса,то переменные будут null.Мне понадобились целые сутки,чтобы случайно наткнуться на такую особенность работы BindWidget.Надеюсь мой комментарий будет кому-то полезен))