⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 animsequence.cpp

📁 游戏音频程序设计-Beginning.Game.Audio.Programming
💻 CPP
字号:
#include "AnimSequence.h"

CAnimSequence::CAnimSequence(LPDIRECT3DDEVICE8 pDev)
{
  m_pVBQuad = NULL;
  m_pd3dDevice = pDev;
  CreateQuad(&m_pVBQuad, D3DPOOL_DEFAULT, 1.0f, 
    D3DCOLOR_ARGB(255,255,255,255), pDev);
}

bool CAnimSequence::AddFrame(const char *strFilename, float fTime)
{
  if (!m_pd3dDevice) return(false); 
  if (fTime <= 0) return(false);

  CAnimFrame *newframe = new CAnimFrame();
  
  // create a texture for this frame
  if (FAILED(D3DXCreateTextureFromFile(m_pd3dDevice, 
             strFilename, &newframe->m_pTexture))) {
    delete newframe;
    return(false);
  }
  
  // add to vector
  newframe->m_fTime = fTime;
  m_vFrames.push_back(newframe);
  return(true);
}

void CAnimSequence::DeleteFrame(int index)
{
  delete *(m_vFrames.begin() + index);
  m_vFrames.erase(m_vFrames.begin() + index);
}

void CAnimSequence::ClearAllFrames()
{
  for (std::vector<CAnimFrame *>::iterator i = m_vFrames.begin(); 
       i != m_vFrames.end(); ++i) {
    delete *i;
  }
  m_vFrames.clear();
}

void CAnimSequence::Render(CTimer &timer, D3DXMATRIX mat)
{
  if (!m_pd3dDevice) return; 
  if (timer.GetTime() < 0) return;

	int iCurFrame = GetCurFrame(timer);

  if (iCurFrame >= m_vFrames.size()) return;

  CAnimFrame *f = m_vFrames[iCurFrame];

  m_pd3dDevice->SetTransform(D3DTS_WORLD, &mat);
  m_pd3dDevice->SetTexture(0, f->m_pTexture);
  m_pd3dDevice->SetVertexShader(D3DFVF_XYZ_DIFFUSE_TEX1);
  m_pd3dDevice->SetStreamSource(0, m_pVBQuad, sizeof(VERTEX_XYZ_DIFFUSE_TEX1));
  m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);
}

int CAnimSequence::GetCurFrame(CTimer &timer)
{
  int iCurFrame = 0; float fTimeCount = 0.0f;
  for (std::vector<CAnimFrame *>::iterator i = m_vFrames.begin(); i != m_vFrames.end(); ++i) {
    fTimeCount += (*i)->m_fTime;
    if (timer.GetTime() <= fTimeCount) break;
    iCurFrame++;
  }
	return(iCurFrame);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -