У меня есть quadtree для всех статических объектов столкновения, который отлично работает как для обнаружения столкновений, так и для raycasting.
Однако, поскольку у меня также есть нестатические объекты столкновения, когда я использую raycast, я хотел бы включить их в качестве возможных объектов столкновения для луча.
Каким будет лучший (с точки зрения производительности) способ добиться этого? Мои текущие идеи:
1) клонируйте quadtree, добавьте нестатические объекты, затем используйте их для raycast
2) добавить нестатические объекты в текущее дерево квадрантов с некоторыми флагами, которые в основном не позволяют дереву квадрантов разбивать свои квадроциклы, даже если в квадроцикле больше дочерних элементов, чем разрешено. После завершения raycast дерево квадрантов должно будет «очистить» себя.
3) после определения ближайшего столкновения статического объекта (с помощью дерева квадрантов) просто переберите все нестатические объекты и посмотрите, сталкивается ли с ними луч, а затем проверьте, не находится ли точка столкновения ближе, чем ближайшая точка столкновения статического объекта.
Все эти идеи кажутся немного громоздкими, поэтому я ищу любые альтернативные идеи, которые могли бы быть более эффективными.
Если это имеет значение, я использую Java