RectBVH2D<T>
public RectBVH2D()
Language: C#
Инициализирует новый экземпляр BVH структуры с пустым корневым узлом.
public uint Depth()
Language: C#
Получает глубину BVH дерева (количество уровней от корня до самого глубокого листа).
Returns: Глубина дерева. Пустое дерево имеет глубину 1.
public void Add(T value)
Language: C#
Добавляет новый объект в BVH структуру. Объект будет вставлен в соответствующее место в дереве на основе его AABB.
Операция потокобезопасна.
Parameters:
- value: Объект для добавления
public void OptimizedAdd(T value)
Language: C#
Оптимизированное добавление объекта в BVH структуру. Этот метод может перестроить часть дерева для лучшей балансировки.
Использует балансировку для поддержания производительности структуры. Операция потокобезопасна.
Parameters:
- value: Объект для добавления
public void Remove(T value)
Language: C#
Удаляет объект из BVH структуры. Операция потокобезопасна.
Parameters:
- value: Объект для удаления
public void Clear()
Language: C#
Полностью очищает BVH структуру, удаляя все объекты.
Операция потокобезопасна.
public void FindNearest(FVector2 position, float radius, List<T> result)
Language: C#
Находит все объекты в пределах заданного радиуса от позиции и добавляет их в список результатов.
Операция потокобезопасна.
Parameters:
- position: 2D позиция для поиска
- radius: Радиус поиска
- result: Список для добавления найденных объектов
public void Raycast(FRay2 ray, List<T> result)
Language: C#
Выполняет трассировку 2D луча через BVH структуру и находит все объекты, которые пересекает луч.
Операция потокобезопасна.
Parameters:
- ray: 2D луч для трассировки
- result: Список для добавления найденных объектов
public void Linecast(FLine2 line, List<T> result)
Language: C#
Выполняет трассировку 2D линии через BVH структуру и находит все объекты, которые пересекает линия.
Операция потокобезопасна.
Parameters:
- line: 2D линия для трассировки
- result: Список для добавления найденных объектов
public List<T> FindNearest(FVector2 position, float radius)
Language: C#
Находит все объекты в пределах заданного радиуса от позиции и возвращает новый список результатов.
Операция потокобезопасна.
Parameters:
- position: 2D позиция для поиска
- radius: Радиус поиска
Returns: Новый список найденных объектов
public void Render(IVertexBuffer<float> vertices, IVertexBuffer<uint> triangles)
Language: C#
Отрисовывает структуру BVH дерева в виде прямоугольников в буферы вершин и треугольников.
Каждый узел дерева отображается как 2D прямоугольник. Операция потокобезопасна.
Parameters:
- vertices: Буфер вершин для сохранения координат вершин
- triangles: Буфер индексов для сохранения треугольников
public void Collisions(FBox2 aabb, List<T> result)
Language: C#
Находит все объекты, которые пересекаются с заданным 2D прямоугольником (AABB), и добавляет их в список результатов.
Операция потокобезопасна.
Parameters:
- aabb: 2D прямоугольник для проверки столкновения
- result: Список для добавления найденных объектов
public List<T> Collisions(FBox2 aabb)
Language: C#
Находит все объекты, которые пересекаются с заданным 2D прямоугольником (AABB), и возвращает новый список результатов.
Операция потокобезопасна.
Parameters:
- aabb: 2D прямоугольник для проверки столкновения
Returns: Новый список найденных объектов
public FBox2 GetBoundaryBox()
Language: C#
Получает граничный прямоугольник (AABB), который охватывает все объекты в BVH структуре.
Returns: 2D прямоугольник, охватывающий всё содержимое BVH
public abstract class Node
Language: C#
Абстрактный базовый класс для узлов BVH дерева. Представляет узел в иерархии.
Может быть либо внутренней ветвью (Branch), либо листом (Leaf).
public class Branch : Node
Language: C#
Внутренний узел BVH дерева, который содержит два подузла (левый и правый).
Используется для организации иерархии объектов.
public class Leaf : Node
Language: C#
Листовой узел BVH дерева, который содержит конкретный объект.
Листовой узел не имеет подузлов и служит конечной точкой в иерархии.