fix model animation/looping glitches
turn backface culling on by default for models
This commit is contained in:
+11
-6
@@ -29,6 +29,7 @@ Model::Model ()
|
|||||||
{
|
{
|
||||||
m_bTextureWrapping = true;
|
m_bTextureWrapping = true;
|
||||||
SetUseZBuffer( true );
|
SetUseZBuffer( true );
|
||||||
|
SetUseZBuffer( true );
|
||||||
m_pGeometry = NULL;
|
m_pGeometry = NULL;
|
||||||
m_pCurAnimation = NULL;
|
m_pCurAnimation = NULL;
|
||||||
m_bRevertToDefaultAnimation = false;
|
m_bRevertToDefaultAnimation = false;
|
||||||
@@ -397,10 +398,13 @@ void Model::LoadMilkshapeAsciiBones( CString sAniName, CString sPath )
|
|||||||
for ( i = 0; i < (int)Animation.Bones.size(); i++)
|
for ( i = 0; i < (int)Animation.Bones.size(); i++)
|
||||||
{
|
{
|
||||||
msBone& Bone = Animation.Bones[i];
|
msBone& Bone = Animation.Bones[i];
|
||||||
for( int j=0; j<(int)Bone.PositionKeys.size(); j++ )
|
|
||||||
{
|
{
|
||||||
Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.PositionKeys[j].fTime+1 );
|
for( int j=0; j<(int)Bone.PositionKeys.size(); j++ )
|
||||||
Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.RotationKeys[j].fTime+1 );
|
Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.PositionKeys[j].fTime );
|
||||||
|
}
|
||||||
|
{
|
||||||
|
for( int j=0; j<(int)Bone.RotationKeys.size(); j++ )
|
||||||
|
Animation.nTotalFrames = max( Animation.nTotalFrames, (int)Bone.RotationKeys[j].fTime );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -676,8 +680,10 @@ Model::AdvanceFrame (float dt)
|
|||||||
return; // bail early
|
return; // bail early
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LOG->Trace( "m_fCurrFrame = %f", m_fCurrFrame );
|
||||||
|
|
||||||
m_fCurrFrame += FRAMES_PER_SECOND * dt * m_fCurAnimationRate;
|
m_fCurrFrame += FRAMES_PER_SECOND * dt * m_fCurAnimationRate;
|
||||||
if (m_fCurrFrame >= (float)m_pCurAnimation->nTotalFrames)
|
if (m_fCurrFrame >= m_pCurAnimation->nTotalFrames)
|
||||||
{
|
{
|
||||||
if( m_bRevertToDefaultAnimation && m_sDefaultAnimation != "" )
|
if( m_bRevertToDefaultAnimation && m_sDefaultAnimation != "" )
|
||||||
{
|
{
|
||||||
@@ -687,11 +693,10 @@ Model::AdvanceFrame (float dt)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_fCurrFrame = 0.0f;
|
m_fCurrFrame -= m_pCurAnimation->nTotalFrames;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int nBoneCount = (int)m_pCurAnimation->Bones.size();
|
int nBoneCount = (int)m_pCurAnimation->Bones.size();
|
||||||
int i, j;
|
int i, j;
|
||||||
for (i = 0; i < nBoneCount; i++)
|
for (i = 0; i < nBoneCount; i++)
|
||||||
|
|||||||
Reference in New Issue
Block a user