void CCActionManager::removeAllActionsFromTarget(CAObject *pTarget) { // explicit null handling if (pTarget == NULL) { return; } tHashElement *pElement = NULL; HASH_FIND_INT(m_pTargets, &pTarget, pElement); if (pElement) { if (ccArrayContainsObject(pElement->actions, pElement->currentAction) && (! pElement->currentActionSalvaged)) { pElement->currentAction->retain(); pElement->currentActionSalvaged = true; } ccArrayRemoveAllObjects(pElement->actions); if (m_pCurrentTarget == pElement) { m_bCurrentTargetSalvaged = true; } else { deleteHashElement(pElement); } } else { // CCLOG("CrossApp: removeAllActionsFromTarget: Target not found"); } }
void ActionManager::removeAllActionsFromTarget(Node *target) { // explicit null handling if (target == nullptr) { return; } tHashElement *element = nullptr; HASH_FIND_PTR(_targets, &target, element); if (element) { if (ccArrayContainsObject(element->actions, element->currentAction) && (! element->currentActionSalvaged)) { element->currentAction->retain(); element->currentActionSalvaged = true; } ccArrayRemoveAllObjects(element->actions); if (_currentTarget == element) { _currentTargetSalvaged = true; } else { deleteHashElement(element); } } }
void CCActionManager::addAction(CCAction *pAction, CAView *pTarget, bool paused) { CCAssert(pAction != NULL, ""); CCAssert(pTarget != NULL, ""); tHashElement *pElement = NULL; // we should convert it to CAObject*, because we save it as CAObject* CAObject *tmp = pTarget; HASH_FIND_INT(m_pTargets, &tmp, pElement); if (! pElement) { pElement = (tHashElement*)calloc(sizeof(*pElement), 1); pElement->paused = paused; pTarget->retain(); pElement->target = pTarget; HASH_ADD_INT(m_pTargets, target, pElement); } actionAllocWithHashElement(pElement); CCAssert(! ccArrayContainsObject(pElement->actions, pAction), ""); ccArrayAppendObject(pElement->actions, pAction); pAction->startWithTarget(pTarget); }
void ActionManager::addAction(Action *action, Node *target, bool paused) { CCASSERT(action != nullptr, "action can't be nullptr!"); CCASSERT(target != nullptr, "target can't be nullptr!"); if(action == nullptr || target == nullptr) return; tHashElement *element = nullptr; // we should convert it to Ref*, because we save it as Ref* Ref *tmp = target; HASH_FIND_PTR(_targets, &tmp, element); if (! element) { element = (tHashElement*)calloc(sizeof(*element), 1); element->paused = paused; target->retain(); element->target = target; HASH_ADD_PTR(_targets, target, element); } actionAllocWithHashElement(element); CCASSERT(! ccArrayContainsObject(element->actions, action), "action already be added!"); ccArrayAppendObject(element->actions, action); action->startWithTarget(target); }
void ActionManager::addAction(Action *pAction, Node *target, bool paused) { CCASSERT(pAction != NULL, ""); CCASSERT(target != NULL, ""); tHashElement *pElement = NULL; // we should convert it to Object*, because we save it as Object* Object *tmp = target; HASH_FIND_INT(_targets, &tmp, pElement); if (! pElement) { pElement = (tHashElement*)calloc(sizeof(*pElement), 1); pElement->paused = paused; target->retain(); pElement->target = target; HASH_ADD_INT(_targets, target, pElement); } actionAllocWithHashElement(pElement); CCASSERT(! ccArrayContainsObject(pElement->actions, pAction), ""); ccArrayAppendObject(pElement->actions, pAction); pAction->startWithTarget(target); }
void ActionManager::removeAllActionsFromTarget(Object *target) { // explicit null handling if (target == NULL) { return; } tHashElement *element = NULL; HASH_FIND_PTR(m_pTargets, &target, element); if (element) { if (ccArrayContainsObject(element->actions, element->currentAction) && (! element->currentActionSalvaged)) { element->currentAction->retain(); element->currentActionSalvaged = true; } ccArrayRemoveAllObjects(element->actions); if (m_pCurrentTarget == element) { m_bCurrentTargetSalvaged = true; } else { deleteHashElement(element); } } else { // CCLOG("cocos2d: removeAllActionsFromTarget: Target not found"); } }
/** Removes from arr all objects in minusArr. For each object in minusArr, all matching instances in arr will be removed. */ void ccArrayFullRemoveArray(ccArray *arr, ccArray *minusArr) { ssize_t back = 0; for (ssize_t i = 0; i < arr->num; i++) { if (ccArrayContainsObject(minusArr, arr->arr[i])) { CC_SAFE_RELEASE(arr->arr[i]); back++; } else { arr->arr[i - back] = arr->arr[i]; } } arr->num -= back; }
bool CCArray::containsObject(CCObject* object) { return ccArrayContainsObject(data, object); }