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: Список результатов