Ejemplo n.º 1
0
        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)));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
        }