Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AIAnimationWaypoint.c
Go to the documentation of this file.
2{
3};
4
5//------------------------------------------------------------------------------------------------
7{
8 vector m_vAnimationLocalTransform[4];
9 float m_fAnimationDuration;
10 ref SCR_AIAnimation_Base m_oAnimationClass;
11}
12
13//------------------------------------------------------------------------------------------------
15class SCR_AIAnimationWaypointParameters
17 [Attribute("", UIWidgets.Object, "Animation position and angles - use PointInfo")]
18 ref PointInfo m_oAnimationLocalTransform;
19 [Attribute("-1", UIWidgets.EditBox, "Animation duration [s], -1 for indefinite")]
21 [Attribute("", UIWidgets.Object, "Animation methods")]
23
24 private ref SCR_AIAnimationParameters m_Parameters;
25
26 void SCR_AIAnimationWaypointParameters()
27 {
29 return;
30 m_Parameters = new SCR_AIAnimationParameters;
31 if (m_oAnimationLocalTransform)
32 m_oAnimationLocalTransform.GetLocalTransform(m_Parameters.m_vAnimationLocalTransform);
33 m_Parameters.m_fAnimationDuration = m_fAnimationDuration;
34 m_Parameters.m_oAnimationClass = m_oAnimationClass;
35 }
36
37 //------------------------------------------------------------------------------------------------
38 SCR_AIAnimationParameters GetParameters()
39 {
40 return m_Parameters;
41 }
42
43 //------------------------------------------------------------------------------------------------
44 void SetParameters(vector animationTransform[4], float animationDuration, SCR_AIAnimation_Base animationClass)
45 {
46 m_Parameters.m_vAnimationLocalTransform = animationTransform;
47 m_Parameters.m_fAnimationDuration = animationDuration;
48 m_Parameters.m_oAnimationClass = animationClass;
49 }
50};
51
52//------------------------------------------------------------------------------------------------
55{
56 [Attribute("", UIWidgets.EditBox, "Actor name", "")]
57 string m_sAgentsName;
58
59 [Attribute("", UIWidgets.Object, "Animation list to perform by the actor given by the index (of group member)")]
60 protected ref array<ref SCR_AIAnimationWaypointParameters> m_aAgentAnimationParameters;
61
62 //------------------------------------------------------------------------------------------------
64 {
65 return m_sAgentsName;
66 }
67
68 //------------------------------------------------------------------------------------------------
69 void SetAnimationActorName(string actorName)
70 {
71 m_sAgentsName = actorName;
72 }
73
74 //------------------------------------------------------------------------------------------------
75 void AddAnimationWaypointParameter(notnull SCR_AIAnimationWaypointParameters animationWaypointParameter, int animationIndex)
76 {
79
80 m_aAgentAnimationParameters.InsertAt(animationWaypointParameter, animationIndex);
81 }
82
83 //------------------------------------------------------------------------------------------------
84 bool RemoveAnimationWaypointParameter(SCR_AIAnimationWaypointParameters animationWaypointParameter)
85 {
86 int animationIndex = m_aAgentAnimationParameters.Find(animationWaypointParameter);
87 if (animationIndex < 0)
88 return false;
89 m_aAgentAnimationParameters.RemoveOrdered(animationIndex);
90 return true;
91 }
92
93 //------------------------------------------------------------------------------------------------
94 SCR_AIAnimationWaypointParameters GetParameters(int animationIndex)
95 {
96 return m_aAgentAnimationParameters[animationIndex];
97 }
98
99 //------------------------------------------------------------------------------------------------
100 bool IsAnimationIndexValid(int animationIndex)
101 {
102 return m_aAgentAnimationParameters.IsIndexValid(animationIndex);
103 }
104
105 //------------------------------------------------------------------------------------------------
106 vector GetAnimationPosition(IEntity rootEntity, int animationIndex)
107 {
108 if (!m_aAgentAnimationParameters.IsIndexValid(animationIndex))
109 return vector.Zero;
110 vector mat[4], outMat[4];
111 rootEntity.GetWorldTransform(mat);
112 Math3D.MatrixMultiply4(mat,m_aAgentAnimationParameters[animationIndex].GetParameters().m_vAnimationLocalTransform, outMat);
113 return outMat[3];
114 }
115
116 //------------------------------------------------------------------------------------------------
117 void GetAnimationWorldTransform(IEntity rootEntity, int animationIndex, out vector transform[4])
118 {
119 if (!m_aAgentAnimationParameters.IsIndexValid(animationIndex))
120 return;
121 vector origMat[4];
122 rootEntity.GetWorldTransform(origMat);
123 Math3D.MatrixMultiply4(origMat, m_aAgentAnimationParameters[animationIndex].GetParameters().m_vAnimationLocalTransform, transform);
124 }
125
126 //------------------------------------------------------------------------------------------------
127 float GetAnimationDuration(int animationIndex)
128 {
129 if (!m_aAgentAnimationParameters.IsIndexValid(animationIndex))
130 return 0;
131 return m_aAgentAnimationParameters[animationIndex].GetParameters().m_fAnimationDuration;
132 }
133
134 //------------------------------------------------------------------------------------------------
136 {
137 if (!m_aAgentAnimationParameters.IsIndexValid(animationIndex))
138 return null;
139 return m_aAgentAnimationParameters[animationIndex].GetParameters().m_oAnimationClass;
140 }
141};
142
143//------------------------------------------------------------------------------------------------
144void SCR_AIOnAnimationBehaviorAction(AIAgent agent, bool startingAnimation, int animationIndex);
146
147//------------------------------------------------------------------------------------------------
149{
150 [Attribute("", UIWidgets.Object, "List of group members scripts - what to do on this waypoint, each member has array of animations on locations")]
151 ref array<ref SCR_AIAnimationScript> m_aAnimationScripts;
152
153 protected ref ScriptInvokerBase<SCR_AIOnAnimationBehaviorAction> m_OnAnimationBehaviorAction; // called if any of the waypoint's users (characters) start or stop animation
154
155 //----------------------------------------------------------------------------------------
156 void AddAnimationScript(notnull SCR_AIAnimationScript animationScript, int animationIndex = -1)
157 {
158 if (animationIndex < 0)
159 m_aAnimationScripts.Insert(animationScript);
160 else
161 m_aAnimationScripts.InsertAt(animationScript, animationIndex);
162 }
163
164 //----------------------------------------------------------------------------------------
166 {
167 int animationIndex = m_aAnimationScripts.Find(animationScript);
168 if (animationIndex < 0)
169 return false;
170 m_aAnimationScripts.RemoveOrdered(animationIndex);
171 return true;
172 }
173
174 //----------------------------------------------------------------------------------------
176 {
177 return new SCR_AIAnimationWaypointState(groupUtilityComp, this);
178 }
179
180 //----------------------------------------------------------------------------------------
181 ScriptInvokerBase<SCR_AIOnAnimationBehaviorAction> GetOnAnimationBehaviorAction()
182 {
184 m_OnAnimationBehaviorAction = new ScriptInvokerBase<SCR_AIOnAnimationBehaviorAction>();
186 }
187};
188
189//------------------------------------------------------------------------------------------------
191{
192 //------------------------------------------------------------------------------------------------
193 override void OnExecuteWaypointTree()
194 {
195 super.OnExecuteWaypointTree();
197 if (!waypoint && m_Waypoint)
198 m_Utility.m_Owner.CompleteWaypoint(m_Waypoint);
199
200 auto activity = new SCR_AIAnimateActivity(m_Utility, waypoint, priorityLevel: waypoint.GetPriorityLevel());
201 m_Utility.AddAction(activity);
202 }
203};
ref SCR_AIAnimation_Base m_oAnimationClass
func SCR_AIOnAnimationBehaviorAction
vector m_vAnimationLocalTransform[4]
float m_fAnimationDuration
class SCR_AIAnimationScript BaseContainerProps
proto external void GetWorldTransform(out vector mat[])
See IEntity::GetTransform.
PointInfo - allows to define position.
Definition PointInfo.c:9
void GetAnimationWorldTransform(IEntity rootEntity, int animationIndex, out vector transform[4])
float GetAnimationDuration(int animationIndex)
vector GetAnimationPosition(IEntity rootEntity, int animationIndex)
void AddAnimationWaypointParameter(notnull SCR_AIAnimationWaypointParameters animationWaypointParameter, int animationIndex)
SCR_AIAnimation_Base GetAnimationClass(int animationIndex)
bool RemoveAnimationWaypointParameter(SCR_AIAnimationWaypointParameters animationWaypointParameter)
void SetAnimationActorName(string actorName)
ref array< ref SCR_AIAnimationWaypointParameters > m_aAgentAnimationParameters
bool IsAnimationIndexValid(int animationIndex)
SCR_AIAnimationWaypointParameters GetParameters(int animationIndex)
ref ScriptInvokerBase< SCR_AIOnAnimationBehaviorAction > m_OnAnimationBehaviorAction
override SCR_AIWaypointState CreateWaypointState(SCR_AIGroupUtilityComponent groupUtilityComp)
void AddAnimationScript(notnull SCR_AIAnimationScript animationScript, int animationIndex=-1)
ScriptInvokerBase< SCR_AIOnAnimationBehaviorAction > GetOnAnimationBehaviorAction()
bool RemoveAnimationScript(SCR_AIAnimationScript animationScript)
void SCR_AIWaypoint(IEntitySource src, IEntity parent)
SCR_AIGroupUtilityComponent m_Utility
void SCR_AIWaypointState(notnull SCR_AIGroupUtilityComponent utility, SCR_AIWaypoint waypoint)
static bool IsEditMode()
Definition Functions.c:1566
SCR_FieldOfViewSettings Attribute