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_AIGetCompartmentEntityInComposition.c
Go to the documentation of this file.
1
class
SCR_AIGetCompartmentEntityInComposition
:
AITaskScripted
2
{
3
static
const
string
PORT_VEHICLE =
"Vehicle"
;
4
static
const
string
PORT_BOARDING_PARAMS =
"BoardingParams"
;
5
static
const
string
PORT_COMPARTMENT_ENT =
"CompartmentEnt"
;
6
7
//----------------------------------------------------------------------------------------------------------------------------------------
8
override
ENodeResult
EOnTaskSimulate(AIAgent owner,
float
dt)
9
{
10
IEntity
compositionEntity;
11
SCR_AIBoardingParameters
boardingParams;
12
IEntity
compartmentEntity;
13
14
array<Managed> compartmentManagers = {};
15
array<BaseCompartmentSlot> compartments = {};
16
17
GetVariableIn
(PORT_VEHICLE, compositionEntity);
18
if
(!
GetVariableIn
(PORT_BOARDING_PARAMS, boardingParams) || !boardingParams)
19
boardingParams =
new
SCR_AIBoardingParameters
;
20
21
if
(!compositionEntity)
22
return
ENodeResult
.FAIL;
23
24
FindComponentsInAllChildren
(
BaseCompartmentManagerComponent
, compositionEntity,
false
, 0, 6, compartmentManagers);
25
26
foreach
(Managed compartmentMan : compartmentManagers)
27
{
28
BaseCompartmentManagerComponent
compartMan =
BaseCompartmentManagerComponent
.Cast(compartmentMan);
29
if
(!compartMan)
30
continue
;
31
32
int
numOfComp = compartMan.GetCompartments(compartments);
33
34
foreach
(
BaseCompartmentSlot
comp : compartments)
35
{
36
if
(
PilotCompartmentSlot
.Cast(comp) && boardingParams.m_bIsDriverAllowed)
37
{
38
compartmentEntity = compartMan.GetOwner();
39
break
;
40
}
41
else
if
(
TurretCompartmentSlot
.Cast(comp) && boardingParams.m_bIsGunnerAllowed)
42
{
43
compartmentEntity = compartMan.GetOwner();
44
break
;
45
}
46
else
if
(
CargoCompartmentSlot
.Cast(comp) && boardingParams.m_bIsCargoAllowed)
47
{
48
compartmentEntity = compartMan.GetOwner();
49
break
;
50
}
51
else
52
continue
;
53
}
54
}
55
56
if
(compartmentEntity)
57
{
58
SetVariableOut
(PORT_COMPARTMENT_ENT, compartmentEntity);
59
return
ENodeResult
.SUCCESS;
60
}
61
if
(!boardingParams.m_bIsGunnerAllowed && !boardingParams.m_bIsCargoAllowed && !boardingParams.m_bIsDriverAllowed)
62
return
ENodeResult
.FAIL;
63
64
return
NodeError
(
this
, owner,
"No entity with CompartmentManagerComponent found!"
);
65
}
66
67
//----------------------------------------------------------------------------------------------------------------------------------------
68
protected
static
ref
TStringArray
s_aVarsIn
= {
69
PORT_VEHICLE, PORT_BOARDING_PARAMS
70
};
71
72
//----------------------------------------------------------------------------------------------------------------------------------------
73
override
TStringArray
GetVariablesIn
()
74
{
75
return
s_aVarsIn
;
76
}
77
78
//----------------------------------------------------------------------------------------------------------------------------------------
79
protected
static
ref
TStringArray
s_aVarsOut
= {
80
PORT_COMPARTMENT_ENT
81
};
82
83
//----------------------------------------------------------------------------------------------------------------------------------------
84
override
TStringArray
GetVariablesOut
()
85
{
86
return
s_aVarsOut
;
87
}
88
89
//----------------------------------------------------------------------------------------------------------------------------------------
90
static
override
bool
VisibleInPalette
()
91
{
92
return
true
;
93
}
94
95
//----------------------------------------------------------------------------------------------------------------------------------------
96
static
override
string
GetOnHoverDescription
()
97
{
98
return
"GetCompartmentEntInComposition: finds first entity in a composition that contains compartment manager component"
;
99
}
100
};
NodeError
ENodeResult NodeError(Node node, AIAgent owner, string msg)
Error call to be used in scripted BT nodes.
Definition
NodeError.c:3
FindComponentsInAllChildren
class SCR_AIStanceHandling FindComponentsInAllChildren(typename typeName, IEntity parent, bool findFirst, int depth, int maxDepth, notnull inout array< Managed > outComponents)
Definition
SCR_AIUtils.c:122
AITaskScripted
Definition
AITaskScripted.c:13
BaseCompartmentManagerComponent
Definition
BaseCompartmentManagerComponent.c:13
BaseCompartmentSlot
Definition
BaseCompartmentSlot.c:2
CargoCompartmentSlot
Definition
CargoCompartmentSlot.c:13
IEntity
Definition
IEntity.c:13
Node::SetVariableOut
proto void SetVariableOut(string name, void val)
Node::GetVariableIn
proto bool GetVariableIn(string name, out void val)
PilotCompartmentSlot
Definition
PilotCompartmentSlot.c:13
SCR_AIBoardingParameters
Definition
SCR_BoardingWaypoint.c:6
SCR_AIGetCompartmentEntityInComposition
Definition
SCR_AIGetCompartmentEntityInComposition.c:2
SCR_AIGetCompartmentEntityInComposition::VisibleInPalette
static override bool VisibleInPalette()
Definition
SCR_AIGetCompartmentEntityInComposition.c:90
SCR_AIGetCompartmentEntityInComposition::GetVariablesIn
override TStringArray GetVariablesIn()
Definition
SCR_AIGetCompartmentEntityInComposition.c:73
SCR_AIGetCompartmentEntityInComposition::s_aVarsIn
static ref TStringArray s_aVarsIn
Definition
SCR_AIGetCompartmentEntityInComposition.c:68
SCR_AIGetCompartmentEntityInComposition::GetVariablesOut
override TStringArray GetVariablesOut()
Definition
SCR_AIGetCompartmentEntityInComposition.c:84
SCR_AIGetCompartmentEntityInComposition::GetOnHoverDescription
static override string GetOnHoverDescription()
Definition
SCR_AIGetCompartmentEntityInComposition.c:96
SCR_AIGetCompartmentEntityInComposition::s_aVarsOut
static ref TStringArray s_aVarsOut
Definition
SCR_AIGetCompartmentEntityInComposition.c:79
TurretCompartmentSlot
Definition
TurretCompartmentSlot.c:13
ENodeResult
ENodeResult
Definition
ENodeResult.c:13
TStringArray
array< string > TStringArray
Definition
Types.c:385
scripts
Game
AI
ScriptedNodes
Vehicles
SCR_AIGetCompartmentEntityInComposition.c
Generated by
1.17.0