Plasma Engine  2.0
Loading...
Searching...
No Matches
GameAiActions.h
1#pragma once
2
3#include <AiPlugin/AiPluginDLL.h>
4#include <AiPlugin/UtilityAI/Framework/AiAction.h>
5#include <Core/World/GameObject.h>
6
7class PL_AIPLUGIN_DLL plAiActionWait : public plAiAction
8{
9 PL_DECLARE_AICMD(plAiActionWait);
10
11public:
14
15 virtual void Reset() override;
16 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
17 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
18 virtual void Cancel(plGameObject& owner) override;
19
20 plTime m_Duration;
21};
22
26
27class PL_AIPLUGIN_DLL plAiActionLerpRotation : public plAiAction
28{
29 PL_DECLARE_AICMD(plAiActionLerpRotation);
30
31public:
34
35 virtual void Reset() override;
36 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
37 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
38 virtual void Cancel(plGameObject& owner) override;
39
40 plVec3 m_vTurnAxis = plVec3::MakeAxisZ();
41 plAngle m_TurnAngle;
42 plAngle m_TurnAnglesPerSec;
43};
44
48
49class PL_AIPLUGIN_DLL plAiActionLerpPosition : public plAiAction
50{
51 PL_DECLARE_AICMD(plAiActionLerpPosition);
52
53public:
56
57 virtual void Reset() override;
58 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
59 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
60 virtual void Cancel(plGameObject& owner) override;
61
62 float m_fSpeed = 0.0f;
63 plVec3 m_vLocalSpaceSlide = plVec3::MakeZero();
64};
65
69
70class PL_AIPLUGIN_DLL plAiActionLerpRotationTowards : public plAiAction
71{
72 PL_DECLARE_AICMD(plAiActionLerpRotationTowards);
73
74public:
77
78 virtual void Reset() override;
79 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
80 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
81 virtual void Cancel(plGameObject& owner) override;
82
83 plVec3 m_vTargetPosition = plVec3::MakeZero();
84 plGameObjectHandle m_hTargetObject;
85 plAngle m_TargetReachedAngle = plAngle::MakeFromDegree(5);
86 plAngle m_TurnAnglesPerSec;
87};
88
92
93// class PL_AIPLUGIN_DLL plAiActionFollowPath : public plAiAction
94//{
95// PL_DECLARE_AICMD(plAiActionFollowPath);
96//
97// public:
98// plAiActionFollowPath();
99// ~plAiActionFollowPath();
100//
101// virtual void Reset() override;
102// virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
103// virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
104// virtual void Cancel(plGameObject& owner) override;
105//
106// plGameObjectHandle m_hPath;
107// float m_fSpeed = 0.0f;
108// };
109
113
114class PL_AIPLUGIN_DLL plAiActionBlackboardSetEntry : public plAiAction
115{
116 PL_DECLARE_AICMD(plAiActionBlackboardSetEntry);
117
118public:
121
122 virtual void Reset() override;
123 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
124 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
125 virtual void Cancel(plGameObject& owner) override;
126
127 bool m_bNoCancel = false;
128 plHashedString m_sEntryName;
129 plVariant m_Value;
130};
131
135
136class PL_AIPLUGIN_DLL plAiActionBlackboardWait : public plAiAction
137{
138 PL_DECLARE_AICMD(plAiActionBlackboardWait);
139
140public:
143
144 virtual void Reset() override;
145 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
146 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
147 virtual void Cancel(plGameObject& owner) override;
148
149 plTempHashedString m_sEntryName;
150 plVariant m_Value;
151 bool m_bEquals = true;
152};
153
157
158class PL_AIPLUGIN_DLL plAiActionBlackboardSetAndWait : public plAiAction
159{
160 PL_DECLARE_AICMD(plAiActionBlackboardSetAndWait);
161
162public:
165
166 virtual void Reset() override;
167 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
168 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
169 virtual void Cancel(plGameObject& owner) override;
170
171 plHashedString m_sEntryName;
172 plVariant m_SetValue;
173 plVariant m_WaitValue;
174 bool m_bEqualsWaitValue = true;
175};
176
180
181class PL_AIPLUGIN_DLL plAiActionCCMoveTo : public plAiAction
182{
183 PL_DECLARE_AICMD(plAiActionCCMoveTo);
184
185public:
188
189 virtual void Reset() override;
190 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
191 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
192 virtual void Cancel(plGameObject& owner) override;
193
194 plVec3 m_vTargetPosition = plVec3::MakeZero();
195 plGameObjectHandle m_hTargetObject;
196 float m_fSpeed = 0.0f;
197 float m_fReachedDistSQR = 1.0f;
198};
199
203
204class PL_AIPLUGIN_DLL plAiActionSpawn : public plAiAction
205{
206 PL_DECLARE_AICMD(plAiActionSpawn);
207
208public:
211
212 virtual void Reset() override;
213 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
214 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
215 virtual void Cancel(plGameObject& owner) override;
216
217 plTempHashedString m_sChildObjectName;
218};
219
223
224class PL_AIPLUGIN_DLL plAiActionQuip : public plAiAction
225{
226 PL_DECLARE_AICMD(plAiActionQuip);
227
228public:
231
232 virtual void Reset() override;
233 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
234 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
235 virtual void Cancel(plGameObject& owner) override;
236
237 plString m_sLogMsg;
238};
239
243
244class PL_AIPLUGIN_DLL plAiActionNavigateTo : public plAiAction
245{
246 PL_DECLARE_AICMD(plAiActionNavigateTo);
247
248public:
251
252 virtual void Reset() override;
253 virtual void GetDebugDesc(plStringBuilder& inout_sText) override;
254 virtual plAiActionResult Execute(plGameObject& owner, plTime tDiff, plLogInterface* pLog) override;
255 virtual void Cancel(plGameObject& owner) override;
256
257 plVec3* m_pTargetPosition = nullptr;
258 float m_fSpeed = 0.0f;
259 float m_fReachedDist = 1.0f;
260 bool m_bStarted = false;
261};
Definition GameAiActions.h:159
Definition GameAiActions.h:115
Definition GameAiActions.h:137
Definition GameAiActions.h:182
Definition AiActions.h:20
Definition GameAiActions.h:50
Definition GameAiActions.h:28
Definition GameAiActions.h:71
Definition GameAiActions.h:245
Definition GameAiActions.h:225
Definition GameAiActions.h:205
Definition GameAiActions.h:8
Float wrapper struct for a safe usage and conversions of angles.
Definition Angle.h:10
static constexpr plAngle MakeFromDegree(float fDegree)
Creates an instance of plAngle that was initialized from degree. (Performs a conversion)
Definition Angle_inl.h:33
This class represents an object inside the world.
Definition GameObject.h:32
This class is optimized to take nearly no memory (sizeof(void*)) and to allow very fast checks whethe...
Definition HashedString.h:25
Base class for all logging classes.
Definition Log.h:77
plStringBuilder is a class that is meant for creating and modifying strings.
Definition StringBuilder.h:35
A class to use together with plHashedString for quick comparisons with temporary strings that need no...
Definition HashedString.h:151
plVariant is a class that can store different types of variables, which is useful in situations where...
Definition Variant.h:44
static plVec3Template< float > MakeZero()
Definition Vec3.h:38
static plVec3Template< float > MakeAxisZ()
Definition Vec3.h:47
A handle to a game object.
Definition Declarations.h:76
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12