Example #1
0
void MotionMaster::ClearExpireList()
{
    for (auto itr : _expireList)
        DirectDelete(itr);

    _expireList.clear();

    if (empty())
        Initialize();
    else if (NeedInitTop())
        InitTop();
    else if (_cleanFlag & MOTIONMMASTER_CLEANFLAG_RESET)
        top()->Reset(_owner);

    _cleanFlag &= ~MOTIONMMASTER_CLEANFLAG_RESET;
}
Example #2
0
void MotionMaster::DirectClean(MovementSlot slot)
{
    if (MovementGenerator* motion = GetMotionSlot(slot))
    {
        _slot[slot] = nullptr;
        DirectDelete(motion);
    }

    while (!empty() && !top())
        --_top;

    if (empty())
        Initialize();
    else if (NeedInitTop())
        InitTop();
}
Example #3
0
void MotionMaster::DirectClean(bool reset)
{
    while (size() > 1)
    {
        MovementGenerator *curr = top();
        pop();
        if (curr) DirectDelete(curr);
    }

    if (empty())
        return;

    if (NeedInitTop())
        InitTop();
    else if (reset)
        top()->Reset(_owner);
}
Example #4
0
void MotionMaster::DirectExpire(bool reset)
{
    if (size() > 1)
    {
        MovementGenerator* curr = top();
        pop();
        DirectDelete(curr);
    }

    while (!empty() && !top())
        --_top;

    if (empty())
        Initialize();
    else if (NeedInitTop())
        InitTop();
    else if (reset)
        top()->Reset(_owner);
}
Example #5
0
void MotionMaster::ClearExpireList()
{
    for (size_t i = 0; i < _expireList->size(); ++i)
    {
        MovementGenerator* mg = (*_expireList)[i];
        DirectDelete(mg);
    }

    delete _expireList;
    _expireList = nullptr;

    if (empty())
        Initialize();
    else if (NeedInitTop())
        InitTop();
    else if (_cleanFlag & MMCF_RESET)
        top()->Reset(_owner);

    _cleanFlag &= ~MMCF_RESET;
}