/*
* 功能: 增加一个渐出操作对象
* 摘要: 通过该函数可以自动添加一个渐变对象模型
* 参数: pShape	- 对象指针
* 返回值: -
* 作者: lpf
* 创建日期: 2008.10.13
* 修改日志:
*	2009.05.07 - lpf
*		由于特效渐出效果不大,且容易造成莫名的当机,故禁止了特效渐出效果;
*	2009.05.21 - lpf
*		由于修改了一些模型底层错误,故现将特效渐出效果恢复;
*/
void CAlphaFadeObjectList::AddFadeOutObject(CShape * pShape)
{
	if (pShape->GetDisplayModel() == NULL || pShape->GetAnimInfo() == NULL/* ||
																		  pShape->GetType() == TYPE_EFFECT*/)
																		  return;

	CShape * pTmp = NULL;
	pShape->CopyShapeDisplayInfo(pTmp);
	if (pTmp == NULL)
		return;

	pTmp->SetAlphaFadeInStartTime(timeGetTime());
	pTmp->SetAlphaFadeInTimeLength(pShape->GetAlphaFadeInTimeLength());
	pTmp->SetAlphaFadeMode(ALPHA_FADE_OUT);
	pTmp->SetAlphaValue(1.0f);

	m_vecObjectList.push_back(pTmp);
}
/*
* 功能: 更新列表中的对象
* 摘要: 完成渐出操作的对象需要删除
* 参数: -
* 返回值: -
* 作者: lpf
* 创建日期: 2008.10.13
* 修改日志:
*/
void CAlphaFadeObjectList::Update()
{
	long lElapseTime = 0;

	vector<CShape *>::iterator it = m_vecObjectList.begin();
	while (it != m_vecObjectList.end())
	{
		CShape * pTmp = (*it);
		lElapseTime = timeGetTime() - pTmp->GetAlphaFadeInStartTime();

		if (lElapseTime <= pTmp->GetAlphaFadeInTimeLength())
		{
			pTmp->SetAlphaValue((float)(pTmp->GetAlphaFadeInTimeLength() - lElapseTime) / (float)pTmp->GetAlphaFadeInTimeLength());
			++it;
		}else
		{
			SAFE_DELETE(pTmp);
			it = m_vecObjectList.erase(it);
		}
	}
}