Страница 1 из 1

Цикл в цикле при помощи DOTS

СообщениеДобавлено: 10 июл 2019, 01:59
AlexandrBuryakov
Как реализовать с помощью ECS и распаралеленного Jobs такой перебор?
Пробовал с чанками, но не понял а как быть в случае, если во втором цикле нужно обращаться к элементам из следующего чанка, так что вообще не понял как. Работа два раза, одна для первого цикла и внутри вторая для второго цикла? Может кто ни будь правильно написать код, а то от DOTS голова пухнет с непонятками как же всё таки правильно писать... Вообще хочу обращаться к уже существующим элементам конвертированным из GameObject в ECS.

Синтаксис:
Используется csharp
for ( iFirst = 0; iFirst < iMax; iFirst++ ) {
     for ( iSecond = 0; iSecond < iMax; iSecond++ ) {
    }
}

Re: Цикл в цикле при помощи DOTS

СообщениеДобавлено: 10 июл 2019, 11:15
~AvA~
На этот вопрос невозможно ответить вот так, глядя в код цикла :)

Нужны подробности, что самое важное, так это - что ты хочешь сделать и какие у тебя данные?
Перевести один к одному из ООП в ECS - не можна обычно) Типа у меня тут в монобехе цикл, я хочу такой же в ecs..
Они тупо работают по-другому

Re: Цикл в цикле при помощи DOTS

СообщениеДобавлено: 11 июл 2019, 17:43
AlexandrBuryakov
~AvA~ писал(а): что ты хочешь сделать и какие у тебя данные?


Мне нужно на каждом шаге выбранного на данный момент элемента осуществлять перебор последующих оставшихся компонентов. То есть помнить переменные текущего индекса при переборе оставшихся, а потом переходить к следующему и перебирать опять до конца.

Приведу пример, неправильный, но понятный возможно:
Синтаксис:
Используется csharp
public void Execute(int iFirst ) {
    public void Execute(int iSecond ) {
        //Только тут (во второй, внутренней, работе) получается все с начала будут перебираться, а не продолжать дальше от "iFirst"
    }
}
 

А по поводу какие данные (компоненты), то любые подойдут, например Translation.

Re: Цикл в цикле при помощи DOTS

СообщениеДобавлено: 11 июл 2019, 17:48
1max1
А зачем DOTS? PLINQ не подойдет?