Polish up behaviour tree, add docs
This commit is contained in:
@@ -61,9 +61,9 @@ const char *bzBTNodeTypeToStr(BzBTNodeType type) {
|
||||
return "SELECTOR";
|
||||
case BZ_BT_COMP_SEQUENCE:
|
||||
return "SEQUENCE";
|
||||
case BZ_BT_COMP_P_SELECTOR:
|
||||
case BZ_BT_COMP_PSELECTOR:
|
||||
return "P_SELECTOR";
|
||||
case BZ_BT_COMP_P_SEQUENCE:
|
||||
case BZ_BT_COMP_PSEQUENCE:
|
||||
return "P_SEQUENCE";
|
||||
case BZ_BT_DECOR_DUMMY:
|
||||
return "DUMMY";
|
||||
@@ -124,17 +124,17 @@ void bzBTDestroyRoot(BzObjectPool *nodePool, BzBTNode *node) {
|
||||
bzObjectPoolRelease(nodePool, node);
|
||||
}
|
||||
|
||||
BzBTNode *bzBTCompSelector(BzObjectPool *nodePool, BzBTNode *parent, bool parallel) {
|
||||
BzBTNodeType type = parallel ?
|
||||
BZ_BT_COMP_P_SELECTOR :
|
||||
BZ_BT_COMP_SELECTOR;
|
||||
return bzBTNodeMake(nodePool, parent, type);
|
||||
BzBTNode *bzBTCompSelector(BzObjectPool *nodePool, BzBTNode *parent) {
|
||||
return bzBTNodeMake(nodePool, parent, BZ_BT_COMP_SELECTOR);
|
||||
}
|
||||
BzBTNode *bzBTCompSequence(BzObjectPool *nodePool, BzBTNode *parent, bool parallel) {
|
||||
BzBTNodeType type = parallel ?
|
||||
BZ_BT_COMP_P_SEQUENCE :
|
||||
BZ_BT_COMP_SEQUENCE;
|
||||
return bzBTNodeMake(nodePool, parent, type);
|
||||
BzBTNode *bzBTCompSequence(BzObjectPool *nodePool, BzBTNode *parent) {
|
||||
return bzBTNodeMake(nodePool, parent, BZ_BT_COMP_SEQUENCE);
|
||||
}
|
||||
BzBTNode *bzBTCompPSelector(BzObjectPool *nodePool, BzBTNode *parent) {
|
||||
return bzBTNodeMake(nodePool, parent, BZ_BT_COMP_PSELECTOR);
|
||||
}
|
||||
BzBTNode *bzBTCompPSequence(BzObjectPool *nodePool, BzBTNode *parent) {
|
||||
return bzBTNodeMake(nodePool, parent, BZ_BT_COMP_PSEQUENCE);
|
||||
}
|
||||
|
||||
BzBTNode *bzBTDecorDummy(BzObjectPool *nodePool, BzBTNode *parent) {
|
||||
@@ -220,9 +220,9 @@ BzBTNode *bzBTCompStateGetRunningChild(const BzBTNodeState *state) {
|
||||
BZ_ASSERT(state->node);
|
||||
BzBTNodeType type = state->node->type;
|
||||
bool isComposite = type == BZ_BT_COMP_SELECTOR ||
|
||||
type == BZ_BT_COMP_P_SELECTOR ||
|
||||
type == BZ_BT_COMP_PSELECTOR ||
|
||||
type == BZ_BT_COMP_SEQUENCE ||
|
||||
type == BZ_BT_COMP_P_SEQUENCE;
|
||||
type == BZ_BT_COMP_PSEQUENCE;
|
||||
BZ_ASSERT(isComposite);
|
||||
return state->as.composite.running;
|
||||
}
|
||||
@@ -384,8 +384,8 @@ static inline BzBTExecReturn bzBTExecuteComposite(const BzBTNode *node, f32 dt,
|
||||
BzBTExecState *state, BzObjectPool *statePool) {
|
||||
BzBTNodeState *nodeState = getNodeState(node, state);
|
||||
|
||||
bool isParallel = node->type == BZ_BT_COMP_P_SEQUENCE ||
|
||||
node->type == BZ_BT_COMP_P_SELECTOR;
|
||||
bool isParallel = node->type == BZ_BT_COMP_PSEQUENCE ||
|
||||
node->type == BZ_BT_COMP_PSELECTOR;
|
||||
|
||||
BzBTNode *start = node->first;
|
||||
if (!isParallel && nodeState)
|
||||
@@ -419,12 +419,12 @@ static inline BzBTExecReturn bzBTExecuteComposite(const BzBTNode *node, f32 dt,
|
||||
}
|
||||
switch (node->type) {
|
||||
case BZ_BT_COMP_SELECTOR:
|
||||
case BZ_BT_COMP_P_SELECTOR:
|
||||
case BZ_BT_COMP_PSELECTOR:
|
||||
if (childReturn.status == BZ_BT_SUCCESS)
|
||||
execReturn.status = BZ_BT_SUCCESS;
|
||||
break;
|
||||
case BZ_BT_COMP_SEQUENCE:
|
||||
case BZ_BT_COMP_P_SEQUENCE:
|
||||
case BZ_BT_COMP_PSEQUENCE:
|
||||
if (childReturn.status == BZ_BT_FAIL)
|
||||
execReturn.status = BZ_BT_FAIL;
|
||||
break;
|
||||
@@ -441,12 +441,12 @@ static inline BzBTExecReturn bzBTExecuteComposite(const BzBTNode *node, f32 dt,
|
||||
}
|
||||
switch (node->type) {
|
||||
case BZ_BT_COMP_SELECTOR:
|
||||
case BZ_BT_COMP_P_SELECTOR:
|
||||
case BZ_BT_COMP_PSELECTOR:
|
||||
if (numFailed == numChildren)
|
||||
execReturn.status = BZ_BT_FAIL;
|
||||
break;
|
||||
case BZ_BT_COMP_SEQUENCE:
|
||||
case BZ_BT_COMP_P_SEQUENCE:
|
||||
case BZ_BT_COMP_PSEQUENCE:
|
||||
if (numSuccessful == numChildren)
|
||||
execReturn.status = BZ_BT_SUCCESS;
|
||||
break;
|
||||
@@ -585,8 +585,8 @@ static inline BzBTExecReturn bzBTExecuteNode(const BzBTNode *node, f32 dt,
|
||||
switch (node->type) {
|
||||
case BZ_BT_COMP_SELECTOR:
|
||||
case BZ_BT_COMP_SEQUENCE:
|
||||
case BZ_BT_COMP_P_SELECTOR:
|
||||
case BZ_BT_COMP_P_SEQUENCE:
|
||||
case BZ_BT_COMP_PSELECTOR:
|
||||
case BZ_BT_COMP_PSEQUENCE:
|
||||
execReturn = bzBTExecuteComposite(node, dt, state, statePool);
|
||||
break;
|
||||
case BZ_BT_DECOR_DUMMY:
|
||||
|
||||
Reference in New Issue
Block a user