행동을 제어하는 트리
모든 상태를 각각 제어해야 하는 fsm과 다르게 함수를 어느정도 재사용하기 때문에 많은 상태를 제어해야 하는 경우에 유리하다.
노드에다가 함수 포인터를 넣는 방식으로 구현했다.
Composite Node: 여러 자식 노드를 가질 수 있으며, 대표적으로 Selector와 Sequence가 있음.
Selector : 자식 노드들 중 하나만 성공해도 즉시 성공을 반환
-> 자식 노드들 중 성공이 나올때까지 실행
Sequence : 모든 자식 노드들이 성공을 반환해야 성공을 반환
-> 자식 노드들 중 실패가 나올때까지 실행
( * 노드들의 실행 순서가 항상 동일하다는걸 기억하자)
Decorator Node: 하나의 자식 노드만 가지며, 그 행동을 수정하거나 조건을 추가함.
BlackBoard : 지정된 키에 값이 설정돼어있는지 확인하는 노드
CompareBBEbtries : 두 블랙보드 키 값을 비교한 결과에 따라 통과시킨다.
cooldown : 일정 시간동안 노드를 잠근다.
ConditionSelectorNode: 조건을 평가하고, 참/거짓에 따라 다른 행동 노드를 실행하는 노드
리프 노드에 실제 행동(Action)이나 조건(Condition)을 정의.
여기에 우리가 실제 구현하려는 함수들이 들어가겠지?