本文整理汇总了C#中OctreeNode.Fill方法的典型用法代码示例。如果您正苦于以下问题:C# OctreeNode.Fill方法的具体用法?C# OctreeNode.Fill怎么用?C# OctreeNode.Fill使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OctreeNode
的用法示例。
在下文中一共展示了OctreeNode.Fill方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Test
void Test(OctreeNode<Voxel> node, IEnumerable<Triangle> triangles)
{
if (node.Level > maxLevel) return;
var result = triangles.Where(t => t.Intersects(node.AABB)).ToList();
if (result.Any())
{
if (node.Level == maxLevel)
{
node.Fill();
}
else
{
if (node.Children == null)
{
node.Split();
}
Parallel.ForEach(node.Children, child => Test(child, result));
}
}
}
示例2: Test2
void Test2(OctreeNode<Voxel> node, Func<OctreeNode<Voxel>, bool> func)
{
if (node.Level > maxLevel) return;
if (func(node))
{
if (node.Level == maxLevel)
{
node.Fill();
}
else
{
if (node.Children == null)
{
node.Split();
}
Parallel.ForEach(node.Children, child => Test2(child, func));
}
}
//else
//{
// var result = triangles.Where(t => func(node)).ToList();
// if (result.Any())
// {
// if (node.Children == null)
// {
// node.Split();
// }
// Parallel.ForEach(node.Children, child => Test2(child, result, func));
// }
//}
}
示例3: Intersect
void Intersect(OctreeNode<Voxel> node, Triangle tri)
{
if(node.Level > maxLevel) return;
if (tri.Intersects(node.AABB))
{
if (node.Level == maxLevel)
{
node.Fill();
}
else
{
if (node.Children == null)
{
node.Split();
}
foreach (var child in node.Children)
{
Intersect(child,tri);
}
}
}
}