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_AISetPosition.c
Go to the documentation of this file.
1
sealed
class
BtVariableAISmartActionComponent
: BtVariable
2
{
3
SCR_AISmartActionComponent
m_Value;
4
}
5
6
class
SCR_AISetPosition :
AITaskScripted
7
{
8
protected
static
const
string
TARGET_INFO_PORT
=
"TargetInfo"
;
9
10
protected
static
const
string
ENTITY_PORT =
"EntitytIn"
;
11
protected
static
const
string
AGENT_PORT =
"AgentIn"
;
12
protected
static
const
string
TARGET_PORT =
"DestinationIn"
;
13
14
protected
ref
TStringArray
s_aVarsIn = {
15
ENTITY_PORT,
16
AGENT_PORT,
17
TARGET_PORT,
18
};
19
20
CharacterControllerComponent
m_charContr
;
21
22
//------------------------------------------------------------------------------------------------------------------------
23
override
TStringArray
GetVariablesIn
() {
return
s_aVarsIn; }
24
25
//------------------------------------------------------------------------------------------------------------------------
26
static
override
bool
VisibleInPalette
() {
return
true
; }
27
28
//------------------------------------------------------------------------------------------------------------------------
29
static
override
string
GetOnHoverDescription
() {
return
"Sets (teleports) entity to target, that can be vector, smartAction or vehicle compartment"
; };
30
31
//------------------------------------------------------------------------------------------------------------------------
32
override
ENodeResult
EOnTaskSimulate
(AIAgent owner,
float
dt)
33
{
34
IEntity
entityToTeleport;
35
vector
positionToTeleport;
36
37
if
(!
GetVariableIn
(ENTITY_PORT, entityToTeleport))
38
{
39
AIAgent agent;
40
41
if
(!
GetVariableIn
(AGENT_PORT, agent))
42
return
NodeError
(
this
, owner,
"Did not provided entity to teleport!"
);
43
entityToTeleport = agent.GetControlledEntity();
44
}
45
46
if
(!entityToTeleport)
47
return
NodeError
(
this
, owner,
"Entity is null!"
);
48
49
if
(
GetVariableType
(
true
,TARGET_PORT) ==
vector
)
50
{
51
GetVariableIn
(TARGET_PORT, positionToTeleport);
52
}
53
else
if
(
GetVariableType
(
true
,TARGET_PORT).
IsInherited
(Managed))
54
{
55
Managed obj;
56
GetVariableIn
(TARGET_PORT, obj);
57
58
SCR_AISmartActionComponent
SAComponent =
SCR_AISmartActionComponent
.Cast(obj);
59
BaseCompartmentSlot
compartmentSlot =
BaseCompartmentSlot
.Cast(obj);
60
if
(SAComponent)
61
{
62
vector
originOfObject;
63
64
originOfObject = SAComponent.GetOwner().GetOrigin();
65
positionToTeleport = originOfObject + SAComponent.GetActionOffset();
66
}
67
else
if
(compartmentSlot)
68
{
69
CompartmentAccessComponent CAComponent = CompartmentAccessComponent.Cast(entityToTeleport.
FindComponent
(CompartmentAccessComponent));
70
IEntity
vehicle;
71
72
GetVariableIn
(TARGET_PORT, compartmentSlot);
73
vehicle = compartmentSlot.GetOwner();
74
if
(!CAComponent || !vehicle)
75
return
NodeError
(
this
, owner,
"Enity to teleport does not have CompartmentAccessComponent or target is not an Entity!"
);
76
if
(!CAComponent.GetInVehicle(vehicle, compartmentSlot,
true
, -1,
ECloseDoorAfterActions
.INVALID,
false
))
77
{
78
#ifdef AI_DEBUG
79
Print
(
"Teleport to vehicle was not successful!"
,
LogLevel
.VERBOSE);
80
#endif
81
if
(!
m_charContr
)
82
{
83
m_charContr
= CharacterControllerComponent.Cast(entityToTeleport.
FindComponent
(CharacterControllerComponent));
84
if
(!
m_charContr
)
85
return
NodeError
(
this
, owner,
"Enity to teleport does not have CharacterControllerComponent!"
);
86
}
87
88
if
(
m_charContr
.IsSwimming())
89
return
ENodeResult
.FAIL;
90
else
if
(
m_charContr
.IsFalling())
91
return
ENodeResult
.RUNNING;
92
else
93
return
ENodeResult
.FAIL;
94
}
95
return
ENodeResult
.SUCCESS;
96
}
97
}
98
99
BaseGameEntity gEntity = BaseGameEntity.Cast(entityToTeleport);
100
vector
mat[4];
101
Math3D
.MatrixIdentity4(mat);
102
mat[3] = positionToTeleport;
103
104
gEntity.Teleport(mat);
// teleporting entity
105
return
ENodeResult
.SUCCESS;
106
}
107
108
//------------------------------------------------------------------------------------------------------------------------
109
static
override
bool
CanReturnRunning
()
110
{
111
return
true
;
112
}
113
}
NodeError
ENodeResult NodeError(Node node, AIAgent owner, string msg)
Error call to be used in scripted BT nodes.
Definition
NodeError.c:3
EOnTaskSimulate
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
Definition
SCR_AIFindFirePositionBehavior.c:80
m_charContr
CharacterControllerComponent m_charContr
Definition
SCR_AISetPosition.c:20
TARGET_INFO_PORT
BtVariableAISmartActionComponent TARGET_INFO_PORT
IsInherited
proto native external bool IsInherited(typename type)
AITaskScripted
Definition
AITaskScripted.c:13
BaseCompartmentSlot
Definition
BaseCompartmentSlot.c:2
BtVariableAISmartActionComponent
Definition
SCR_AISetPosition.c:2
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
Math3D
Definition
Math3D.c:13
Node::GetVariablesIn
TStringArray GetVariablesIn()
Definition
Node.c:27
Node::GetVariableIn
proto bool GetVariableIn(string name, out void val)
Node::VisibleInPalette
bool VisibleInPalette()
Node::GetVariableType
proto external GetVariableType(bool inputPort, string name)
Node::CanReturnRunning
bool CanReturnRunning()
Node::GetOnHoverDescription
string GetOnHoverDescription()
Definition
Node.c:30
SCR_AISmartActionComponent
Definition
SCR_AISmartActionComponent.c:10
vector
Definition
vector.c:13
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
ECloseDoorAfterActions
ECloseDoorAfterActions
Definition
ECloseDoorAfterActions.c:13
scripts
Game
AI
ScriptedNodes
Utils
SCR_AISetPosition.c
Generated by
1.17.0