From a556b45abf18f1bd509daaf63b66b7d55e9fd291 Mon Sep 17 00:00:00 2001 From: jjesswan Date: Mon, 22 Apr 2024 21:56:26 -0400 Subject: add engine version --- .../Systems/AI/Conditions/proximitycondition.cpp | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 engine-ocean/Game/Systems/AI/Conditions/proximitycondition.cpp (limited to 'engine-ocean/Game/Systems/AI/Conditions/proximitycondition.cpp') diff --git a/engine-ocean/Game/Systems/AI/Conditions/proximitycondition.cpp b/engine-ocean/Game/Systems/AI/Conditions/proximitycondition.cpp new file mode 100644 index 0000000..2e40ce7 --- /dev/null +++ b/engine-ocean/Game/Systems/AI/Conditions/proximitycondition.cpp @@ -0,0 +1,43 @@ +#include "proximitycondition.h" +#include "Game/Components/TransformComponent.h" +#include "glm/glm.hpp" +#include + +ProximityCondition::ProximityCondition(std::string entity_id, + std::map& global_blackboard, + float proximity): + m_global_blackboard(global_blackboard) +{ + m_proximity = proximity; + m_entity_id = entity_id; + // initialize just in case + m_global_blackboard["player"].conditionData["isJumping"].conditionTrue = false; + + +} + +// maybe can check locations from blackboard +// pass blackboard into constructor +// struct: positiondata --> getCurrentPos, setCurrentPos +bool ProximityCondition::checkProximity(){ + // unrooted distance + glm::vec3 aiPos = m_global_blackboard[m_entity_id].locationData.currPos; + glm::vec3 otherPos = m_global_blackboard["player"].locationData.currPos; + float distance = pow(aiPos.x-otherPos.x, 2) + pow(aiPos.y-otherPos.y, 2) + pow(aiPos.z-otherPos.z, 2); + + if (distance <= m_proximity) return true; + return false; +} + +// at every update, check if AIPos is near otherPos +Status ProximityCondition::update(float seconds){ + // while entity is still pathfinding, keep returning success + if (m_global_blackboard[m_entity_id].conditionData["isPathfinding"].conditionTrue) return Status::SUCCESS; + if (checkProximity() && m_global_blackboard["player"].conditionData["isJumping"].conditionTrue) return Status::SUCCESS; + + return Status::FAIL; +} + + +void ProximityCondition::reset(){} +void ProximityCondition::addChildren(BTNode *node){} -- cgit v1.2.3-70-g09d2