如何在UE4/c++; 我在用C++制作一个四叉树,我对C++很陌生,所以我需要帮助。

如何在UE4/c++; 我在用C++制作一个四叉树,我对C++很陌生,所以我需要帮助。,c++,unreal-engine4,C++,Unreal Engine4,我主要关心的是四叉树的可视化 基本上我有一个原生C++类叫做四叉树。在这个类里面,我有所有的函数,比如插入点,细分,等等。。。 我有一个C++ C++类,叫做c4-四叉树(哑名字,我知道),它有一个蓝图可调用函数来插入点,以及一个可视化方法。 以下是我如何尝试将其可视化: void AC_Quadtree::show(Quadtree* Node) { FVector BoxCenter = FVector(Node->GetBoundary().GetCenter(),

我主要关心的是四叉树的可视化

基本上我有一个原生C++类叫做四叉树。在这个类里面,我有所有的函数,比如插入点,细分,等等。。。 我有一个C++ C++类,叫做c4-四叉树(哑名字,我知道),它有一个蓝图可调用函数来插入点,以及一个可视化方法。 以下是我如何尝试将其可视化:

    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);
    }
}
我声明了一个数组来存储树节点,如下所示:

TArray<Quadtree*> TreeNodes; 

有什么想法吗?

将四叉树压缩成一个数组,就会失去四叉树的功能。您可以使用数组来存储四叉树指针的副本,但我建议对四叉树对象本身使用递归函数来实现功能。递归将沿着指针向下到达四叉树的每个分支,以nullptr结束。示例函数:

Quadtree::SubdivideEach()
{
    if(NorthWest != nullptr)
        NorthWest->SubdivideEach();
    else
        subdivide();
    if(NorthEast != nullptr)
        NorthEast->SubdivideEach();
    else
        subdivide();
    //and the others
}
为了保持编辑器中的视图和蓝图的兼容性,您可能需要为您的四叉树类添加UE4API。这是最容易做到的,通过做文件>“新C++类”> UbObjor子类的选项,然后复制粘贴现有代码。
Quadtree::SubdivideEach()
{
    if(NorthWest != nullptr)
        NorthWest->SubdivideEach();
    else
        subdivide();
    if(NorthEast != nullptr)
        NorthEast->SubdivideEach();
    else
        subdivide();
    //and the others
}