Commit cac36415 authored by hybrid's avatar hybrid

Add early out when maximal array size is reached.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2860 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 47ee7845
...@@ -45,9 +45,10 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array ...@@ -45,9 +45,10 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array
{ {
s32 t = 0; s32 t = 0;
TriangleSelectors[i]->getTriangles(triangles + outWritten, TriangleSelectors[i]->getTriangles(triangles + outWritten,
arraySize - outWritten, t, arraySize - outWritten, t, transform);
transform);
outWritten += t; outWritten += t;
if (outWritten==arraySize)
break;
} }
outTriangleCount = outWritten; outTriangleCount = outWritten;
...@@ -64,9 +65,10 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array ...@@ -64,9 +65,10 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array
{ {
s32 t = 0; s32 t = 0;
TriangleSelectors[i]->getTriangles(triangles + outWritten, TriangleSelectors[i]->getTriangles(triangles + outWritten,
arraySize - outWritten, t, arraySize - outWritten, t, box, transform);
box, transform);
outWritten += t; outWritten += t;
if (outWritten==arraySize)
break;
} }
outTriangleCount = outWritten; outTriangleCount = outWritten;
...@@ -82,10 +84,11 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array ...@@ -82,10 +84,11 @@ void CMetaTriangleSelector::getTriangles(core::triangle3df* triangles, s32 array
for (u32 i=0; i<TriangleSelectors.size(); ++i) for (u32 i=0; i<TriangleSelectors.size(); ++i)
{ {
s32 t = 0; s32 t = 0;
TriangleSelectors[i]->getTriangles(triangles + outWritten, TriangleSelectors[i]->getTriangles(triangles + outWritten,
arraySize - outWritten, t, arraySize - outWritten, t, line, transform);
line, transform);
outWritten += t; outWritten += t;
if (outWritten==arraySize)
break;
} }
outTriangleCount = outWritten; outTriangleCount = outWritten;
...@@ -130,6 +133,7 @@ void CMetaTriangleSelector::removeAllTriangleSelectors() ...@@ -130,6 +133,7 @@ void CMetaTriangleSelector::removeAllTriangleSelectors()
TriangleSelectors.clear(); TriangleSelectors.clear();
} }
//! Return the scene node associated with a given triangle. //! Return the scene node associated with a given triangle.
const ISceneNode* CMetaTriangleSelector::getSceneNodeForTriangle(u32 triangleIndex) const const ISceneNode* CMetaTriangleSelector::getSceneNodeForTriangle(u32 triangleIndex) const
{ {
...@@ -142,13 +146,12 @@ const ISceneNode* CMetaTriangleSelector::getSceneNodeForTriangle(u32 triangleInd ...@@ -142,13 +146,12 @@ const ISceneNode* CMetaTriangleSelector::getSceneNodeForTriangle(u32 triangleInd
if(totalTriangles > triangleIndex) if(totalTriangles > triangleIndex)
return TriangleSelectors[i]->getSceneNodeForTriangle(0); return TriangleSelectors[i]->getSceneNodeForTriangle(0);
} }
// For lack of anything more sensible, return the first selector. // For lack of anything more sensible, return the first selector.
return TriangleSelectors[0]->getSceneNodeForTriangle(0); return TriangleSelectors[0]->getSceneNodeForTriangle(0);
} }
} // end namespace scene } // end namespace scene
} // end namespace irr } // end namespace irr
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment