Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AIFindArsenalWithPrefab.c
Go to the documentation of this file.
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 = {};
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
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
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
70 override TStringArray GetVariablesIn() { return s_aVarsIn; }
71
72 protected static ref TStringArray s_aVarsOut = { PORT_ARSENAL_ENTITY };
74}
ArmaReforgerScripted GetGame()
Definition game.c:1398
proto external Managed FindComponent(typename typeName)
proto void SetVariableOut(string name, void val)
proto bool GetVariableIn(string name, out void val)
static override string GetOnHoverDescription()
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
ENodeResult
Definition ENodeResult.c:13
SCR_FieldOfViewSettings Attribute
array< string > TStringArray
Definition Types.c:385