【发布时间】:2019-06-09 11:36:45
【问题描述】:
我正在使用 c++ 在 UE4 中制作四叉树,我对 c++ 很陌生,所以我需要这方面的帮助。
我主要关心的是四叉树的可视化。
基本上我有一个名为 Quadtree 的原生 c++ 类。在这个类里面,我有所有的功能,比如插入点、细分等等...... 而且我有一个名为 C_Quadtree 的 AActor c++ 类(我知道这个名字很笨),它有一个用于插入点的蓝图可调用函数和一个可视化方法。
这是我尝试将其可视化的方式:
void AC_Quadtree::show(Quadtree* Node)
{
FVector BoxCenter = FVector(Node->GetBoundary().GetCenter(), 0);
FVector BoxExtent = FVector(Node->GetBoundary().GetExtent(), 0);
DrawDebugBox(GetWorld(), BoxCenter, BoxExtent, FColor::White, false, -1, 0, 3);
}
void AC_Quadtree::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
for (Quadtree *Node : TreeNodes) {
show(Node);
}
}
我已经声明了一个数组来存储 TreeNode,如下所示:
TArray<Quadtree*> TreeNodes;
但是,我不知道如何将本地 Quadtree 类中创建的 Quadtree 添加到 Actor C_Quadtree 类内部的数组中。
这是在 Quadtree 类中声明的细分函数:
void Quadtree::subdivide()
{
//Init local variables to make the Math clearer.
FVector2D Center = Boundary.GetCenter();
FVector2D HalfExtent = Boundary.GetExtent() / 2;
NorthWest = new Quadtree( FVector2D(Center.X + HalfExtent.X, Center.Y - HalfExtent.Y), HalfExtent);
NorthEast = new Quadtree( Center + HalfExtent, HalfExtent);
SouthWest = new Quadtree( Center - HalfExtent, HalfExtent);
SouthEast = new Quadtree( FVector2D(Center.X - HalfExtent.X, Center.Y + HalfExtent.Y), HalfExtent);
}
有什么想法吗?
【问题讨论】:
标签: c++ unreal-engine4