Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AIGetSuppressionPosition.c
Go to the documentation of this file.
2{
3 static const string PORT_DURATION = "DurationIn";
4 static const string PORT_SHOOT_START = "ShootStartIn";
5 static const string PORT_SHOOT_END = "ShootEndIn";
6
7 static const string PORT_AIM_POSITION = "AimPositionOut";
8 static const string PORT_PROGRESS = "ProgressOut";
9 static const string PORT_IDLE_TIME = "IdleTimeSOut";
10
11 protected float m_fFireDuration;
13
14 protected SCR_AICombatComponent m_CombatComponent;
15
16#ifdef WORKBENCH
17 //Diagnostic visualization
18 ref array<ref Shape> m_aDbgShapes = {};
19#endif
20
21 //------------------------------------------------------------------------------------------------
22 override void OnInit(AIAgent owner)
23 {
24 m_CombatComponent = SCR_AICombatComponent.Cast(owner.FindComponent(SCR_AICombatComponent));
25 }
26
27 //------------------------------------------------------------------------------------------------------------------------------------
28 override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
29 {
30 float duration;
31 vector startPos, endPos;
32
33 if (!GetVariableIn(PORT_DURATION, duration) || !GetVariableIn(PORT_SHOOT_START, startPos) || !GetVariableIn(PORT_SHOOT_END, endPos))
34 return ENodeResult.FAIL;
35
36 // Start of new line
37 if (m_vStartPos != startPos || m_vEndPos != endPos)
38 {
39 m_vStartPos = startPos;
40 m_vEndPos = endPos;
42 }
43 // Continuation of same line
44 else
45 m_fFireDuration += dt;
46
47 float progress = Math.Clamp(m_fFireDuration / duration, 0, 1);
48 vector aimPosition = startPos + ((endPos - startPos) * progress);
49
50 SetVariableOut(PORT_AIM_POSITION, aimPosition);
51 SetVariableOut(PORT_PROGRESS, progress);
52
53#ifdef WORKBENCH
54 m_aDbgShapes.Clear();
55 if (DiagMenu.GetBool(SCR_DebugMenuID.DEBUGUI_AI_SHOW_SUPPRESS_DEBUG))
56 {
57 m_aDbgShapes.Insert(Shape.CreateSphere(Color.DARK_GREEN, ShapeFlags.TRANSP | ShapeFlags.NOOUTLINE, aimPosition, 0.1));
58 m_aDbgShapes.Insert(Shape.CreateSphere(Color.DARK_RED, ShapeFlags.TRANSP | ShapeFlags.NOOUTLINE, m_vStartPos, 0.1));
59 m_aDbgShapes.Insert(Shape.CreateSphere(Color.DARK_YELLOW, ShapeFlags.TRANSP | ShapeFlags.NOOUTLINE, m_vEndPos, 0.1));
60 m_aDbgShapes.Insert(Shape.CreateArrow(m_vStartPos, m_vEndPos, 1, Color.DARK_CYAN, ShapeFlags.TRANSP | ShapeFlags.NOOUTLINE));
61 }
62#endif
63
64 return ENodeResult.SUCCESS;
65 }
66
67 //------------------------------------------------------------------------------------------------------------------------------------
68 protected static ref TStringArray s_aVarsIn = {
69 PORT_DURATION,
70 PORT_SHOOT_START,
71 PORT_SHOOT_END
72 };
73
74 //------------------------------------------------------------------------------------------------------------------------------------
75 protected static ref TStringArray s_aVarsOut = {
76 PORT_AIM_POSITION,
77 PORT_PROGRESS,
78 PORT_IDLE_TIME
79 };
80
81 //------------------------------------------------------------------------------------------------------------------------------------
82 override array<string> GetVariablesIn()
83 {
84 return s_aVarsIn;
85 }
86
87 //------------------------------------------------------------------------------------------------------------------------------------
88 override array<string> GetVariablesOut()
89 {
90 return s_aVarsOut;
91 }
92
93 //------------------------------------------------------------------------------------------------------------------------------------
94 protected static override string GetOnHoverDescription()
95 {
96 return "Calculate position to shoot at during suppressive fire";
97 }
98
99 //------------------------------------------------------------------------------------------------------------------------------------
100 static override bool VisibleInPalette()
101 {
102 return true;
103 }
104};
105
SCR_DebugMenuID
This enum contains all IDs for DiagMenu entries added in script.
Definition DebugMenuID.c:4
Definition Color.c:13
Diagnostic and developer menu system.
Definition DiagMenu.c:18
Definition Math.c:13
proto void SetVariableOut(string name, void val)
proto bool GetVariableIn(string name, out void val)
override array< string > GetVariablesOut()
override array< string > GetVariablesIn()
override ENodeResult EOnTaskSimulate(AIAgent owner, float dt)
override void OnInit(AIAgent owner)
static override string GetOnHoverDescription()
Instance of created debug visualizer.
Definition Shape.c:14
ENodeResult
Definition ENodeResult.c:13
ShapeFlags
Definition ShapeFlags.c:13
array< string > TStringArray
Definition Types.c:385