Advertisement
Guest User

Untitled

a guest
Sep 16th, 2021
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. void CTachyonObject::ApplyMatrix(CD3DDevice *pDevice)
  2. {
  3.     LPANI pANI = GetCurANI();
  4.  
  5.     if (pANI && pANI->m_pANI)
  6.     {
  7.         pANI->m_pANI->m_fCurTime = m_fActTime;
  8.         LPANIDATA pDATA = pANI->m_pANI->GetAniData();
  9.  
  10.         if (pDATA && pDATA->m_pAni)
  11.         {
  12.             D3DXMATRIX* vWORLD = new D3DXMATRIX[MAX_PIVOT + 1];
  13.  
  14.             FLOAT fBlendTime = FLOAT(m_dwBlendTick) / FLOAT(m_dwBlend);
  15.             BYTE bBlend = (m_dwBlendTick < m_dwBlend ? TRUE : FALSE) && m_bBlend;
  16.  
  17.             LPD3DXMATRIX pInit = GetMeshMatrix();
  18.  
  19.             pDATA->m_pAni->GetFrameMatrix(
  20.                 m_pBone,
  21.                 bBlend ? m_pBlend : NULL,
  22.                 bBlend ? m_pBlendKEY : NULL,
  23.                 m_pPivot,
  24.                 m_vPosition, 0,
  25.                 pANI->m_pANI->m_fLocalTime,
  26.                 fBlendTime);
  27.  
  28.             int nNodes = pDATA->m_pAni->GetNodeCount();
  29.  
  30.             vWORLD[0] = m_pBone[0];
  31.             for (int i = 0; i < nNodes; i++)
  32.                 vWORLD[1 + i] = pInit ? (pInit[i] * m_pBone[i + 1]) : m_pBone[i + 1];
  33.            
  34.             pDevice->SetTransforms(MAX_PIVOT + 1, vWORLD);
  35.  
  36.             delete[] vWORLD;
  37.             vWORLD = NULL;
  38.         }
  39.         else
  40.         {
  41.             pDevice->SetTransforms(1, &m_vPosition);
  42.         }
  43.     }
  44.     else
  45.     {
  46.         pDevice->SetTransforms(1, &m_vPosition);
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement