38 m_currentTarget = m_targets = NULL;
43 void CActionManager::removeActionAtIndex(
unsigned int index,
tHashElement* element) {
57 if ( element->
actions.size() == 0 ) {
58 if ( m_currentTarget == element )
59 m_currentTargetSalvaged =
true;
61 deleteHashElement(element);
67 void CActionManager::deleteHashElement(
tHashElement* element) {
125 element->
actions.push_back(action);
132 for (
tHashElement *element=m_targets; element != NULL; ) {
143 if ( target == NULL )
150 if ( std::find(element->
actions.begin(),
154 m_currentTargetSalvaged =
true;
156 for (std::vector<CAction*>::iterator it = element->
actions.begin();
161 if ( m_currentTarget == element)
162 m_currentTargetSalvaged =
true;
164 deleteHashElement(element);
180 int index = GenericsHelper::getIndexOfObjectInVector<CAction>(&element->
actions, action);
182 removeActionAtIndex(index, element);
197 for (std::vector<CAction*>::iterator it = element->
actions.begin();
203 removeActionAtIndex(std::distance(element->
actions.begin(), it), element);
219 if ( element->
actions.size() == 0 ) {
220 CAction* iterated_action = NULL;
221 for (std::vector<CAction*>::iterator it = element->
actions.begin();
224 iterated_action = *it;
225 if ( iterated_action->
tag == tag )
226 return iterated_action;
240 return ( element->
actions.size() > 0 ? element->
actions.size() : 0 );
249 m_currentTarget = elt;
250 m_currentTargetSalvaged =
false;
252 if ( !m_currentTarget->
paused ) {
285 if ( m_currentTargetSalvaged && m_currentTarget->
actions.size() == 0 )
286 deleteHashElement(m_currentTarget);
289 m_currentTarget = NULL;
void removeAction(CAction *action)
void removeActionByTag(unsigned int tag, CGameObject *target)
CGameObject * getOriginalTarget() const
#define HASH_ADD_INT(head, intfield, add)
bool currentActionSalvaged
virtual void step(float dt)
#define HASH_FIND_INT(head, findint, out)
void resumeTarget(CGameObject *target)
unsigned int numberOfRunningActionsInTarget(CGameObject *target)
std::vector< CAction * > actions
#define HASH_DEL(head, delptr)
virtual void startWithTarget(CGameObject *target)
CAction * getActionByTag(unsigned int tag, CGameObject *game_object)
void addAction(CAction *action, CGameObject *target, bool paused)
void removeAllActionsFromTarget(CGameObject *target)
static bool deleteObjectFromVector(std::vector< T * > *vec, void *object_to_delete)
struct _hashElement tHashElement
void pauseTarget(CGameObject *target)