Leaf

public Leaf(Branch? parent, Branch root, T value)

Language: C#

Инициализирует листовой узел с объектом и ассоциирует себя с объектом.

Parameters:

  • parent: Родительская ветвь
  • root: Корневая ветвь дерева
  • value: Объект для хранения в листе

public override uint Depth()

Language: C#

Листовой узел всегда имеет глубину 1.

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 void Relocate()

Language: C#

Перемещает объект в дереве при изменении его AABB.

Удаляет объект из текущего положения и добавляет его заново в оптимальное место.

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#

Проверяет, находится ли объект в пределах радиуса от позиции поиска.

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