Example #1
0
    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);
            }
        }
    }
Example #2
0
 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();
     }
 }
Example #3
0
    void _Fresh(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> kEffect)
    {
        ViDebuger.AssertError(_deleGetEffectController);
        ViAvatarDurationVisualController <TAvatar> pkController = _deleGetEffectController(avatar, kEffect.Type);

        if (pkController != null)
        {
            pkController.Fresh(avatar, kEffect);
        }
    }
Example #4
0
    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);
        }
    }
Example #5
0
    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);
        }
    }
Example #6
0
 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);
     }
 }
Example #7
0
    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);
            //    }
        }
    }
Example #8
0
    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();
        }
    }
Example #9
0
 public void Fresh(TAvatar avatar, ViAvatarDurationVisualInterface <TAvatar> visual)
 {
     _OnUpdated(avatar, null);
 }