//
	// 保存步进时间
	//
	VOID CAffectorBase::SaveStepTime(TiXmlNode *pAffectorNode, const CAffectorBase *pDefaultAffector) const
	{
		ASSERT(pAffectorNode);

		if (m_step != pDefaultAffector->m_step) {
			TiXmlElement *pStepTimeNode = SAFE_NEW(MEMTYPE_HEAP) TiXmlElement("StepTime"); ASSERT(pStepTimeNode);
			{
				pStepTimeNode->SetAttributeFloat("value", m_step);
			}
			pAffectorNode->LinkEndChild(pStepTimeNode);
		}
	}
	//
	// 保存结束时间
	//
	VOID CAffectorBase::SaveEndTime(TiXmlNode *pAffectorNode, const CAffectorBase *pDefaultAffector) const
	{
		ASSERT(pAffectorNode);

		if (m_minEndTime != pDefaultAffector->m_minEndTime || m_maxEndTime != pDefaultAffector->m_maxEndTime) {
			TiXmlElement *pEndTimeNode = SAFE_NEW(MEMTYPE_HEAP) TiXmlElement("EndTime"); ASSERT(pEndTimeNode);
			{
				pEndTimeNode->SetAttributeFloat("min_value", m_minEndTime);
				pEndTimeNode->SetAttributeFloat("max_value", m_maxEndTime);
			}
			pAffectorNode->LinkEndChild(pEndTimeNode);
		}
	}
	//
	// 保存XML
	//
	VOID CGfxBillboard::SaveXML(TiXmlNode *pGfxNode) const
	{
		ASSERT(pGfxNode);

		TiXmlElement *pOffsetNode = SAFE_NEW(MEMTYPE_HEAP) TiXmlElement("Offset"); ASSERT(pOffsetNode);
		{
			pOffsetNode->SetAttributeFloat("value", m_offset);
		}
		pGfxNode->LinkEndChild(pOffsetNode);

		TiXmlElement *pDirectionNode = SAFE_NEW(MEMTYPE_HEAP) TiXmlElement("Direction"); ASSERT(pDirectionNode);
		{
			pDirectionNode->SetAttributeInt("value", m_directionType);
		}
		pGfxNode->LinkEndChild(pDirectionNode);

		CGfxBase::SaveXML(pGfxNode);
	}