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_AICheckEntityStance.c
Go to the documentation of this file.
1
class
SCR_AICheckEntityStance
:
AITaskScripted
2
{
3
static
const
string
PORT_ENTITY =
"Entity"
;
4
static
const
string
PORT_STANCE =
"Stance"
;
5
6
[
Attribute
(
"0"
,
UIWidgets
.ComboBox, enums: ParamEnumArray.FromEnum(
ECharacterStance
))]
7
protected
ECharacterStance
m_eStanceDefault
;
8
9
[
Attribute
(
"10"
)]
10
protected
float
m_fMaxDistance
;
11
12
protected
ECharacterStance
m_eStance
;
13
protected
ECharacterStance
m_eStanceLimit
=
ECharacterStance
.STAND;
14
protected
bool
m_bIsAborted
;
15
protected
AIGroup
m_Group
;
16
protected
SCR_AIGroupInfoComponent
m_GroupInfo
;
17
18
protected
float
m_fNextUpdate_ms
;
19
[
Attribute
(
"500"
)]
20
protected
float
m_fUpdateInterval_ms
;
21
22
override
void
OnInit
(AIAgent owner)
23
{
24
m_bIsAborted
=
false
;
25
m_Group
= AIGroup.Cast(owner);
26
if
(!
m_Group
)
27
return
SCR_AgentMustBeAIGroup
(
this
, owner);
28
m_GroupInfo
= SCR_AIGroupInfoComponent.Cast(
m_Group
.FindComponent(SCR_AIGroupInfoComponent));
29
if
(!
m_GroupInfo
)
30
return
;
31
m_eStanceLimit
=
m_GroupInfo
.GetStanceLimit();
32
m_eStance
=
m_eStanceDefault
;
33
}
34
35
//------------------------------------------------------------------------------------------------
36
override
ENodeResult
EOnTaskSimulate
(AIAgent owner,
float
dt)
37
{
38
float
currentTime_ms =
GetGame
().GetWorld().GetWorldTime();
39
if
(currentTime_ms <
m_fNextUpdate_ms
)
40
return
ENodeResult
.RUNNING;
41
m_fNextUpdate_ms
= currentTime_ms +
m_fUpdateInterval_ms
;
42
43
if
(!
m_Group
|| !
m_GroupInfo
)
44
return
ENodeResult
.FAIL;
45
46
IEntity
entityToCopy;
47
if
(!
GetVariableIn
(PORT_ENTITY, entityToCopy))
48
return
NodeError
(
this
, owner,
"No entity provided!"
);
49
50
if
(!entityToCopy)
51
return
ENodeResult
.FAIL;
52
53
// keep running if agents are too far from entityToCopy
54
vector
entityPos = entityToCopy.
GetOrigin
();
55
vector
agentPos = owner.GetOrigin();
56
float
distSq =
vector
.DistanceSq(entityPos, agentPos);
57
58
if
(distSq >= (
m_fMaxDistance
*
m_fMaxDistance
))
59
return
ENodeResult
.RUNNING;
60
61
// get stance of entityToCopy
62
CharacterControllerComponent charCont = CharacterControllerComponent.Cast(entityToCopy.
FindComponent
(CharacterControllerComponent));
63
if
(!charCont)
64
return
NodeError
(
this
, owner,
"No character controller?!"
);
65
66
ECharacterStance
stance = charCont.GetStance();
67
if
(stance ==
m_eStance
)
68
return
ENodeResult
.RUNNING;
69
70
m_GroupInfo
.SetStanceLimit(stance);
71
m_eStance
= stance;
72
SetVariableOut
(PORT_STANCE, stance);
73
return
ENodeResult
.SUCCESS;
74
}
75
76
//------------------------------------------------------------------------------------------------
77
override
void
OnAbort
(AIAgent owner,
Node
nodeCausingAbort)
78
{
79
if
(
m_bIsAborted
)
80
return
;
81
if
(
m_GroupInfo
)
82
m_GroupInfo
.SetStanceLimit(
m_eStanceLimit
);
83
m_bIsAborted
=
true
;
84
}
85
86
//------------------------------------------------------------------------------------------------
87
static
override
bool
VisibleInPalette
() {
return
true
;}
88
89
//------------------------------------------------------------------------------------------------
90
protected
static
ref
TStringArray
s_aVarsOut
= {
91
PORT_STANCE
92
};
93
override
TStringArray
GetVariablesOut
()
94
{
95
return
s_aVarsOut
;
96
}
97
98
//------------------------------------------------------------------------------------------------
99
protected
static
ref
TStringArray
s_aVarsIn
= {
100
PORT_ENTITY
101
};
102
override
TStringArray
GetVariablesIn
()
103
{
104
return
s_aVarsIn
;
105
}
106
107
//------------------------------------------------------------------------------------------------
108
static
override
string
GetOnHoverDescription
()
109
{
110
return
"SCR_AICheckEntityStance: checks current entity stance. Returns running if stance doesn't change or leading entity is far away."
;
111
}
112
113
static
override
bool
CanReturnRunning
()
114
{
115
return
true
;
116
}
117
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
NodeError
ENodeResult NodeError(Node node, AIAgent owner, string msg)
Error call to be used in scripted BT nodes.
Definition
NodeError.c:3
SCR_AgentMustBeAIGroup
void SCR_AgentMustBeAIGroup(Node node, AIAgent owner)
Definition
NodeError.c:14
AITaskScripted
Definition
AITaskScripted.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetOrigin
proto external vector GetOrigin()
Node
Definition
Node.c:13
Node::SetVariableOut
proto void SetVariableOut(string name, void val)
Node::GetVariableIn
proto bool GetVariableIn(string name, out void val)
SCR_AICheckEntityStance
Definition
SCR_AICheckEntityStance.c:2
SCR_AICheckEntityStance::m_fUpdateInterval_ms
float m_fUpdateInterval_ms
Definition
SCR_AICheckEntityStance.c:20
SCR_AICheckEntityStance::GetOnHoverDescription
static override string GetOnHoverDescription()
Definition
SCR_AICheckEntityStance.c:108
SCR_AICheckEntityStance::m_eStanceDefault
ECharacterStance m_eStanceDefault
Definition
SCR_AICheckEntityStance.c:7
SCR_AICheckEntityStance::m_bIsAborted
bool m_bIsAborted
Definition
SCR_AICheckEntityStance.c:14
SCR_AICheckEntityStance::CanReturnRunning
static override bool CanReturnRunning()
Definition
SCR_AICheckEntityStance.c:113
SCR_AICheckEntityStance::s_aVarsOut
static ref TStringArray s_aVarsOut
Definition
SCR_AICheckEntityStance.c:90
SCR_AICheckEntityStance::m_fMaxDistance
float m_fMaxDistance
Definition
SCR_AICheckEntityStance.c:10
SCR_AICheckEntityStance::GetVariablesIn
override TStringArray GetVariablesIn()
Definition
SCR_AICheckEntityStance.c:102
SCR_AICheckEntityStance::EOnTaskSimulate
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
Definition
SCR_AICheckEntityStance.c:36
SCR_AICheckEntityStance::m_eStanceLimit
ECharacterStance m_eStanceLimit
Definition
SCR_AICheckEntityStance.c:13
SCR_AICheckEntityStance::m_eStance
ECharacterStance m_eStance
Definition
SCR_AICheckEntityStance.c:12
SCR_AICheckEntityStance::m_fNextUpdate_ms
float m_fNextUpdate_ms
Definition
SCR_AICheckEntityStance.c:18
SCR_AICheckEntityStance::OnInit
override void OnInit(AIAgent owner)
Definition
SCR_AICheckEntityStance.c:22
SCR_AICheckEntityStance::m_GroupInfo
SCR_AIGroupInfoComponent m_GroupInfo
Definition
SCR_AICheckEntityStance.c:16
SCR_AICheckEntityStance::GetVariablesOut
override TStringArray GetVariablesOut()
Definition
SCR_AICheckEntityStance.c:93
SCR_AICheckEntityStance::OnAbort
override void OnAbort(AIAgent owner, Node nodeCausingAbort)
Definition
SCR_AICheckEntityStance.c:77
SCR_AICheckEntityStance::VisibleInPalette
static override bool VisibleInPalette()
Definition
SCR_AICheckEntityStance.c:87
SCR_AICheckEntityStance::m_Group
AIGroup m_Group
Definition
SCR_AICheckEntityStance.c:15
SCR_AICheckEntityStance::s_aVarsIn
static ref TStringArray s_aVarsIn
Definition
SCR_AICheckEntityStance.c:99
UIWidgets
Definition
attributes.c:40
vector
Definition
vector.c:13
ENodeResult
ENodeResult
Definition
ENodeResult.c:13
ECharacterStance
ECharacterStance
Definition
ECharacterStance.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
TStringArray
array< string > TStringArray
Definition
Types.c:385
scripts
Game
AI
ScriptedNodes
Utils
SCR_AICheckEntityStance.c
Generated by
1.17.0