Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_AIDecideBehavior.c
Go to the documentation of this file.
1
class
SCR_AIDecideBehavior
:
AITaskScripted
2
{
3
// Update intervals for different LOD values
4
static
const
int
LOD_MAX = 10;
5
static
const
int
LOD_COUNT = LOD_MAX + 1;
6
static
float
s_aUpdateIntervals[LOD_COUNT] = {
7
0.55,
// LOD 0
8
1.3,
// 1
9
2.0,
10
2.0,
// 3
11
2.0,
12
2.0,
// 5
13
2.0,
14
2.0,
// 7
15
2.0,
16
2.0,
// 9
17
2.0
18
};
19
20
// Inputs
21
protected
static
string
PORT_UNKNOWN_TARGET
=
"UnknownTarget"
;
22
23
// Outputs
24
protected
static
string
PORT_BEHAVIOR_TREE
=
"BehaviorTree"
;
25
protected
static
string
PORT_UPDATE_BEHAVIOR
=
"UpdateBehavior"
;
26
protected
static
string
PORT_USE_COMBAT_MOVE
=
"UseCombatMove"
;
27
protected
static
string
PORT_UPDATE_INTERVAL
=
"UpdateInterval"
;
28
29
protected
SCR_AIBehaviorBase
m_PreviousBehavior
;
30
protected
SCR_AIBehaviorBase
m_CurrentBehavior
;
31
protected
SCR_AIUtilityComponent
m_UtilityComponent
;
32
33
protected
float
m_fRandomDelay_s
;
// Random delay added to update interval to distribute updated over time more evenly
34
35
//------------------------------------------------------------------------------------------------
36
override
void
OnInit
(AIAgent owner)
37
{
38
m_UtilityComponent
= SCR_AIUtilityComponent.Cast(owner.FindComponent(SCR_AIUtilityComponent));
39
if
(!
m_UtilityComponent
)
40
{
41
NodeError
(
this
, owner,
"Can't find utility component."
);
42
}
43
44
m_fRandomDelay_s
=
Math
.RandomFloat(0.0, s_aUpdateIntervals[0]);
45
}
46
47
//------------------------------------------------------------------------------------------------
48
override
ENodeResult
EOnTaskSimulate
(AIAgent owner,
float
dt)
49
{
50
if
(!
m_UtilityComponent
)
51
return
ENodeResult
.FAIL;
52
53
BaseTarget
unknownTarget;
54
GetVariableIn
(
PORT_UNKNOWN_TARGET
, unknownTarget);
55
56
m_CurrentBehavior
=
m_UtilityComponent
.EvaluateBehavior(unknownTarget);
57
if
(!
m_CurrentBehavior
||
m_CurrentBehavior
.m_sBehaviorTree ==
ResourceName
.Empty)
58
{
59
Print
(
"AI: Missing behavior tree in "
+
m_CurrentBehavior
.ToString(),
LogLevel
.WARNING);
60
return
ENodeResult
.FAIL;
61
}
62
63
if
(
m_PreviousBehavior
!=
m_CurrentBehavior
)
64
{
65
SetVariableOut
(
PORT_BEHAVIOR_TREE
,
m_CurrentBehavior
.m_sBehaviorTree);
66
SetVariableOut
(
PORT_UPDATE_BEHAVIOR
,
true
);
67
}
68
69
// m_bUseCombatMove can change at behavior run time
70
SetVariableOut
(
PORT_USE_COMBAT_MOVE
,
m_CurrentBehavior
.m_bUseCombatMove);
71
72
// Resolve desired update interval
73
int
lod =
Math
.ClampInt(owner.GetLOD(), 0, LOD_MAX);
74
float
updateInterval = s_aUpdateIntervals[lod] +
m_fRandomDelay_s
;
75
SetVariableOut
(
PORT_UPDATE_INTERVAL
, updateInterval);
76
m_fRandomDelay_s
= 0;
77
78
m_PreviousBehavior
=
m_CurrentBehavior
;
79
return
ENodeResult
.SUCCESS;
80
}
81
82
//------------------------------------------------------------------------------------------------
83
protected
static
ref
TStringArray
s_aVarsOut
= {
84
PORT_BEHAVIOR_TREE
,
85
PORT_UPDATE_BEHAVIOR
,
86
PORT_USE_COMBAT_MOVE
,
87
PORT_UPDATE_INTERVAL
88
};
89
override
TStringArray
GetVariablesOut
()
90
{
91
return
s_aVarsOut
;
92
}
93
94
//------------------------------------------------------------------------------------------------
95
protected
static
ref
TStringArray
s_aVarsIn
= {
96
PORT_UNKNOWN_TARGET
97
};
98
override
TStringArray
GetVariablesIn
()
99
{
100
return
s_aVarsIn
;
101
}
102
103
//------------------------------------------------------------------------------------------------
104
static
override
bool
VisibleInPalette
() {
return
true
;}
105
};
NodeError
ENodeResult NodeError(Node node, AIAgent owner, string msg)
Error call to be used in scripted BT nodes.
Definition
NodeError.c:3
SCR_AIBehaviorBase
void SCR_AIBehaviorBase(SCR_AIUtilityComponent utility, SCR_AIActivityBase groupActivity)
Definition
SCR_AIBehavior.c:23
AITaskScripted
Definition
AITaskScripted.c:13
BaseTarget
Definition
BaseTarget.c:13
Math
Definition
Math.c:13
Node::SetVariableOut
proto void SetVariableOut(string name, void val)
Node::GetVariableIn
proto bool GetVariableIn(string name, out void val)
ResourceName
Definition
ResourceName.c:13
SCR_AIDecideBehavior
Definition
SCR_AIDecideBehavior.c:2
SCR_AIDecideBehavior::PORT_BEHAVIOR_TREE
static string PORT_BEHAVIOR_TREE
Definition
SCR_AIDecideBehavior.c:24
SCR_AIDecideBehavior::PORT_UNKNOWN_TARGET
static string PORT_UNKNOWN_TARGET
Definition
SCR_AIDecideBehavior.c:21
SCR_AIDecideBehavior::PORT_USE_COMBAT_MOVE
static string PORT_USE_COMBAT_MOVE
Definition
SCR_AIDecideBehavior.c:26
SCR_AIDecideBehavior::PORT_UPDATE_INTERVAL
static string PORT_UPDATE_INTERVAL
Definition
SCR_AIDecideBehavior.c:27
SCR_AIDecideBehavior::s_aVarsOut
static ref TStringArray s_aVarsOut
Definition
SCR_AIDecideBehavior.c:83
SCR_AIDecideBehavior::m_UtilityComponent
SCR_AIUtilityComponent m_UtilityComponent
Definition
SCR_AIDecideBehavior.c:31
SCR_AIDecideBehavior::VisibleInPalette
static override bool VisibleInPalette()
Definition
SCR_AIDecideBehavior.c:104
SCR_AIDecideBehavior::GetVariablesIn
override TStringArray GetVariablesIn()
Definition
SCR_AIDecideBehavior.c:98
SCR_AIDecideBehavior::GetVariablesOut
override TStringArray GetVariablesOut()
Definition
SCR_AIDecideBehavior.c:89
SCR_AIDecideBehavior::EOnTaskSimulate
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
Definition
SCR_AIDecideBehavior.c:48
SCR_AIDecideBehavior::m_fRandomDelay_s
float m_fRandomDelay_s
Definition
SCR_AIDecideBehavior.c:33
SCR_AIDecideBehavior::m_CurrentBehavior
SCR_AIBehaviorBase m_CurrentBehavior
Definition
SCR_AIDecideBehavior.c:30
SCR_AIDecideBehavior::m_PreviousBehavior
SCR_AIBehaviorBase m_PreviousBehavior
Definition
SCR_AIDecideBehavior.c:29
SCR_AIDecideBehavior::s_aVarsIn
static ref TStringArray s_aVarsIn
Definition
SCR_AIDecideBehavior.c:95
SCR_AIDecideBehavior::OnInit
override void OnInit(AIAgent owner)
Definition
SCR_AIDecideBehavior.c:36
SCR_AIDecideBehavior::PORT_UPDATE_BEHAVIOR
static string PORT_UPDATE_BEHAVIOR
Definition
SCR_AIDecideBehavior.c:25
ENodeResult
ENodeResult
Definition
ENodeResult.c:13
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
TStringArray
array< string > TStringArray
Definition
Types.c:385
scripts
Game
AI
ScriptedNodes
Soldier
SCR_AIDecideBehavior.c
Generated by
1.17.0