本文整理汇总了C#中BulletXNA.BulletCollision.DbvtNode.IsLeaf方法的典型用法代码示例。如果您正苦于以下问题:C# DbvtNode.IsLeaf方法的具体用法?C# DbvtNode.IsLeaf怎么用?C# DbvtNode.IsLeaf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BulletXNA.BulletCollision.DbvtNode
的用法示例。
在下文中一共展示了DbvtNode.IsLeaf方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InsertLeaf
public static void InsertLeaf(Dbvt pdbvt, DbvtNode root, DbvtNode leaf)
{
if (pdbvt.Root == null)
{
pdbvt.Root = leaf;
leaf.parent = null;
}
else
{
if (!root.IsLeaf())
{
do
{
root = root._children[DbvtAabbMm.Select(ref leaf.volume,
ref root._children[0].volume,
ref root._children[1].volume)];
} while (!root.IsLeaf());
}
DbvtNode prev = root.parent;
DbvtAabbMm mergeResults = DbvtAabbMm.Merge(ref leaf.volume, ref root.volume);
DbvtNode node = CreateNode2(pdbvt, prev, ref mergeResults, null);
if (prev != null)
{
prev._children[IndexOf(root)] = node;
node._children[0] = root;
root.parent = node;
node._children[1] = leaf;
leaf.parent = node;
do
{
if (!prev.volume.Contain(ref node.volume))
{
DbvtAabbMm.Merge(ref prev._children[0].volume, ref prev._children[1].volume, ref prev.volume);
}
else
{
break;
}
node = prev;
} while (null != (prev = node.parent));
}
else
{
node._children[0] = root;
root.parent = node;
node._children[1] = leaf;
leaf.parent = node;
pdbvt.Root = node;
}
}
}
示例2: RecurseDeleteNode
public static void RecurseDeleteNode(Dbvt pdbvt, DbvtNode node)
{
if (!node.IsLeaf())
{
RecurseDeleteNode(pdbvt, node._children[0]);
RecurseDeleteNode(pdbvt, node._children[1]);
}
if (node == pdbvt.m_root)
{
pdbvt.m_root = null;
}
DeleteNode(pdbvt, node);
}