mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-11 01:40:13 +00:00
Crashfix Physique export
This commit is contained in:
parent
a3b0f16823
commit
00881eed6c
1 changed files with 29 additions and 26 deletions
|
@ -961,40 +961,43 @@ INode* CExportNel::getSkeletonRootBone (INode& node)
|
||||||
// Get a vertex interface
|
// Get a vertex interface
|
||||||
IPhyVertexExport *vertexInterface=localData->GetVertexInterface (vtx);
|
IPhyVertexExport *vertexInterface=localData->GetVertexInterface (vtx);
|
||||||
|
|
||||||
// Check if it is a rigid vertex or a blended vertex
|
if (vertexInterface)
|
||||||
int type=vertexInterface->GetVertexType ();
|
|
||||||
if (type==RIGID_TYPE)
|
|
||||||
{
|
{
|
||||||
// this is a rigid vertex
|
// Check if it is a rigid vertex or a blended vertex
|
||||||
IPhyRigidVertex *rigidInterface=(IPhyRigidVertex*)vertexInterface;
|
int type=vertexInterface->GetVertexType ();
|
||||||
|
if (type==RIGID_TYPE)
|
||||||
// Get the bone
|
|
||||||
INode *newBone=rigidInterface->GetNode();
|
|
||||||
|
|
||||||
// Get the root of the hierarchy
|
|
||||||
ret=getRoot (newBone);
|
|
||||||
found=true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// It must be a blendable vertex
|
|
||||||
nlassert (type==RIGID_BLENDED_TYPE);
|
|
||||||
IPhyBlendedRigidVertex *blendedInterface=(IPhyBlendedRigidVertex*)vertexInterface;
|
|
||||||
|
|
||||||
// For each bones
|
|
||||||
uint bone;
|
|
||||||
uint count=(uint)blendedInterface->GetNumberNodes ();
|
|
||||||
for (bone=0; bone<count; bone++)
|
|
||||||
{
|
{
|
||||||
// Get the bone pointer
|
// this is a rigid vertex
|
||||||
INode *newBone=blendedInterface->GetNode(bone);
|
IPhyRigidVertex *rigidInterface=(IPhyRigidVertex*)vertexInterface;
|
||||||
|
|
||||||
|
// Get the bone
|
||||||
|
INode *newBone=rigidInterface->GetNode();
|
||||||
|
|
||||||
// Get the root of the hierarchy
|
// Get the root of the hierarchy
|
||||||
ret=getRoot (newBone);
|
ret=getRoot (newBone);
|
||||||
found=true;
|
found=true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// It must be a blendable vertex
|
||||||
|
nlassert (type==RIGID_BLENDED_TYPE);
|
||||||
|
IPhyBlendedRigidVertex *blendedInterface=(IPhyBlendedRigidVertex*)vertexInterface;
|
||||||
|
|
||||||
|
// For each bones
|
||||||
|
uint bone;
|
||||||
|
uint count=(uint)blendedInterface->GetNumberNodes ();
|
||||||
|
for (bone=0; bone<count; bone++)
|
||||||
|
{
|
||||||
|
// Get the bone pointer
|
||||||
|
INode *newBone=blendedInterface->GetNode(bone);
|
||||||
|
|
||||||
|
// Get the root of the hierarchy
|
||||||
|
ret=getRoot (newBone);
|
||||||
|
found=true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Release vertex interfaces
|
// Release vertex interfaces
|
||||||
|
|
Loading…
Reference in a new issue