public override void OnPaste() { base.OnPaste(); List <BTState> newStates = new List <BTState>(); for (int i = 0; i < copiedStates.Count; i++) { var copyState = copiedStates[i]; var newState = BTState.Create(target, copyState); newState.name = copyState.name; newState.OnCreate(); BTEditorWindow.instance.AddNewBTNode(newState); EditorUtility.SetDirty(target); BTGenericMenu.AddStateToFsm(target, newState); newStates.Add((newState)); } for (int j = 0; j < newStates.Count; j++) { var newState = newStates[j]; newState.ReFindEvent(); for (int i = 0; i < newState.totalActions.Count; i++) { BTGenericMenu.AddActionToState(newState, newState.totalActions[i]); } } EditorUtility.SetDirty(target); ShowNotification(new GUIContent("Pasted {0} State.".Format(newStates.Count))); }
void AddCustomState(object obj) { var para = obj as string; var type = Type.GetType(para); var newState = BTState.Create(currFsm, type); newState.Name = type.Name; var newNode = BTEditorWindow.instance.AddNewBTNode(newState); newState.OnCreate(); newNode.SetPosition(BTEditorWindow.instance.GetMousePosition()); EditorUtility.SetDirty(currFsm); AddStateToFsm(currFsm, newState); }
public void ClickNone(object obj) { var para = obj as string; switch (para) { case "NewGlobalEvent": { var newEvent = BTEvent.Create(currFsm); var newState = BTState.Create <BTState>(currFsm); newEvent.TargetState = newState; newState.GlobalEvent = newEvent; BTEditorWindow.instance.AddNewBTNode(newState); AddStateToFsm(currFsm, newState); } break; case "NewState": { var newState = BTState.Create <BTState>(currFsm); newState.Name = "NewState"; var newNode = BTEditorWindow.instance.AddNewBTNode(newState); newNode.SetPosition(BTEditorWindow.instance.GetMousePosition()); EditorUtility.SetDirty(currFsm); AddStateToFsm(currFsm, newState); } break; case "PasteState": { var newState = BTState.Create(currFsm, copyState); newState.Name = "NewState"; newState.OnCreate(); BTEditorWindow.instance.AddNewBTNode(newState); EditorUtility.SetDirty(currFsm); AddStateToFsm(currFsm, newState); for (int i = 0; i < newState.totalActions.Count; i++) { AddActionToState(newState, newState.totalActions[i]); } } break; case "CancelEditFsm": BTEditorWindow.target = null; break; default: { var type = Type.GetType(para); if (type.IsSubclassOf(typeof(BTVariable))) { var newVariable = CreateVariable(type, currFsm); newVariable.OnCreate(); EditorUtility.SetDirty(newVariable); Debug.Log(type.ToString()); } } break; } }