mirror of
https://github.com/minetest/irrlicht.git
synced 2025-06-30 23:30:27 +02:00
Fix uninitialized variable in CTriangleSelector and code cleanup
CTriangleSelector constructor with IAnimatedMeshSceneNode parameter didn't initialize MeshBuffer. Not used internally, so no big problem, but it got passed back to users in some cases Replaced SCollisionTriangleRange, by CTriangleSelector::SBufferTriangleRange. Was a bad idea to use a struct which is for something else just because some member were the same (my fault, sorry). Also started unifying the case of using ranges vs not using them. Can maybe even get rid of the non-ranges case in future. Or unify the duplicated code for getting triangles at least. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6579 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
@ -15,7 +15,7 @@ namespace scene
|
||||
|
||||
//! constructor
|
||||
CTriangleSelector::CTriangleSelector(ISceneNode* node)
|
||||
: SceneNode(node), MeshBuffer(0), MaterialIndex(0), AnimatedNode(0), LastMeshFrame(0)
|
||||
: SceneNode(node), AnimatedNode(0), LastMeshFrame(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CTriangleSelector");
|
||||
@ -27,7 +27,7 @@ CTriangleSelector::CTriangleSelector(ISceneNode* node)
|
||||
|
||||
//! constructor
|
||||
CTriangleSelector::CTriangleSelector(const core::aabbox3d<f32>& box, ISceneNode* node)
|
||||
: SceneNode(node), MeshBuffer(0), MaterialIndex(0), AnimatedNode(0), LastMeshFrame(0)
|
||||
: SceneNode(node), AnimatedNode(0), LastMeshFrame(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CTriangleSelector");
|
||||
@ -40,7 +40,7 @@ CTriangleSelector::CTriangleSelector(const core::aabbox3d<f32>& box, ISceneNode*
|
||||
|
||||
//! constructor
|
||||
CTriangleSelector::CTriangleSelector(const IMesh* mesh, ISceneNode* node, bool separateMeshbuffers)
|
||||
: SceneNode(node), MeshBuffer(0), MaterialIndex(0), AnimatedNode(0), LastMeshFrame(0)
|
||||
: SceneNode(node), AnimatedNode(0), LastMeshFrame(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CTriangleSelector");
|
||||
@ -50,12 +50,14 @@ CTriangleSelector::CTriangleSelector(const IMesh* mesh, ISceneNode* node, bool s
|
||||
}
|
||||
|
||||
CTriangleSelector::CTriangleSelector(const IMeshBuffer* meshBuffer, irr::u32 materialIndex, ISceneNode* node)
|
||||
: SceneNode(node), MeshBuffer(meshBuffer), MaterialIndex(materialIndex), AnimatedNode(0), LastMeshFrame(0)
|
||||
: SceneNode(node), AnimatedNode(0), LastMeshFrame(0)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
setDebugName("CTriangleSelector");
|
||||
#endif
|
||||
|
||||
SingleBufferRange.MeshBuffer = meshBuffer;
|
||||
SingleBufferRange.MaterialIndex = materialIndex;
|
||||
createFromMeshBuffer(meshBuffer);
|
||||
}
|
||||
|
||||
@ -90,7 +92,7 @@ void CTriangleSelector::createFromMesh(const IMesh* mesh, bool createBufferRange
|
||||
u32 totalFaceCount = 0;
|
||||
for (u32 j=0; j<cnt; ++j)
|
||||
{
|
||||
SCollisionTriangleRange range;
|
||||
SBufferTriangleRange range;
|
||||
range.MeshBuffer = mesh->getMeshBuffer(j);
|
||||
range.MaterialIndex = j;
|
||||
range.RangeSize = range.MeshBuffer->getIndexCount() / 3;
|
||||
@ -301,8 +303,8 @@ void CTriangleSelector::getTriangles(core::triangle3df* triangles,
|
||||
triRange.RangeSize = cnt;
|
||||
triRange.Selector = this;
|
||||
triRange.SceneNode = SceneNode;
|
||||
triRange.MeshBuffer = MeshBuffer;
|
||||
triRange.MaterialIndex = MaterialIndex;
|
||||
triRange.MeshBuffer = SingleBufferRange.MeshBuffer;
|
||||
triRange.MaterialIndex = SingleBufferRange.MaterialIndex;
|
||||
outTriangleInfo->push_back(triRange);
|
||||
}
|
||||
else
|
||||
@ -445,8 +447,8 @@ void CTriangleSelector::getTriangles(core::triangle3df* triangles,
|
||||
triRange.RangeSize = triangleCount;
|
||||
triRange.Selector = this;
|
||||
triRange.SceneNode = SceneNode;
|
||||
triRange.MeshBuffer = MeshBuffer;
|
||||
triRange.MaterialIndex = MaterialIndex;
|
||||
triRange.MeshBuffer = SingleBufferRange.MeshBuffer;
|
||||
triRange.MaterialIndex = SingleBufferRange.MaterialIndex;
|
||||
outTriangleInfo->push_back(triRange);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user