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

📄 aniinfomanager.cpp

📁 墨香最新私服
💻 CPP
字号:
// AniInfoManager.cpp: implementation of the CAniInfoManager class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "AniInfoManager.h"
#include "Engine/GraphicEngine.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CAniInfoManager::CAniInfoManager()
{

}

CAniInfoManager::~CAniInfoManager()
{
	for(int n=0;n<MAX_BYTE_VALUE;++n)
	{
		PTRLISTSEARCHSTART(m_AniInfoList[n],ANIINFOOBJ*,pobj)
			delete pobj->pAniInfo;
			delete pobj;
		PTRLISTSEARCHEND
			
		m_AniInfoList[n].RemoveAll();
	}
}

CAniInfo* CAniInfoManager::FindAniInfoFromPool(char* filename)
{
	BYTE headkey = (BYTE)*filename;
	PTRLISTSEARCHSTART(m_AniInfoList[headkey],ANIINFOOBJ*,pobj)
		if(strcmp(pobj->filename,filename) == 0)
			return pobj->pAniInfo;
	PTRLISTSEARCHEND

	return NULL;
}

void CAniInfoManager::AddAniInfoToPool(char* filename,CAniInfo* pAniInfo)
{
	BYTE headkey = (BYTE)*filename;
	ANIINFOOBJ* pobj = new ANIINFOOBJ(filename,pAniInfo);	
	m_AniInfoList[headkey].AddHead(pobj);
}

CAniInfo* CAniInfoManager::GetAniInfoObj(char* filename,GXOBJECT_HANDLE handle)
{
	CAniInfo* pAniInfo = FindAniInfoFromPool(filename);
	if(pAniInfo)
		return pAniInfo;

	return LoadAniInfoFile(filename,handle);
}

CAniInfo* CAniInfoManager::GetAniInfoObj(char* filename,GXOBJECT_HANDLE handle,WORD StartFrame,WORD EndFrame)
{
	CAniInfo* pAniInfo = GetAniInfoObj(filename,handle);
	ASSERT(pAniInfo->GetMaxAniNum() <= 1);
	ANIINFO* pInfo = pAniInfo->GetAniInfo(1);
	pInfo->StartFrame = StartFrame;
	pInfo->EndFrame = EndFrame;
	return pAniInfo;
}

CAniInfo* CAniInfoManager::LoadAniInfoFile(char* filename,GXOBJECT_HANDLE handle)
{
	DWORD MaxAniNum = g_pExecutive->GXOGetMotionNum(handle,0);	

	CAniInfo* pAniinfo = new CAniInfo(filename,MaxAniNum);
	AddAniInfoToPool(filename,pAniinfo);

	return pAniinfo;
}

⌨️ 快捷键说明

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