This commit is contained in:
Bram verhulst
2025-06-02 21:29:29 +02:00
parent 1104b12ba8
commit f9a11385fe
17 changed files with 3338 additions and 274 deletions

View File

@@ -5,6 +5,7 @@
#include "Blackboard.h"
#include "Thinker.h"
#include "BigThink.h"
#include "WorldExplorationGrid.h"
//Called only once, during initialization
void SurvivalAgentPlugin::Initialize(IBaseInterface* pInterface, PluginInfo& info)
@@ -35,6 +36,16 @@ void SurvivalAgentPlugin::Initialize(IBaseInterface* pInterface, PluginInfo& inf
BigThink::PickUpHandling(),
BigThink::HouseHandling()
}));
Thinker* thinkerPtr{};
blackboardPtr->GetData("Brain", thinkerPtr);
const WorldInfo& worldInfo = m_pInterface->World_GetInfo();
thinkerPtr->m_ExplorationGrid.SetWorldInfo(worldInfo);
m_pExplorationGrid = &m_Thinker->m_ExplorationGrid;
m_pExplorationGrid->SetInterfacePtr(m_pInterface);
}
@@ -48,8 +59,9 @@ Blackboard* SurvivalAgentPlugin::CreateBlackboard() {
blackboardPtr->AddData("Steering", SteeringPlugin_Output{});
blackboardPtr->AddData("Target", m_Target);
blackboardPtr->AddData("Spin", false);
blackboardPtr->AddData("FailSafe", std::chrono::steady_clock::time_point{});
blackboardPtr->AddData("MaxFailSafe", 2.f);
blackboardPtr->AddData("MaxFailSafe", 5.f);
blackboardPtr->AddData("FailSafeDoOnce", false);
blackboardPtr->AddData("TargetZombie", EnemyInfo{});
@@ -69,10 +81,17 @@ Blackboard* SurvivalAgentPlugin::CreateBlackboard() {
blackboardPtr->AddData("TimerBeforeLeavingDoOnce", false);
blackboardPtr->AddData("MaxTimeBeforeLeaving", 3.f);
blackboardPtr->AddData("MaxTimeNoHouse", 5.f);
blackboardPtr->AddData("MaxTimeNoHouse", 30.f);
blackboardPtr->AddData("TimerNoHouse", std::chrono::steady_clock::time_point{});
blackboardPtr->AddData("TimerNoHouseDoOnce", false);
blackboardPtr->AddData("TimerStuckTimer", std::chrono::steady_clock::time_point{});
blackboardPtr->AddData("MaxStuckTimer", 5.f);
blackboardPtr->AddData("TimerStuckTimerDoOnce", false);
blackboardPtr->AddData("LastPosition", m_pInterface->Agent_GetInfo().Position);
blackboardPtr->AddData("LastMovementTime", std::chrono::steady_clock::now());
return blackboardPtr;
}
@@ -193,6 +212,8 @@ SteeringPlugin_Output SurvivalAgentPlugin::UpdateSteering(float dt)
UpdateBlackboard(steering);
m_Thinker->m_ExplorationGrid.Update(m_pInterface->Agent_GetInfo(), m_pInterface->GetHousesInFOV());
m_BehaviourTree->Update();
m_BehaviourTree->GetBlackboard()->GetData("Steering", steering);
@@ -200,7 +221,7 @@ SteeringPlugin_Output SurvivalAgentPlugin::UpdateSteering(float dt)
if (m_pInterface->Agent_GetInfo().Stamina >= 10 || m_Running) {
m_Running = true;
steering.RunMode = true;
steering.RunMode = false;
}
if (m_pInterface->Agent_GetInfo().Stamina <= 0.1f) {
@@ -222,6 +243,8 @@ SteeringPlugin_Output SurvivalAgentPlugin::UpdateSteering(float dt)
}
}
std::cout << m_pInterface->Agent_GetInfo().Position.x << " " << m_pInterface->Agent_GetInfo().Position.y << std::endl;
return steering;
@@ -239,6 +262,8 @@ void SurvivalAgentPlugin::Render(float dt) const
m_pInterface->Draw_Circle(m_pInterface->Agent_GetInfo().Position, 15.f, { 0.f, 1.f, 1.f });
m_pInterface->Draw_Circle(m_pInterface->Agent_GetInfo().Position, 8.f, { 0.f, 1.f, 1.f });
m_pExplorationGrid->RenderDebug();
}