本文整理汇总了C++中Partition::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ Partition::GetParent方法的具体用法?C++ Partition::GetParent怎么用?C++ Partition::GetParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Partition
的用法示例。
在下文中一共展示了Partition::GetParent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateObject
void Octree::UpdateObject(CollisionMesh& object)
{
Partition* partition = object.GetPartition();
Partition* newPartition = nullptr;
assert(partition);
if(!IsAllInsidePartition(object, *partition))
{
// Move upwards until object is fully inside a single partition
Partition* parent = partition->GetParent();
while(parent && !IsAllInsidePartition(object, *parent))
{
parent = parent->GetParent();
}
// Will be in found partition or one of the children
newPartition = FindPartition(object, parent ? *parent : *m_octree);
}
else
{
// Can only be in partition and partition's children
newPartition = FindPartition(object, *partition);
}
assert(newPartition);
if(newPartition != partition)
{
// connect object and new partition together
partition->RemoveNode(object);
newPartition->AddNode(object);
object.SetPartition(newPartition);
}
}
示例2: IterateUpOctree
void Octree::IterateUpOctree(CollisionMesh& node, Partition& partition)
{
auto& nodes = partition.GetNodes();
for(unsigned int i = 0; i < nodes.size(); ++i)
{
m_iteratorFn(*nodes[i], node);
}
if(partition.GetParent())
{
IterateUpOctree(node, *partition.GetParent());
}
}