本文整理汇总了C++中LPD3DXANIMATIONCONTROLLER::CloneAnimationController方法的典型用法代码示例。如果您正苦于以下问题:C++ LPD3DXANIMATIONCONTROLLER::CloneAnimationController方法的具体用法?C++ LPD3DXANIMATIONCONTROLLER::CloneAnimationController怎么用?C++ LPD3DXANIMATIONCONTROLLER::CloneAnimationController使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LPD3DXANIMATIONCONTROLLER
的用法示例。
在下文中一共展示了LPD3DXANIMATIONCONTROLLER::CloneAnimationController方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Create
INT CLcXSkinIns::Create(void* p1, void* p2, void* p3, void* p4)
{
XTrack* pInst = NULL;
m_pOrg = (CLcXSkinSrc*)p1;
pInst =(XTrack*)p2;
LPD3DXANIMATIONCONTROLLER pAcOrg = (LPD3DXANIMATIONCONTROLLER)m_pOrg->GetAniController();
m_pFrameOrg = (LPD3DXFRAME)m_pOrg->GetFrameRoot();
HRESULT hr=-1;
DWORD i, dwTracks;
LPD3DXANIMATIONCONTROLLER pNewAC = NULL;
if(pAcOrg)
{
if(m_pAC)
m_pAC->Release();
UINT MaxNumAnimationOutputs = pAcOrg->GetMaxNumAnimationOutputs();
UINT MaxNumAnimationSets = pAcOrg->GetMaxNumAnimationSets();
UINT MaxNumTracks = pAcOrg->GetMaxNumTracks();
UINT MaxNumEvents = pAcOrg->GetMaxNumEvents();
hr = pAcOrg->CloneAnimationController(MaxNumAnimationOutputs
, MaxNumAnimationSets
, MaxNumTracks
, MaxNumEvents
, &pNewAC);
if(FAILED(hr))
return -1;
m_pAC = pNewAC;
// LPD3DXTRACK_DESC;
//LPD3DXANIMATIONSET pAS= NULL;
FLOAT fTrackPosition = pInst->fTrackPosition;
FLOAT fTrackSpeed = pInst->fTrackSpeed;
// Start with all tracks disabled
dwTracks = m_pAC->GetMaxNumTracks();
for( i = 0; i < dwTracks; ++ i )
{
m_pAC->SetTrackEnable( i, TRUE );
m_pAC->SetTrackWeight( i, 1.0f );
m_pAC->SetTrackSpeed( i, 1);
m_pAC->SetTrackPosition(i, fTrackPosition);
}
}
return 0;
}
示例2: LoadAnimeFromX
HRESULT MeshManager::LoadAnimeFromX(LPD3DXANIMATIONCONTROLLER &pAnimControllerTmp,DxAnimeMesh *mesh,
const string& fName,const string& path)
{
//読み込み用アニメーションコントローラ
// LPD3DXANIMATIONCONTROLLER pAnimControllerTmp = NULL;
/*アニメーションコントローラ関連*/
//アニメーションコントローラの設定
if(pAnimControllerTmp!=NULL)
{
//トラック数をアニメーションセット数に増やす
unsigned TracksNum = pAnimControllerTmp->GetMaxNumTracks();
unsigned AnimSetsNum = pAnimControllerTmp->GetMaxNumAnimationSets();
//
if(TracksNum < AnimSetsNum)
{
TracksNum = AnimSetsNum;
}
//読み込んだアニメーションコントローラから新たに設定された複製を生成
if(FAILED(pAnimControllerTmp->CloneAnimationController(
pAnimControllerTmp->GetMaxNumAnimationOutputs(),
pAnimControllerTmp->GetMaxNumAnimationSets(),
TracksNum,
pAnimControllerTmp->GetMaxNumEvents(),
&mesh->pAnimController)))
{
}
//読み込み用アニメーションコントローラの開放
// SAFE_RELEASE(pAnimControllerTmp);
//トラックに全てのアニメーションセットを読み込む
for(unsigned i = 1; i < AnimSetsNum; i++ )
{
//読み込み用オブジェクトの宣言
LPD3DXANIMATIONSET pAnimSet = NULL;
//アニメーションコントローラからアニメーションセットを読み込む
if(FAILED(mesh->pAnimController->GetAnimationSet(i, &pAnimSet)))
{
}
//指定トラックにアニメーションセットを設定
if(FAILED(mesh->pAnimController->SetTrackAnimationSet(i, pAnimSet)))
{
}
//トラックに設定済みのアニメーションセットを開放
SAFE_RELEASE(pAnimSet);
}
}
else
{
mesh->pAnimController = NULL;
}
//フレームの全階層をチェックしてボーンの関連付けを行う
if(FAILED((this->SetupBoneFromFrame(mesh->pFrameRoot, mesh->pFrameRoot))))
{
return E_FAIL;
}
return S_OK;
}