Setup state in setAIBehaviour (syncpoints)
This commit is contained in:
@@ -53,11 +53,6 @@ ecs_entity_t entityCreateBaseUnit(const Position position, f32 size, Player play
|
|||||||
.elapsed = 0.0f,
|
.elapsed = 0.0f,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
ecs_set(ECS, e, BzBTState, {
|
|
||||||
.root = NULL,
|
|
||||||
.nodeStatePool = game->pools.btNodeState
|
|
||||||
});
|
|
||||||
ecs_set(ECS, e, AIBlackboard, {.entity = e});
|
|
||||||
ecs_add_id(ECS, e, Selectable);
|
ecs_add_id(ECS, e, Selectable);
|
||||||
Unit unitComp = {
|
Unit unitComp = {
|
||||||
.attackElapsed = 0.0f,
|
.attackElapsed = 0.0f,
|
||||||
|
|||||||
@@ -35,20 +35,23 @@ void updateAISystem(ecs_iter_t *it) {
|
|||||||
void setAIBehaviour(ecs_entity_t entity, const BzBTNode *root,
|
void setAIBehaviour(ecs_entity_t entity, const BzBTNode *root,
|
||||||
const AIBlackboard *blackboard) {
|
const AIBlackboard *blackboard) {
|
||||||
Game *game = ecs_singleton_get_mut(ECS, Game);
|
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||||
BZ_ASSERT(ecs_has(ECS, entity, BzBTState));
|
if (ecs_has(ECS, entity, BzBTState)) {
|
||||||
BZ_ASSERT(!blackboard || ecs_has(ECS, entity, AIBlackboard));
|
BzBTState *prevState = ecs_get_mut(ECS, entity, BzBTState);
|
||||||
|
bzBTDestroyState(prevState);
|
||||||
if (blackboard) {
|
|
||||||
AIBlackboard *b = ecs_get_mut(ECS, entity, AIBlackboard);
|
|
||||||
*b = *blackboard;
|
|
||||||
if (b->proximity < 2.0f)
|
|
||||||
b->proximity = 2.0f;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BzBTState *state = ecs_get_mut(ECS, entity, BzBTState);
|
ecs_set(ECS, entity, BzBTState, {
|
||||||
bzBTDestroyState(state);
|
|
||||||
*state = bzBTCreateState(&(BzBTStateDesc) {
|
|
||||||
.root = root,
|
.root = root,
|
||||||
.pool = game->pools.btNodeState
|
.nodeStatePool = game->pools.btNodeState,
|
||||||
});
|
});
|
||||||
|
AIBlackboard defaultBB = {
|
||||||
|
.entity = 0
|
||||||
|
};
|
||||||
|
if (blackboard) {
|
||||||
|
defaultBB = *blackboard;
|
||||||
|
}
|
||||||
|
defaultBB.entity = entity;
|
||||||
|
if (defaultBB.proximity < 2.0f)
|
||||||
|
defaultBB.proximity = 2.0f;
|
||||||
|
ecs_set_ptr(ECS, entity, AIBlackboard, &defaultBB);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user