Branch
public Branch(Branch? parent, Branch root)
Language: C#
Инициализирует ветвь с заданными родителем и корневым узлом.
Parameters:
- parent: Родительская ветвь
- root: Корневая ветвь дерева
public override uint Depth()
Language: C#
Получает глубину поддерева этой ветви.
Returns: Максимальная глубина левого и правого поддеревьев плюс 1
public override void Add(T value)
Language: C#
Добавляет объект в ветвь, выбирая левый или правый путь на основе расстояния.
Parameters:
- value: Объект для добавления
public override void Add(T value, Stack<Node> stack)
Language: C#
Добавляет объект итеративно через стек.
Parameters:
- value: Объект для добавления
- stack: Стек узлов
public override void OptimizedAdd(T value)
Language: C#
Оптимизированное добавление с балансировкой дерева для улучшения структуры.
Parameters:
- value: Объект для добавления
public override void OptimizedAdd(T value, Stack<Node> stack)
Language: C#
Оптимизированное добавление итеративно через стек.
Parameters:
- value: Объект для добавления
- stack: Стек узлов
public override void Remove(T value)
Language: C#
Удаляет объект из поддерева, рекурсивно проверяя левый и правый подузлы.
Parameters:
- value: Объект для удаления
public override void Remove(T value, Stack<Node> stack)
Language: C#
Удаляет объект итеративно через стек.
Parameters:
- value: Объект для удаления
- stack: Стек узлов
public override void FindNearestFwd(FVector2 position, float radius, List<T> result)
Language: C#
Рекурсивно ищет объекты в пределах радиуса (прямое направление).
Проверяет пересечение с AABB перед переходом к подузлам.
Parameters:
- position: 2D позиция поиска
- radius: Радиус поиска
- result: Список результатов
public override void FindNearestFwd(FVector2 position, float radius, List<T> result, Stack<Node> stack)
Language: C#
Итеративно ищет объекты в пределах радиуса через стек.
Parameters:
- position: 2D позиция поиска
- radius: Радиус поиска
- result: Список результатов
- stack: Стек узлов
public override void Raycast(FRay2 ray, List<T> result)
Language: C#
Трассирует луч через поддерево, проверяя пересечение с AABB и рекурсивно переходя к подузлам.
Parameters:
- ray: 2D луч для трассировки
- result: Список результатов
public override void Linecast(FLine2 line, List<T> result)
Language: C#
Трассирует линию через поддерево, проверяя пересечение с AABB и рекурсивно переходя к подузлам.
Parameters:
- line: 2D линия для трассировки
- result: Список результатов
public void Relocate(T value)
Language: C#
Перемещает объект в подходящую позицию в дереве при изменении его AABB.
Эффективно обновляет расположение объекта без полного пересоздания структуры.
Parameters:
- value: Объект для перемещения
public override void Render(IVertexBuffer<float> vertices, IVertexBuffer<uint> triangles)
Language: C#
Отрисовывает эту ветвь и все её подузлы в буферы вершин и индексов.
Каждая ветвь отображается как прямоугольник с координатами и UV координатами.
Parameters:
- vertices: Буфер вершин для сохранения координат
- triangles: Буфер индексов для сохранения треугольников
public override void CollisionsFwd(FBox2 aabb, List<T> result)
Language: C#
Проверяет столкновения с AABB и рекурсивно переходит к подузлам для сбора результатов.
Parameters:
- aabb: 2D прямоугольник для проверки столкновения
- result: Список результатов