Plasma Engine  2.0
Loading...
Searching...
No Matches
AiBehaviorManager.h
1#pragma once
2
3#include <AiPlugin/AiPluginDLL.h>
4#include <AiPlugin/UtilityAI/Framework/AiBehavior.h>
5#include <Foundation/Containers/HybridArray.h>
6#include <Foundation/Types/UniquePtr.h>
7
8class plGameObject;
10
11class PL_AIPLUGIN_DLL plAiBehaviorManager
12{
13 PL_DISALLOW_COPY_AND_ASSIGN(plAiBehaviorManager);
14
15public:
18
19 void DetermineAvailableBehaviors(plTime currentTime, float fActiveBehaviorScore);
20
21 void AddBehavior(plUniquePtr<plAiBehavior>&& pBehavior);
22
23 void FlagNeededPerceptions(plAiPerceptionManager& ref_PerceptionManager);
24
25 plAiBehaviorCandidate DetermineBehaviorCandidate(plGameObject& owner, const plAiPerceptionManager& perceptionManager);
26
27 void SetActiveBehavior(plGameObject& owner, plAiBehavior* pBehavior, const plAiPerception* pPerception, plAiActionQueue& inout_ActionQueue);
28 void KeepActiveBehavior(plGameObject& owner, const plAiPerception* pPerception, plAiActionQueue& inout_ActionQueue);
29
30 plAiBehavior::ContinuationState ContinueActiveBehavior(plGameObject& owner, plAiActionQueue& inout_ActionQueue);
31
32 bool HasActiveBehavior() const { return m_pActiveBehavior != nullptr; }
33
34 plAiBehavior* GetActiveBehavior() const { return m_pActiveBehavior; }
35
36private:
37 struct BehaviorInfo
38 {
39 // bool m_bActive = true;
40 plTime m_CooldownUntil;
41 plUInt32 m_uiNeededInUpdate = 0;
42
43 plUniquePtr<plAiBehavior> m_pBehavior;
44 };
45
46 plAiBehavior* m_pActiveBehavior = nullptr;
48
49 plUInt32 m_uiUpdateCount = 1;
50 plTime m_CurrentTime;
51};
Definition AiActionQueue.h:9
Definition AiBehavior.h:50
Definition AiBehaviorManager.h:12
Definition AiPerception.h:7
Definition AiPerceptionManager.h:12
This class represents an object inside the world.
Definition GameObject.h:32
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
A Unique ptr manages an object and destroys that object when it goes out of scope....
Definition UniquePtr.h:10
Definition AiBehavior.h:56
Definition AiBehavior.h:43
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12