public static BTFsm CreateFromOtherTemplate(BTFsm targetFsm, BTTemplate source) { for (int i = 0; i < source.totalEvent.Count; i++) { BTEvent.Create(targetFsm, source.totalEvent[i]); } for (int i = 0; i < source.totalState.Count; i++) { BTState.Create(targetFsm, source.totalState[i]); } for (int i = 0; i < source.totalState.Count; i++) { var state = targetFsm.totalState[i]; state.ReFindEvent(); } for (int i = 0; i < source.totalVariable.Count; i++) { BTVariable.Create(targetFsm, source.totalVariable[i]); } targetFsm.startEvent = targetFsm.FindGlobalEvent(source.startEvent.Name); return(targetFsm); }
public static BTFsm CreateFromOtherTemplate(BTFsm targetFsm, BTTemplate source) { for (int i = 0; i < source.totalEvent.Count; i++) { BTEvent.Create(targetFsm, source.totalEvent[i]); } for (int i = 0; i < source.totalState.Count; i++) { BTState.Create(targetFsm, source.totalState[i]); } for (int i = 0; i < source.totalState.Count; i++) { var state = targetFsm.totalState[i]; for (int j = 0; j < state.totalEvent.Count; j++) { if (state.totalEvent[j].TargetState != null) { state.totalEvent[j].TargetState = targetFsm.FindState(state.totalEvent[j].TargetState.Name); } } } for (int i = 0; i < source.totalVariable.Count; i++) { BTVariable.Create(targetFsm, source.totalVariable[i]); } targetFsm.startEvent = targetFsm.FindGlobalEvent(source.startEvent.Name); return(targetFsm); }
public BTTemplate(BTFsm source) { totalEvent = source.totalEvent; totalState = source.totalState; startEvent = source.startEvent; this.name = source.name; }
public BTEvent CreateEvent(string name) { startEvent = BTEvent.Create(this); startEvent.Name = name; startEvent.isGlobal = true; return(startEvent); }
// Use this for initialization void Start() { var btFsm = gameObject.AddComponent <BTFsm>(); var btEvent = btFsm.CreateStartEvent(); var btState = BTState.Create <BTState>(btFsm); btState.Name = "Dynamic1State"; btEvent.TargetState = btState; btState.Bounds = new Rect(250, 200, 100, 100); var btState1 = BTState.Create <BTState> (btFsm); btState1.Name = "Dynamic2State"; btState1.Bounds = new Rect(400, 200, 100, 100); var privateEvent = BTEvent.Create(btState); privateEvent.Name = "Finish"; privateEvent.TargetState = btState1; var privateEvent2 = BTEvent.Create(btState1); privateEvent2.Name = "Finish"; privateEvent2.TargetState = btState; var waitAction = BTAction.CreateAction <WaitingAction>(btState); waitAction.time = 1; var waitAction1 = BTAction.CreateAction <WaitingAction>(btState1); waitAction1.time = 1; }
public static BTEvent Create(BTState Owner) { var btEvent = new BTEvent(); btEvent.Owner = Owner.Owner; Owner.totalEvent.Add(btEvent); return(btEvent); }
public static BTEvent Create(BTFsm Owner, BTEvent source) { var btEvent = new BTEvent(); btEvent.Owner = Owner; btEvent.isGlobal = source.isGlobal; btEvent.Name = source.Name; Owner.totalEvent.Add(btEvent); return(btEvent); }
public void FindEvent(BTEvent targetEvent) { if (targetEvent.isGlobal) { GlobalEvent = Owner.FindGlobalEvent(targetEvent.Name); if (GlobalEvent != null) { GlobalEvent.TargetState = this; } } }
public void FireEvent(BTEvent nextEvent) { if (nextEvent != null) { if (nextState == null) { nextState = nextEvent.TargetState; } if (OnFireEvent != null) { OnFireEvent(currState, nextEvent); } } }
void FireGlobalEvent(BTEvent nextEvent) { if (currState != null) { currState.OnExit(); } startEvent = nextEvent; currState = startEvent.TargetState; startEvent.OnEnter(); startEvent.OnExit(); startEvent.Finish(); startEvent = null; currState.OnEnter(); //currState.OnEnter(); //nextState = null; }