public void Active(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> kEffect) { if (m_kPriorityList.IsEmpty()) { m_kPriorityList.PushBack(kEffect._priorityNode); kEffect.OnActive(avatar); _OnUpdated(avatar, null); } else { ViDoubleLinkNode2 <ViAvatarDurationVisualInterface <TAvatar> > iter = m_kPriorityList.GetHead(); ViAvatarDurationVisualInterface <TAvatar> pkOldTop = iter.Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(pkOldTop); while (!m_kPriorityList.IsEnd(iter)) { ViAvatarDurationVisualInterface <TAvatar> pkEffect = iter.Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(pkEffect); if (kEffect.Weight > pkEffect.Weight) { break; } ViDoubleLink2 <ViAvatarDurationVisualInterface <TAvatar> > .Next(ref iter); } ViDoubleLink2 <ViAvatarDurationVisualInterface <TAvatar> > .PushBefore(iter, kEffect._priorityNode); if (kEffect._priorityNode == m_kPriorityList.GetHead()) { pkOldTop.OnDeactive(avatar); kEffect.OnActive(avatar); _OnUpdated(avatar, pkOldTop); } } }
public void Deactive(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> kEffect) { if (kEffect._priorityNode.IsAttach() == false) { return; } if (m_kPriorityList.IsEmpty()) { return; } if (kEffect._priorityNode == m_kPriorityList.GetHead()) { kEffect._priorityNode.Detach(); kEffect.OnDeactive(avatar); if (!m_kPriorityList.IsEmpty()) { ViAvatarDurationVisualInterface <TAvatar> pNewTop = m_kPriorityList.GetHead().Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(pNewTop); pNewTop.OnActive(avatar); } _OnUpdated(avatar, kEffect); } else { kEffect._priorityNode.Detach(); } }
void _Fresh(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> kEffect) { ViDebuger.AssertError(_deleGetEffectController); ViAvatarDurationVisualController <TAvatar> pkController = _deleGetEffectController(avatar, kEffect.Type); if (pkController != null) { pkController.Fresh(avatar, kEffect); } }
public void Load(ViAvatarDurationVisualStruct kInfo, UInt32 weight) { ViDebuger.AssertError(_deleCerateDurationVisual); ViAvatarDurationVisualInterface <TAvatar> pkEffect = _deleCerateDurationVisual(kInfo.type); if (pkEffect != null) { m_kEffectList.PushBack(pkEffect._attachNode); pkEffect.Init(kInfo, weight); } }
public void Deactive(TAvatar avatar) { ViDoubleLinkNode2 <ViAvatarDurationVisualInterface <TAvatar> > iter = m_kEffectList.GetHead(); while (!m_kEffectList.IsEnd(iter)) { ViAvatarDurationVisualInterface <TAvatar> pkEffect = iter.Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(pkEffect); ViDoubleLink2 <ViAvatarDurationVisualInterface <TAvatar> > .Next(ref iter); _Deactive(avatar, pkEffect); } }
public ViAvatarDurationVisualInterface <TAvatar> GetTop() { if (m_kPriorityList.IsEmpty()) { return(null); } else { ViAvatarDurationVisualInterface <TAvatar> top = m_kPriorityList.GetHead().Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(top); return(top); } }
private void _OnUpdated(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> oldVisual) { ViAvatarDurationVisualInterface <TAvatar> pkNewTop = GetTop(); ViAvatarDurationVisualInterface <TAvatar> pkEffect = (oldVisual != null ? oldVisual : pkNewTop); if (pkEffect != null) { // UInt32 uiType = pkEffect->Type(); // FuncUpdate pFunc = ViVisualDurationEffectCreator::FuncUpdateList<TAvatar>().Get(uiType); // if(pFunc) // { // (*pFunc)(kAvatar, pkOldTop, pkNewTop); // } } }
public void Clear(TAvatar avatar) { if (m_kPriorityList.IsEmpty()) { return; } ViDoubleLinkNode2 <ViAvatarDurationVisualInterface <TAvatar> > iter = m_kPriorityList.GetHead(); ViAvatarDurationVisualInterface <TAvatar> top = iter.Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(top); top.OnDeactive(avatar); while (!m_kPriorityList.IsEnd(iter)) { ViAvatarDurationVisualInterface <TAvatar> pkEffect = iter.Data as ViAvatarDurationVisualInterface <TAvatar>; ViDebuger.AssertError(pkEffect); ViDoubleLink2 <ViAvatarDurationVisualInterface <TAvatar> > .Next(ref iter); pkEffect._priorityNode.Detach(); } }
public void Fresh(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> visual) { _OnUpdated(avatar, null); }