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_AIFindArsenalWithPrefab.c
Go to the documentation of this file.
1
class
SCR_AIFindArsenalWithPrefab
:
AITaskScripted
2
{
3
// Inputs
4
protected
static
const
string
PORT_POS
=
"Pos"
;
5
protected
static
const
string
PORT_PREFAB_RESOURCE_NAME
=
"PrefabResourceName"
;
6
7
// Outputs
8
protected
static
const
string
PORT_ARSENAL_ENTITY
=
"ArsenalEntity"
;
9
10
[
Attribute
(
"0"
,
UIWidgets
.EditBox)]
11
protected
float
m_fSearchRadius
;
12
13
// Used for query
14
protected
ref array<IEntity>
m_aQueryFoundEntities
= {};
15
protected
ResourceName
m_sQueryResourceName
;
16
17
//------------------------------------------------------------
18
override
ENodeResult
EOnTaskSimulate
(AIAgent owner,
float
dt)
19
{
20
vector
searchPos;
21
ResourceName
prefabResourceName;
22
23
GetVariableIn
(
PORT_POS
, searchPos);
24
GetVariableIn
(
PORT_PREFAB_RESOURCE_NAME
, prefabResourceName);
25
26
if
(searchPos ==
vector
.Zero || prefabResourceName.IsEmpty())
27
return
ENodeResult
.FAIL;
28
29
m_aQueryFoundEntities
.Clear();
30
m_sQueryResourceName
= prefabResourceName;
31
GetGame
().GetWorld().QueryEntitiesBySphere(searchPos,
m_fSearchRadius
,
QueryCallback
);
32
33
// Select closest one
34
IEntity
nearestEntity = null;
35
float
smallestDistSq =
float
.MAX;
36
37
foreach
(
IEntity
e :
m_aQueryFoundEntities
)
38
{
39
float
distSq =
vector
.DistanceSq(e.GetOrigin(), searchPos);
40
if
(distSq < smallestDistSq)
41
{
42
nearestEntity = e;
43
smallestDistSq = distSq;
44
}
45
}
46
47
if
(!nearestEntity)
48
return
ENodeResult
.FAIL;
49
50
SetVariableOut
(
PORT_ARSENAL_ENTITY
, nearestEntity);
51
return
ENodeResult
.SUCCESS;
52
}
53
54
bool
QueryCallback
(
IEntity
e)
55
{
56
SCR_ArsenalInventoryStorageManagerComponent comp = SCR_ArsenalInventoryStorageManagerComponent.Cast(e.
FindComponent
(SCR_ArsenalInventoryStorageManagerComponent));
57
58
if
(comp && comp.IsPrefabInArsenalStorage(
m_sQueryResourceName
))
59
m_aQueryFoundEntities
.Insert(e);
60
61
return
true
;
62
}
63
64
//------------------------------------------------------------
65
override
static
bool
VisibleInPalette
() {
return
true
; }
66
67
override
static
string
GetOnHoverDescription
() {
return
"Finds nearest arsenal which has a given prefab in it."
; }
68
69
protected
static
ref
TStringArray
s_aVarsIn
= {
PORT_POS
,
PORT_PREFAB_RESOURCE_NAME
};
70
override
TStringArray
GetVariablesIn
() {
return
s_aVarsIn
; }
71
72
protected
static
ref
TStringArray
s_aVarsOut
= {
PORT_ARSENAL_ENTITY
};
73
override
TStringArray
GetVariablesOut
() {
return
s_aVarsOut
; }
74
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
AITaskScripted
Definition
AITaskScripted.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
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_AIFindArsenalWithPrefab
Definition
SCR_AIFindArsenalWithPrefab.c:2
SCR_AIFindArsenalWithPrefab::GetOnHoverDescription
static override string GetOnHoverDescription()
Definition
SCR_AIFindArsenalWithPrefab.c:67
SCR_AIFindArsenalWithPrefab::EOnTaskSimulate
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
Definition
SCR_AIFindArsenalWithPrefab.c:18
SCR_AIFindArsenalWithPrefab::GetVariablesIn
override TStringArray GetVariablesIn()
Definition
SCR_AIFindArsenalWithPrefab.c:70
SCR_AIFindArsenalWithPrefab::QueryCallback
bool QueryCallback(IEntity e)
Definition
SCR_AIFindArsenalWithPrefab.c:54
SCR_AIFindArsenalWithPrefab::s_aVarsIn
static ref TStringArray s_aVarsIn
Definition
SCR_AIFindArsenalWithPrefab.c:69
SCR_AIFindArsenalWithPrefab::GetVariablesOut
override TStringArray GetVariablesOut()
Definition
SCR_AIFindArsenalWithPrefab.c:73
SCR_AIFindArsenalWithPrefab::PORT_ARSENAL_ENTITY
static const string PORT_ARSENAL_ENTITY
Definition
SCR_AIFindArsenalWithPrefab.c:8
SCR_AIFindArsenalWithPrefab::m_fSearchRadius
float m_fSearchRadius
Definition
SCR_AIFindArsenalWithPrefab.c:11
SCR_AIFindArsenalWithPrefab::PORT_PREFAB_RESOURCE_NAME
static const string PORT_PREFAB_RESOURCE_NAME
Definition
SCR_AIFindArsenalWithPrefab.c:5
SCR_AIFindArsenalWithPrefab::m_aQueryFoundEntities
ref array< IEntity > m_aQueryFoundEntities
Definition
SCR_AIFindArsenalWithPrefab.c:14
SCR_AIFindArsenalWithPrefab::VisibleInPalette
static override bool VisibleInPalette()
Definition
SCR_AIFindArsenalWithPrefab.c:65
SCR_AIFindArsenalWithPrefab::m_sQueryResourceName
ResourceName m_sQueryResourceName
Definition
SCR_AIFindArsenalWithPrefab.c:15
SCR_AIFindArsenalWithPrefab::PORT_POS
static const string PORT_POS
Definition
SCR_AIFindArsenalWithPrefab.c:4
SCR_AIFindArsenalWithPrefab::s_aVarsOut
static ref TStringArray s_aVarsOut
Definition
SCR_AIFindArsenalWithPrefab.c:72
UIWidgets
Definition
attributes.c:40
vector
Definition
vector.c:13
ENodeResult
ENodeResult
Definition
ENodeResult.c:13
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
TStringArray
array< string > TStringArray
Definition
Types.c:385
scripts
Game
AI
ScriptedNodes
Inventory
SCR_AIFindArsenalWithPrefab.c
Generated by
1.17.0