protected void removeActionAtIndex(Node target, TargetActionData data, int index) { if (data == null || data.salvaged) { // invalid //return; #if false // 这里不能从待添加队里搜寻,index指向的为原data位置 if (!_delayToAdd.TryGetValue(target, out data)) { //return; } else { if (data.removeActionAtIndex(index)) { _delayToAdd.Remove(target); } else { //return; } } #endif } else { // valid if (data.removeActionAtIndex(index)) { if (_delayLock) { data.salvaged = true; _delayToRemove.Add(target); } else { _targets.Remove(target); } } else { //return; } } }
public void addAction(Node target, Action action, bool pause = false) { action.startWithTarget(target); TargetActionData data; if (!_targets.TryGetValue(target, out data) || data.salvaged) { // not found target or target salvaged. invalid if (_delayLock) { if (!_delayToAdd.TryGetValue(target, out data)) { data = new TargetActionData(pause); _delayToAdd.Add(target, data); } } else { // not exists and not locked Debug.Assert(data == null || !data.salvaged, "target exists and salvaged, must be locked"); data = new TargetActionData(pause); _targets.Add(target, data); } } else { /* * // exists and not salvaged. valid * if (_delayLock) { * if (!_delayToAdd.TryGetValue (target, out data)) { * data = new TargetActionData (pause); * _delayToAdd.Add (target, data); * } * } else { * // valid and not locked * } */ } data.addAction(action); }