Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_BaseActionsEditorComponent.c
Go to the documentation of this file.
3 {
4  [Attribute(SCR_Enum.GetDefault(EEditorActionGroup.NONE), uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(EEditorActionGroup))]
5  EEditorActionGroup m_ActionGroup;
6 
7  [Attribute()]
8  int m_iOrder;
9 
10  ref SCR_SortedArray<SCR_BaseEditorAction> m_aActions;
11 }
12 
13 [BaseContainerProps(configRoot: true)]
14 class SCR_EditorActionList
15 {
16  [Attribute(desc: "Editor actions")]
17  ref array<ref SCR_BaseEditorAction> m_Actions;
18 }
19 
21 {
22  [Attribute(desc: "Editor actions", category: "Editor Actions")]
23  protected ref array<ref SCR_EditorActionList> m_ActionsLists;
24 
25  [Attribute(desc: "Editor action groups", category: "Editor Actions")]
26  protected ref array<ref SCR_EditorActionGroup> m_ActionGroups;
27 
28  protected ref array<SCR_BaseEditorAction> m_ActionsSorted = {};
29 
30  //------------------------------------------------------------------------------------------------
34  int GetActions(out notnull array<SCR_BaseEditorAction> outActions)
35  {
36  return outActions.Copy(m_ActionsSorted);
37  }
38 
39  //------------------------------------------------------------------------------------------------
43  SCR_BaseEditorAction GetAction(int index)
44  {
45  if (!m_ActionsSorted.IsIndexValid(index))
46  return null;
47 
48  return m_ActionsSorted[index];
49  }
50 
51  //------------------------------------------------------------------------------------------------
55  int FindAction(SCR_BaseEditorAction action)
56  {
57  return m_ActionsSorted.Find(action);
58  }
59 
60  //------------------------------------------------------------------------------------------------
63  void SetShortcuts(SCR_BaseActionsEditorComponent manager, bool toAdd)
64  {
65  if (toAdd)
66  {
67  foreach (SCR_BaseEditorAction action : m_ActionsSorted)
68  {
69  action.AddShortcut(manager);
70  }
71  }
72  else
73  {
74  foreach (SCR_BaseEditorAction action : m_ActionsSorted)
75  {
76  action.RemoveShortcut();
77  }
78  }
79  }
80 
81  //------------------------------------------------------------------------------------------------
82  // constructor
84  void SCR_BaseActionsEditorComponentClass(BaseContainer prefab)
85  {
86  if (!m_ActionGroups || m_ActionGroups.IsEmpty())
87  {
88  //--- No action groups defined
89  SCR_BaseEditorAction action;
90  SCR_SortedArray<SCR_BaseEditorAction> actionsSorted = new SCR_SortedArray<SCR_BaseEditorAction>();
91  foreach (SCR_EditorActionList list: m_ActionsLists)
92  {
93  for (int i = 0, count = list.m_Actions.Count(); i < count; i++)
94  {
95  action = list.m_Actions[i];
96  if (action.IsEnabled())
97  actionsSorted.Insert(action.GetOrder(), action);
98  }
99  }
100  actionsSorted.ToArray(m_ActionsSorted);
101  }
102  else
103  {
104  //--- Action groups defined, use them for sorting
105  SCR_EditorActionGroup actionGroup;
106  SCR_SortedArray<SCR_EditorActionGroup> actionGroupsSorted = new SCR_SortedArray<SCR_EditorActionGroup>();
107  map<EEditorActionGroup, SCR_EditorActionGroup> actionGroupsMap = new map<EEditorActionGroup, SCR_EditorActionGroup>();
108  int actionGroupCount = m_ActionGroups.Count();
109  for (int g = 0; g < actionGroupCount; g++)
110  {
111  actionGroup = m_ActionGroups[g];
112  actionGroup.m_aActions = new SCR_SortedArray<SCR_BaseEditorAction>();
113  actionGroupsSorted.Insert(actionGroup.m_iOrder, actionGroup);
114  actionGroupsMap.Insert(actionGroup.m_ActionGroup, actionGroup);
115  }
116 
117  //--- Put actions to their groups
118  SCR_BaseEditorAction action;
119  foreach (SCR_EditorActionList list: m_ActionsLists)
120  {
121  for (int a = 0, count = list.m_Actions.Count(); a < count; a++)
122  {
123  action = list.m_Actions[a];
124  if (action.IsEnabled())
125  {
126  if (actionGroupsMap.Find(action.GetActionGroup(), actionGroup))
127  actionGroup.m_aActions.Insert(action.GetOrder(), action);
128  else
129  Debug.Error2("SCR_BaseActionsEditorComponentClass.SCR_BaseActionsEditorComponentClass()", string.Format("Cannot register action %1, its group %2 is not configured!", Type(), typename.EnumToString(EEditorActionGroup, action.GetActionGroup())));
130  }
131  }
132  }
133 
134  //--- Create array sorted by groups and order indexes
135  for (int g; g < actionGroupCount; g++)
136  {
137  actionGroup = actionGroupsSorted[g];
138  for (int a, actionCount = actionGroup.m_aActions.Count(); a < actionCount; a++)
139  {
140  m_ActionsSorted.Insert(actionGroup.m_aActions[a]);
141  }
142  }
143  }
144  m_ActionGroups = null;
145  }
146 }
147 
148 class SCR_BaseActionsEditorComponent : SCR_BaseEditorComponent
149 {
153 
155  protected ref set<SCR_EditableEntityComponent> m_SelectedEntities = new set<SCR_EditableEntityComponent>();
156 
157  //------------------------------------------------------------------------------------------------
160  {
161  return m_HoveredEntity;
162  }
163 
164  //------------------------------------------------------------------------------------------------
168  int GetActions(out notnull array<SCR_BaseEditorAction> actions)
169  {
170  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
171  if (prefabData)
172  return prefabData.GetActions(actions);
173  else
174  return 0;
175  }
176 
177  //------------------------------------------------------------------------------------------------
184  void EvaluateActions(notnull array<SCR_BaseEditorAction> actions, vector cursorWorldPosition, out notnull array<ref SCR_EditorActionData> filteredActions, out int flags = 0)
185  {
186  filteredActions.Clear();
187 
188  flags |= ValidateSelection(false);
189 
190  foreach (SCR_BaseEditorAction action : actions)
191  {
192  if (!ActionCanBeShown(action, cursorWorldPosition, flags))
193  continue;
194 
195  bool canBePerformed = ActionCanBePerformed(action, cursorWorldPosition, flags);
196 
197  filteredActions.Insert(new SCR_EditorActionData(action, canBePerformed));
198  }
199  }
200 
201  //------------------------------------------------------------------------------------------------
207  int GetAndEvaluateActions(vector cursorWorldPosition, out notnull array<ref SCR_EditorActionData> filteredActions, out int flags = 0)
208  {
209  array<SCR_BaseEditorAction> actions = {};
210  GetActions(actions);
211  EvaluateActions(actions, cursorWorldPosition, filteredActions, flags);
212  return filteredActions.Count();
213  }
214 
215  //------------------------------------------------------------------------------------------------
220  protected int ValidateSelection(bool isInstant)
221  {
222  return 0;
223  }
224 
225  //------------------------------------------------------------------------------------------------
231  bool ActionCanBeShown(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
232  {
233  return false;
234  }
235 
236  //------------------------------------------------------------------------------------------------
242  bool ActionCanBePerformed(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
243  {
244  return true;
245  }
246 
247  //------------------------------------------------------------------------------------------------
251  void ActionPerformInstantly(SCR_BaseEditorAction action, int flags = 0)
252  {
253  flags |= ValidateSelection(true);
254 
255  vector cursorWorldPosition;
257  m_MenuLayoutManager.GetCursorWorldPos(cursorWorldPosition, GetInstantActionTraceFlags()); //--- ToDo: Handle in UI scripts?
258 
259  if (ActionCanBePerformed(action, cursorWorldPosition, flags))
260  ActionPerformInstantlyNoDialog(action, cursorWorldPosition, flags);
261  }
262 
263  //------------------------------------------------------------------------------------------------
264  protected void ActionPerformInstantlyNoDialog(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags = 0)
265  {
266  //--- Editor closed while waiting, terminate the loop
267  if (!SCR_EditorManagerEntity.IsOpenedInstance())
268  return;
269 
270  //--- Keep waiting until no dialog is open
271  if (GetGame().GetMenuManager().IsAnyDialogOpen())
272  GetGame().GetCallqueue().CallLater(ActionPerformInstantlyNoDialog, 1, false, action, cursorWorldPosition, flags);
273  else
274  ActionPerform(action, cursorWorldPosition, flags);
275  }
276 
277  //------------------------------------------------------------------------------------------------
278  protected TraceFlags GetInstantActionTraceFlags()
279  {
280  return -1;
281  }
282 
283  //------------------------------------------------------------------------------------------------
288  void ActionPerform(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
289  {
290  int param = action.GetParam();
291 
292  //~ Check if on cooldown and set cooldown if any. Always checked locally
293  if (action.CheckAndSetCooldown())
294  return;
295 
296  // If action requires execution on server and role is proxy/client, send action to server
297  if (action.IsServer() && m_RplComponent.Role() == RplRole.Proxy)
298  {
299  ActionPerformRpc(action, cursorWorldPosition, flags, param);
300  }
301  else
302  {
303  ActionPerform(action, m_HoveredEntity, m_SelectedEntities, cursorWorldPosition, flags, param);
304  ActionPerformLocal(action, m_HoveredEntity, m_SelectedEntities, cursorWorldPosition, flags, param);
305  }
306  }
307 
308  //------------------------------------------------------------------------------------------------
309  protected void ActionPerformRpc(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags, int param = -1)
310  {
311  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
312  if (!prefabData)
313  return;
314 
315  int actionIndex = prefabData.FindAction(action);
316  if (actionIndex == -1)
317  return;
318 
319  RplId hoveredEntityID = -1;
320  array<RplId> selectedEntityIds = {};
321  SerializeEntities(hoveredEntityID, selectedEntityIds);
322 
323  Rpc(ActionPerformServer, actionIndex, hoveredEntityID, selectedEntityIds, cursorWorldPosition, flags, param);
324  }
325 
326  //------------------------------------------------------------------------------------------------
327  protected void ActionPerform(SCR_BaseEditorAction action, SCR_EditableEntityComponent hoveredEntityComponent, set<SCR_EditableEntityComponent> selectedEntityComponents, vector cursorWorldPosition, int flags, int param)
328  {
329  action.Perform(hoveredEntityComponent, selectedEntityComponents, cursorWorldPosition, flags, param);
330  }
331 
332  //------------------------------------------------------------------------------------------------
333  protected void ActionPerformLocal(SCR_BaseEditorAction action, SCR_EditableEntityComponent hoveredEntityComponent, set<SCR_EditableEntityComponent> selectedEntityComponents, vector cursorWorldPosition, int flags, int param)
334  {
335  action.PerformOwner(m_HoveredEntity, m_SelectedEntities, cursorWorldPosition, flags, param);
336 
337  SCR_BaseEditorEffect.Activate(action.GetEffects(), this, cursorWorldPosition, selectedEntityComponents);
338  }
339 
340  //------------------------------------------------------------------------------------------------
348  [RplRpc(RplChannel.Reliable, RplRcver.Server)]
349  protected void ActionPerformServer(int actionIndex, RplId hoveredEntityID, array<RplId> selectedEntityIds, vector cursorWorldPosition, int flags, int param)
350  {
351  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
352  if (!prefabData)
353  return;
354 
355  SCR_BaseEditorAction action = prefabData.GetAction(actionIndex);
356  if (!action)
357  {
358  Print("Action with index: " + actionIndex + " not found on server", LogLevel.ERROR);
359  return;
360  }
361 
362  SCR_EditableEntityComponent hoveredEntityComponent;
363  set<SCR_EditableEntityComponent> selectedEntityComponents = new set<SCR_EditableEntityComponent>;
364  DeSerializeEntities(hoveredEntityID, selectedEntityIds, hoveredEntityComponent, selectedEntityComponents);
365 
366  ActionPerform(action, hoveredEntityComponent, selectedEntityComponents, cursorWorldPosition, flags, param);
367 
368  Rpc(ActionPerformOwner, actionIndex, cursorWorldPosition, flags, param);
369  }
370 
371  //------------------------------------------------------------------------------------------------
373  [RplRpc(RplChannel.Reliable, RplRcver.Owner)]
374  protected void ActionPerformOwner(int actionIndex, vector cursorWorldPosition, int flags, int param)
375  {
376  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
377  if (!prefabData)
378  return;
379 
380  SCR_BaseEditorAction action = prefabData.GetAction(actionIndex);
381  if (!action)
382  {
383  Print("Action with index: " + actionIndex + " returned from server, not found on client", LogLevel.ERROR);
384  return;
385  }
386  ActionPerformLocal(action, m_HoveredEntity, m_SelectedEntities, cursorWorldPosition, flags, param);
387  }
388 
389  //------------------------------------------------------------------------------------------------
390  private void SerializeEntities(out RplId hoveredEntityId, out array<RplId> selectedEntityIds)
391  {
392  // Serialize hovered entity to RplId int
393  if (m_HoveredEntity)
394  {
395  if (!GetRplIdFromEditableEntity(m_HoveredEntity, hoveredEntityId))
396  {
397  Print("Entity " + m_HoveredEntity.GetDisplayName() + " does not have replication component or is not registered for replication", LogLevel.WARNING);
398  }
399  }
400 
401  // Serialize selected entities to RplId int array
402  foreach (SCR_EditableEntityComponent selectedEntity : m_SelectedEntities)
403  {
404  if (!selectedEntity)
405  {
406  continue;
407  }
408  RplId selectedEntityId;
409  if (!GetRplIdFromEditableEntity(selectedEntity, selectedEntityId))
410  {
411  Print("Entity " + selectedEntity.GetDisplayName() + " does not have replication component or is not registered for replication", LogLevel.WARNING);
412  continue;
413  }
414  selectedEntityIds.Insert(selectedEntityId);
415  }
416  }
417 
418  //------------------------------------------------------------------------------------------------
419  private bool GetRplIdFromEditableEntity(SCR_EditableEntityComponent entity, out RplId entityRplId)
420  {
421  entityRplId = Replication.FindId(entity);
422  return entityRplId != -1;
423  }
424 
425  //------------------------------------------------------------------------------------------------
426  private void DeSerializeEntities(RplId hoveredEntityId, array<RplId> selectedEntityIds, out SCR_EditableEntityComponent hoveredEntityComponent, out set<SCR_EditableEntityComponent> selectedEntityComponents)
427  {
428  // Deserialize hovered entity RplId
429  if (hoveredEntityId != -1)
430  {
431  if (!GetEditableEntityFromRplId(hoveredEntityId, hoveredEntityComponent))
432  Print(string.Format("Hovered entity with RplID: %1 not found on server", hoveredEntityId), LogLevel.NORMAL);
433  }
434 
435  // Deserialize selected entity RplIds
436  foreach (RplId selectedEntityRplId : selectedEntityIds)
437  {
438  SCR_EditableEntityComponent selectedEntityComponent;
439  if (!GetEditableEntityFromRplId(selectedEntityRplId, selectedEntityComponent))
440  {
441  Print(string.Format("Selected entity with RplID: %1 not found on server", selectedEntityRplId), LogLevel.NORMAL );
442  continue;
443  }
444  selectedEntityComponents.Insert(selectedEntityComponent);
445  }
446  }
447 
448  //------------------------------------------------------------------------------------------------
449  private bool GetEditableEntityFromRplId(RplId entityRplId, out SCR_EditableEntityComponent editableEntityComponent)
450  {
451  Managed entityComponent = Replication.FindItem(entityRplId);
452  if (!entityComponent)
453  {
454  Print(string.Format("Entity with RplID: %1 not found on server", entityRplId), LogLevel.NORMAL);
455  return false;
456  }
457 
458  editableEntityComponent = SCR_EditableEntityComponent.Cast(entityComponent);
459  return editableEntityComponent != null;
460  }
461 
462  //------------------------------------------------------------------------------------------------
463  override void EOnEditorActivate()
464  {
465  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
466  if (!prefabData)
467  return;
468 
470  if (entitiesManager)
471  {
472  m_HoverManager = SCR_BaseEditableEntityFilter.Cast(entitiesManager.GetFilter(EEditableEntityState.HOVER));
473  m_SelectedManager = SCR_BaseEditableEntityFilter.Cast(entitiesManager.GetFilter(EEditableEntityState.SELECTED));
474  }
475 
477 
478  prefabData.SetShortcuts(this, true);
479  }
480 
481  //------------------------------------------------------------------------------------------------
482  override void EOnEditorDeactivate()
483  {
484  SCR_BaseActionsEditorComponentClass prefabData = SCR_BaseActionsEditorComponentClass.Cast(GetEditorComponentData());
485  if (!prefabData)
486  return;
487 
488  prefabData.SetShortcuts(this, false);
489  }
490 }
SCR_BaseEditorAction
Definition: SCR_BaseEditorAction.c:24
EEditableEntityState
EEditableEntityState
Definition: EEditableEntityState.c:37
SCR_Enum
Definition: SCR_Enum.c:1
GetHoveredEntity
SCR_EditableEntityComponent GetHoveredEntity()
Definition: SCR_BaseActionsEditorComponent.c:159
SerializeEntities
private void SerializeEntities(out RplId hoveredEntityId, out array< RplId > selectedEntityIds)
Definition: SCR_BaseActionsEditorComponent.c:390
SCR_EditorActionGroup
Definition: SCR_BaseActionsEditorComponent.c:2
ActionPerformRpc
protected void ActionPerformRpc(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags, int param=-1)
Definition: SCR_BaseActionsEditorComponent.c:309
SCR_BaseContainerCustomTitleEnum
class SCR_CampaignHintStorage SCR_BaseContainerCustomTitleEnum(EHint, "m_eHintId")
Definition: SCR_CampaignHintStorage.c:22
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
ActionPerformInstantly
void ActionPerformInstantly(SCR_BaseEditorAction action, int flags=0)
Definition: SCR_BaseActionsEditorComponent.c:251
ActionPerform
void ActionPerform(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
Definition: SCR_BaseActionsEditorComponent.c:288
GetRplIdFromEditableEntity
private bool GetRplIdFromEditableEntity(SCR_EditableEntityComponent entity, out RplId entityRplId)
Definition: SCR_BaseActionsEditorComponent.c:419
SCR_EntitiesManagerEditorComponent
Definition: SCR_EntitiesManagerEditorComponent.c:13
EOnEditorActivate
override void EOnEditorActivate()
Definition: SCR_BaseActionsEditorComponent.c:463
SCR_BaseActionsEditorComponentClass
Definition: SCR_BaseActionsEditorComponent.c:20
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
ActionPerformLocal
protected void ActionPerformLocal(SCR_BaseEditorAction action, SCR_EditableEntityComponent hoveredEntityComponent, set< SCR_EditableEntityComponent > selectedEntityComponents, vector cursorWorldPosition, int flags, int param)
Definition: SCR_BaseActionsEditorComponent.c:333
RplRpc
SCR_AchievementsHandlerClass ScriptComponentClass RplRpc(RplChannel.Reliable, RplRcver.Owner)] void UnlockOnClient(AchievementId achievement)
Definition: SCR_AchievementsHandler.c:11
GetInstantActionTraceFlags
protected TraceFlags GetInstantActionTraceFlags()
Definition: SCR_BaseActionsEditorComponent.c:278
m_Actions
protected ref map< Widget, SCR_BaseEditorAction > m_Actions
Definition: SCR_ActionsToolbarEditorUIComponent.c:26
ActionCanBePerformed
bool ActionCanBePerformed(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
Definition: SCR_BaseActionsEditorComponent.c:242
SCR_EditorActionData
Definition: SCR_BaseEditorAction.c:280
ActionPerformOwner
protected void ActionPerformOwner(int actionIndex, vector cursorWorldPosition, int flags, int param)
Server callback for when action is executed succesfully, calls PerformOwner function on action for e....
Definition: SCR_BaseActionsEditorComponent.c:374
GetAndEvaluateActions
int GetAndEvaluateActions(vector cursorWorldPosition, out notnull array< ref SCR_EditorActionData > filteredActions, out int flags=0)
Definition: SCR_BaseActionsEditorComponent.c:207
SCR_BaseEditorComponent
Definition: SCR_BaseEditorComponent.c:119
m_HoverManager
SCR_BaseActionsEditorComponentClass m_HoverManager
Attribute
typedef Attribute
Post-process effect of scripted camera.
m_HoveredEntity
protected SCR_EditableEntityComponent m_HoveredEntity
Definition: SCR_BaseActionsEditorComponent.c:154
SCR_MenuLayoutEditorComponent
Definition: SCR_MenuLayoutEditorComponent.c:15
ActionCanBeShown
bool ActionCanBeShown(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags)
Definition: SCR_BaseActionsEditorComponent.c:231
m_SelectedManager
protected SCR_BaseEditableEntityFilter m_SelectedManager
Definition: SCR_BaseActionsEditorComponent.c:151
BaseContainerProps
class SCR_EditorActionGroup BaseContainerProps(configRoot:true)
Definition: SCR_BaseActionsEditorComponent.c:13
GetActions
int GetActions(out notnull array< SCR_BaseEditorAction > actions)
Definition: SCR_BaseActionsEditorComponent.c:168
SCR_BaseEditableEntityFilter
Definition: SCR_BaseEditableEntityFilter.c:13
EEditorActionGroup
EEditorActionGroup
Definition: SCR_BaseEditorAction.c:7
SCR_BaseEditorComponentClass
Definition: SCR_BaseEditorComponent.c:2
SCR_EditableEntityComponent
Definition: SCR_EditableEntityComponent.c:13
m_RplComponent
protected RplComponent m_RplComponent
Definition: SCR_CampaignBuildingManagerComponent.c:42
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition: SCR_DestructionSynchronizationComponent.c:17
GetEditableEntityFromRplId
private bool GetEditableEntityFromRplId(RplId entityRplId, out SCR_EditableEntityComponent editableEntityComponent)
Definition: SCR_BaseActionsEditorComponent.c:449
ValidateSelection
protected int ValidateSelection(bool isInstant)
Definition: SCR_BaseActionsEditorComponent.c:220
EvaluateActions
void EvaluateActions(notnull array< SCR_BaseEditorAction > actions, vector cursorWorldPosition, out notnull array< ref SCR_EditorActionData > filteredActions, out int flags=0)
Definition: SCR_BaseActionsEditorComponent.c:184
m_MenuLayoutManager
protected SCR_MenuLayoutEditorComponent m_MenuLayoutManager
Definition: SCR_BaseActionsEditorComponent.c:152
m_SelectedEntities
protected ref set< SCR_EditableEntityComponent > m_SelectedEntities
Definition: SCR_BaseActionsEditorComponent.c:155
EOnEditorDeactivate
override void EOnEditorDeactivate()
Definition: SCR_BaseActionsEditorComponent.c:482
DeSerializeEntities
private void DeSerializeEntities(RplId hoveredEntityId, array< RplId > selectedEntityIds, out SCR_EditableEntityComponent hoveredEntityComponent, out set< SCR_EditableEntityComponent > selectedEntityComponents)
Definition: SCR_BaseActionsEditorComponent.c:426
ActionPerformServer
protected void ActionPerformServer(int actionIndex, RplId hoveredEntityID, array< RplId > selectedEntityIds, vector cursorWorldPosition, int flags, int param)
Definition: SCR_BaseActionsEditorComponent.c:349
ActionPerformInstantlyNoDialog
protected void ActionPerformInstantlyNoDialog(SCR_BaseEditorAction action, vector cursorWorldPosition, int flags=0)
Definition: SCR_BaseActionsEditorComponent.c:264
SCR_BaseEditorEffect
Definition: SCR_BaseEditorEffect.c:7
category
params category
Definition: SCR_VehicleDamageManagerComponent.c:180
SCR_EditorManagerEntity
Definition: SCR_EditorManagerEntity.c:26