public void SetChildAction(ActionEditor action) { foreach (var item in _childActor) { ActorEditor actor = item.Value; List <ActionEditor> list = null; if (action.IsSkillAction) { list = actor.SkillActions; } else { list = actor.GeneralActions; } int index = list.FindIndex(s => s.ActionName.Equals(action.ActionName)); if (index == -1) { ActionEditor add = Clipboard.Paste <ActionEditor>(); add.ActState = ActionEditor.ActionState.New; list.Add(add); continue; } if (list[index].ActState == ActionEditor.ActionState.Override) { continue; } Clipboard.Copy(action, CopyModes.DeepCopy); ActionEditor temp = Clipboard.Paste <ActionEditor>(); temp.ResetActorEditor(actor); list[index] = temp; } }
void AddChildActor(ActorEditor childCfg) { var modelDict = childCfg.GetGeneralActionDict(); foreach (var item in GeneralActions) { if (modelDict.ContainsKey(item.ActionName)) { modelDict[item.ActionName].ActState = ActionEditor.ActionState.Override; } else { Clipboard.Copy(item, CopyModes.DeepCopy); ActionEditor action = Clipboard.Paste <ActionEditor>(); action.ActState = ActionEditor.ActionState.Inherit; childCfg.GeneralActions.Add(action); action.ResetActorEditor(childCfg); } } var skillDict = childCfg.GetSkillActionDict(); foreach (var item in SkillActions) { if (skillDict.ContainsKey(item.ActionName)) { skillDict[item.ActionName].ActState = ActionEditor.ActionState.Override; } else { Clipboard.Copy(item, CopyModes.DeepCopy); ActionEditor action = Clipboard.Paste <ActionEditor>(); action.ActState = ActionEditor.ActionState.Inherit; childCfg.SkillActions.Add(action); action.ResetActorEditor(childCfg); } } if (!_childActor.ContainsKey(childCfg.ModelName)) { _childActor.Add(childCfg.ModelName, childCfg); } }