📄 aniobject.cpp
字号:
// AniObject.cpp: implementation of the CAniObject class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "AniObject.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CAniObject::CAniObject()
{
m_nStartFrame = 0;
m_nEndFrame = 0;
m_nCurFrame = 0;
m_nNextFrame = 0;
m_dwAccTime = 0;
m_nLooping = 0;
m_dwLastTime = timeGetTime();
}
CAniObject::~CAniObject()
{
}
void CAniObject::Render()
{
UpdateAnimation(0);
m_quateResult = m_quateRotate;
// m_vLook = D3DXVECTOR3(0,0,1);
// m_vUp = D3DXVECTOR3(0,1,0);
// m_vRight= D3DXVECTOR3(1,0,0);
// CUtility::QuaternionRotateVector(m_quateResult,&m_vLook);
// CUtility::QuaternionRotateVector(m_quateResult,&m_vRight);
// CUtility::QuaternionRotateVector(m_quateResult,&m_vUp);
// else
// g_pApp->GetD3dDevice()->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
//if( m_bShow && m_bActive )
D3DXMATRIX matRotate;
D3DXMatrixRotationQuaternion(&matRotate,&m_quateResult); // 概飘腐胶肺
//m_matWorld = m_matScale * m_matTrans;
m_matWorld = m_matScale * matRotate * m_matTrans;
g_pApp->GetD3dDevice()->SetTransform(D3DTS_WORLD,&m_matWorld);
m_pObject->Render(m_nCurFrame);
// g_pApp->GetD3dDevice()->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
// m_pObject->BoundingBoxRender(0,m_matWorld);
// g_pApp->GetD3dDevice()->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
// for(int i=0; i<m_listObject.size(); i++)
// {
// CMCObject * pObject = m_listObject[i];
// pObject->Render(0);
// }
}
//=========================================================================//
// Animation Function
//=========================================================================//
BOOL CAniObject::SetAnimation(UINT nType, int nLooping)
{
m_nStartFrame = 0;
m_nEndFrame = m_pObject->GetFrameCount();
m_nCurFrame = m_nStartFrame;
m_nNextFrame = m_nStartFrame;
m_dwAccTime = 0;
m_nLooping = nLooping;
// 1檬甫 FPS肺 唱穿搁, 1橇饭烙阑 逞扁绰 矫埃捞 备秦柳促.
// FPS啊 20捞绊, 醚橇饭烙捞 30钠捞扼绊 且锭 1檬俊 20厘阑 嘛绢具 等促.
// 弊贰辑 1阑 20栏肺 唱穿搁 1钠捞 逞绢哎锭 鞘夸茄 矫埃捞 唱坷霸 等促.
// 捞 矫埃俊 *1000阑 秦辑 剐府技牧靛肺 官槽促.
m_dwMSPF = DWORD( (float(1.0f/15.0) )*1000 ); // 碍力利栏风 傲 矫埃 棱疽朵..
m_dwLastTime = timeGetTime();
return TRUE;
}
void CAniObject::UpdateAnimation(DWORD dwElapsed)
{
m_dwCurTime = timeGetTime();
m_dwElapsed = m_dwCurTime - m_dwLastTime;
m_dwLastTime = m_dwCurTime;
dwElapsed = m_dwElapsed;
m_dwMSPF =100;
// nLooping啊 0牢瘤何磐 八荤甫 茄促.
if(m_nLooping == 0)
m_nNextFrame = m_nEndFrame;
if(m_dwMSPF) // FPS啊 乐栏搁
{
m_dwAccTime += dwElapsed; // 矫埃 绵利
if( m_dwAccTime >= m_dwMSPF ) // FPS客 鞍芭唱 腹捞 绵利登菌栏搁
{
m_nCurFrame = m_nNextFrame; // 泅犁橇饭烙捞 促澜橇饭烙阑 罐绊
m_nNextFrame++;
// 风橇, 唱吝俊 风橇函荐甫 荤侩且锭 咯扁辑 / 泅犁绰 公茄风橇
if(m_nNextFrame > m_nEndFrame-1)
m_nNextFrame = m_nStartFrame; // 公茄风橇
m_dwAccTime = 0;
}
m_finterPolation = (float) m_dwAccTime / (float) m_dwMSPF;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -