private void UpdateEffectTargetPos(SImpactEffect pImpactEffect) { if (pImpactEffect == null) { return; } if (pImpactEffect.IsLineEffect()) { uint uEffect = pImpactEffect.GetEffect(); if (uEffect != 0 && m_Character.GetRenderInterface() != null && pImpactEffect.GetCreatorID() != MacroDefine.INVALID_ID) { CObject_Character pCreator = (CObject_Character)(CObjectManager.Instance.FindServerObject((int)pImpactEffect.GetCreatorID())); if (pCreator != null) { Vector3 fvPos = Vector3.zero; if (pCreator.GetRenderInterface() != null && pImpactEffect.GetCreatorLocator().Length > 0) { pCreator.GetRenderInterface().GetLocator(pImpactEffect.GetCreatorLocator(), ref fvPos); } else { fvPos = pCreator.GetPosition(); } m_Character.GetRenderInterface().SetEffectExtraTransformInfos(uEffect, ref fvPos); } } } }
private void RemoveImpact(uint idImpact) { SImpactEffect pImpactEffect = new SImpactEffect(); if (m_mapImpactEffect.ContainsKey(idImpact)) { pImpactEffect = m_mapImpactEffect[idImpact]; pImpactEffect.DecRefCount(); if (pImpactEffect.GetRefCount() == 0) { uint uEffect = pImpactEffect.GetEffect(); if (uEffect != 0 && m_Character.GetRenderInterface() != null) { m_Character.GetRenderInterface().DelEffect(uEffect); } m_mapImpactEffect.Remove(idImpact); pImpactEffect = null; } } }