Мой список элементов не очищается правильно? - PullRequest
0 голосов
/ 14 февраля 2020

Я пишу программу для имитации поведения флокирования на boids. В настоящее время у меня есть Список поведений, которые boid использует для вычисления следующего вектора движения. При каждом обновлении поведение сбрасывается и могут добавляться новые поведения. При численности населения 100 все работает нормально, хотя, когда я увеличиваю это число, мой Список как-то не очищается должным образом. Где у меня должен быть размер списка 4, иногда это увеличивается до 6 с нулевыми элементами и элементами, которые добавляются дважды вместо одного. Я думаю, это может быть связано с тем, что моя программа l oop работает слишком быстро для вычислений, но я не уверен. Можно ли как-нибудь это выяснить?

Мой код выглядит следующим образом:

foreach(Vehicle boid in mainFlock)
        {
            boid.behaviours.Clear();
            boid.behaviours.Add(new CohesionBehaviour(boid, mainFlock));
            boid.behaviours.Add(new SeparationBehaviour(boid, mainFlock));
            boid.behaviours.Add(new AlignmentBehaviour(boid, mainFlock));
            boid.behaviours.Add(new SeekBehaviour(boid, mainFlockTarget.Pos));

            if (boid.behaviours.Count > 4)
                Console.WriteLine(boid.behaviours);

            boid.Update(timeElapsed);
        }

Console.WriteLine () никогда не следует вызывать, хотя иногда (когда я увеличиваю население) size) он печатает это (упрощенно):

[cohesion,
 cohesion,
 separation,
 alignment,
 seek,
 seek]

и некоторые другие времена (упрощенно):

[cohesion,
 separation,
 cohesion,
 null,
 alignment,
 seek]

кажется, что в общей сложности 6 элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...