logic: Reduced delays when combining TaskDecoratorRepeat and TaskSelector
This commit is contained in:
@@ -28,7 +28,7 @@ Task::TaskState TaskDecoratorRepeat::doUpdate(std::shared_ptr<Blackboard> blackb
|
|||||||
}
|
}
|
||||||
else if (state == Task::STATE_FAILURE)
|
else if (state == Task::STATE_FAILURE)
|
||||||
{
|
{
|
||||||
state = m_exitState;
|
return m_exitState;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#include "TaskGroupSelector.h"
|
#include "TaskGroupSelector.h"
|
||||||
|
|
||||||
TaskGroupSelector::TaskGroupSelector()
|
TaskGroupSelector::TaskGroupSelector()
|
||||||
|
: m_taskIndex(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,20 +21,21 @@ Task::TaskState TaskGroupSelector::doUpdate(std::shared_ptr<Blackboard> blackboa
|
|||||||
{
|
{
|
||||||
return STATE_FAILURE;
|
return STATE_FAILURE;
|
||||||
}
|
}
|
||||||
else if (m_taskIndex < 0)
|
|
||||||
{
|
|
||||||
return STATE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
TaskState state = m_taskRunners[m_taskIndex]->update(blackboard);
|
TaskState state = m_taskRunners[m_taskIndex]->update(blackboard);
|
||||||
|
|
||||||
if (state == STATE_FAILURE)
|
if (state == STATE_FAILURE)
|
||||||
{
|
{
|
||||||
m_taskIndex++;
|
m_taskIndex++;
|
||||||
|
|
||||||
|
if (m_taskIndex >= int(m_taskRunners.size()))
|
||||||
|
{
|
||||||
|
return STATE_FAILURE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (state == STATE_SUCCESS)
|
else if (state == STATE_SUCCESS)
|
||||||
{
|
{
|
||||||
m_taskIndex = -1;
|
return STATE_SUCCESS;
|
||||||
}
|
}
|
||||||
else if (state == STATE_HOLD)
|
else if (state == STATE_HOLD)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user