Changeset 470

Show
Ignore:
Timestamp:
01/21/12 09:33:03 (4 months ago)
Author:
Carsten
Message:

Game code: Improvements to the animation blending in the EntCompanyBotT code.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • cafu/trunk/Games/DeathMatch/Code/CompanyBot.cpp

    r469 r470  
    393393 
    394394 
     395#undef min    // See http://stackoverflow.com/questions/5004858/stdmin-gives-error 
     396#undef max 
     397 
     398 
    395399void EntCompanyBotT::AdvanceModelTime(float Time, bool Loop) 
    396400{ 
     
    401405    else 
    402406    { 
     407        const bool IsAlive=(State.ModelSequNr<18 || State.ModelSequNr>24); 
     408        float      BlendTime=0.3f; 
     409 
     410        if (!IsAlive) 
     411        { 
     412            BlendTime=0.2f; 
     413 
     414            if (State.ModelSequNr>=0 && State.ModelSequNr<int(m_CompanyBotModel->GetAnims().Size())) 
     415            { 
     416                const CafuModelT::AnimT& Anim=m_CompanyBotModel->GetAnims()[State.ModelSequNr]; 
     417 
     418                if (Anim.Frames.Size() > 0) 
     419                    BlendTime=std::min(BlendTime, (Anim.Frames.Size()-1) * Anim.FPS * 0.5f); 
     420            } 
     421        } 
     422 
    403423        m_LastStdAE=m_CompanyBotModel->GetAnimExprPool().GetStandard(State.ModelSequNr, State.ModelFrameNr); 
    404         m_AnimExpr =m_CompanyBotModel->GetAnimExprPool().GetBlend(m_AnimExpr, m_LastStdAE, 3.0f); 
     424        m_AnimExpr =m_CompanyBotModel->GetAnimExprPool().GetBlend(m_AnimExpr, m_LastStdAE, BlendTime); 
    405425    } 
    406426