@ -66,8 +66,14 @@ public class BrushModel
private void GroupSurfaces ( QNode node , QSurface [ ] surfaces , Dictionary < ( IntPtr , int , QSurfaceFlags ) , List < QSurface > > surfaceGroups )
private void GroupSurfaces ( QNode node , QSurface [ ] surfaces , Dictionary < ( IntPtr , int , QSurfaceFlags ) , List < QSurface > > surfaceGroups )
{
{
var nodeQueue = new Queue < QNode > ( ) ;
nodeQueue . Enqueue ( node ) ;
while ( nodeQueue . Count > 0 )
{
node = nodeQueue . Dequeue ( ) ;
if ( node . contents < 0 ) // Leaf node
if ( node . contents < 0 ) // Leaf node
return ;
continue ;
for ( int surfIdx = 0 ; surfIdx < node . numSurfaces ; + + surfIdx )
for ( int surfIdx = 0 ; surfIdx < node . numSurfaces ; + + surfIdx )
{
{
@ -86,7 +92,8 @@ public class BrushModel
foreach ( var childNode in node . Children )
foreach ( var childNode in node . Children )
{
{
GroupSurfaces ( childNode , surfaces , surfaceGroups ) ;
nodeQueue . Enqueue ( childNode ) ;
}
}
}
}
}