Arma Reforger Explorer  1.1.0.42
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
SCR_ComboBoxComponent.c
Go to the documentation of this file.
2 {
3  [Attribute("-1", UIWidgets.EditBox, "Maximum size of the list without using scrollbar. -1 for no limit")]
4  float m_fMaxListHeight;
5 
6  [Attribute("true", UIWidgets.CheckBox, "Create the list below or above or below the root widget")]
7  bool m_bCreateListBelow;
8 
9  [Attribute("{B8C4345E3A833B05}UI/layouts/WidgetLibrary/ComboBox/WLib_OpenedComboRoot.layout", UIWidgets.ResourceNamePicker, "Combo box element", "layout")]
10  ResourceName m_sListRootLayout;
11 
12  [Attribute("{323CF37F81DF9B8A}UI/layouts/Common/Settings/ComboBox/ARComboBoxElement.layout", UIWidgets.ResourceNamePicker, "Combo box element", "layout")]
13  ResourceName m_sElementLayout;
14 
15  [Attribute("0", UIWidgets.EditBox, "Gap between combo root and combo box items")]
16  float m_fItemsGap;
17 
18  [Attribute("0", UIWidgets.EditBox, "Extra pixels to the left from the center of the widget")]
19  float m_fExtraPaddingLeft;
20 
21  [Attribute("0", UIWidgets.EditBox, "Extra pixels to the right from the center of the widget")]
22  float m_fExtraPaddingRight;
23 
24  [Attribute("0", UIWidgets.EditBox, "Starting angle of arrow icon to coordinate texture rotation")]
25  protected float m_fArrowDefaultAngle;
26 
27  [Attribute("0", UIWidgets.CheckBox, "Allow manual drop down list width enforcing")]
28  protected bool m_bForceListWidth;
29 
30  [Attribute("200", UIWidgets.EditBox, "How wide should drop down list be")]
31  protected float m_fListForcedWidth;
32 
33  [Attribute("0", UIWidgets.EditBox, "How wide should drop down list be")]
34  protected float m_fListXOffset;
35 
36  [Attribute(SCR_SoundEvent.FOCUS, UIWidgets.EditBox, "")]
37  protected string m_sSoundClosed;
38 
39  [Attribute("OverlayArrow")]
40  protected string m_sButton;
41 
42  [Attribute(UIColors.GetColorAttribute(UIColors.EDIT_WIDGET_BACKGROUND), UIWidgets.ColorPicker)]
43  protected ref Color m_BackgroundDefault;
44 
45  [Attribute(UIColors.GetColorAttribute(UIColors.IDLE_DISABLED), UIWidgets.ColorPicker)]
46  protected ref Color m_BackgroundInteracting;
47 
48  [Attribute(UIColors.GetColorAttribute(UIColors.NEUTRAL_ACTIVE_STANDBY), UIWidgets.ColorPicker)]
49  protected ref Color m_ArrowDefault;
50 
51  [Attribute(UIColors.GetColorAttribute(UIColors.CONTRAST_COLOR), UIWidgets.ColorPicker)]
52  protected ref Color m_ArrowInteracting;
53 
54  [Attribute(UIColors.GetColorAttribute(UIColors.HIGHLIGHTED), UIWidgets.ColorPicker)]
55  protected ref Color m_ArrowFocused;
56 
57  [Attribute("0", desc: "Should the arrow flip when the Combo box is opened")]
58  protected bool m_bRotateArrow;
59 
60  protected InputManager m_InputManager;
61  protected ref array<Widget> m_aElementWidgets = new array<Widget>();
62  protected Widget m_wButton;
63  protected ImageWidget m_wArrowImage;
64  protected TextWidget m_wText;
65  protected VerticalLayoutWidget m_wContent;
66  protected ScrollLayoutWidget m_wScrollLayout;
67  protected Widget m_wElementsRoot;
68  protected Widget m_wContentRoot;
69  protected WorkspaceWidget m_Workspace;
70  protected ref SCR_ComboModalHandler m_ModalHandler;
71  protected bool m_bOpened;
72 
73  // Script invokers sends
74  ref ScriptInvoker m_OnOpened = new ScriptInvoker();
75  ref ScriptInvoker m_OnClosed = new ScriptInvoker();
76 
77  protected float posX, posY;
78 
79  protected Widget m_wTextBackground;
80 
81  protected const int INITIALIZATION_CHECK_FREQUENCY = 10;
82 
83  //------------------------------------------------------------------------------------------------
84  override void HandlerAttached(Widget w)
85  {
86  super.HandlerAttached(w);
87  m_InputManager = GetGame().GetInputManager();
88  m_Workspace = GetGame().GetWorkspace();
89  m_wText = TextWidget.Cast(w.FindAnyWidget("Content"));
90  m_wContentRoot = w.FindAnyWidget("ComboButton");
91  if (m_wContentRoot)
92  {
93  SCR_EventHandlerComponent comp = SCR_EventHandlerComponent.Cast(m_wContentRoot.FindHandler(SCR_EventHandlerComponent));
94  if (comp)
95  {
96  comp.GetOnClick().Insert(OpenList);
97  comp.GetOnMouseEnter().Insert(OnHandlerHovered);
98  comp.GetOnMouseLeave().Insert(OnHandlerUnhovered);
99  comp.GetOnFocus().Insert(OnHandlerFocus);
100  comp.GetOnFocusLost().Insert(OnHandlerFocusLost);
101  }
102  }
103 
104  // Find arrow button
105  m_wButton = w.FindAnyWidget(m_sButton);
106 
107  m_wArrowImage = ImageWidget.Cast(w.FindAnyWidget("ImageArrow"));
108  if (m_wArrowImage)
109  {
110  m_wArrowImage.SetRotation(m_fArrowDefaultAngle);
111  m_wArrowImage.SetColor(m_ArrowDefault);
112  }
113 
114  UpdateName();
115 
116  Widget overlayText = w.FindAnyWidget("OverlayText");
117  if(overlayText)
118  m_wTextBackground = overlayText.FindAnyWidget("Background");
119 
120  if(m_wTextBackground)
121  m_wTextBackground.SetColor(m_BackgroundDefault);
122 
123  if (GetGame().InPlayMode())
124  SCR_MenuHelper.GetOnMenuFocusLost().Insert(OnMenuFocusLost);
125  }
126 
127  //------------------------------------------------------------------------------------------------
128  override void HandlerDeattached(Widget w)
129  {
130  super.HandlerDeattached(w);
131  CloseList();
132 
133  SCR_MenuHelper.GetOnMenuFocusLost().Remove(OnMenuFocusLost);
134  }
135 
136  //------------------------------------------------------------------------------------------------
137  protected bool OnHandlerClicked()
138  {
139  OpenList();
140  if (GetGame().GetWorkspace().GetFocusedWidget() != m_wRoot)
141  GetGame().GetWorkspace().SetFocusedWidget(m_wRoot);
142 
143  return true;
144  }
145 
146  //------------------------------------------------------------------------------------------------
147  override bool OnFocus(Widget w, int x, int y)
148  {
149  // Prevent regular focus, handled by OnHandlerFocus
150  if (m_wContentRoot)
151  GetGame().GetWorkspace().SetFocusedWidget(m_wContentRoot);
152 
153  return false;
154  }
155 
156  //------------------------------------------------------------------------------------------------
157  override bool OnFocusLost(Widget w, int x, int y)
158  {
159  // Prevent regular focus, handled by OnHandlerFocusLost
160  return false;
161  }
162 
163  //------------------------------------------------------------------------------------------------
164  protected void OnHandlerFocus()
165  {
166  // Call focus event on parent class
167  super.OnFocus(m_wRoot, 0, 0);
168 
169  // Make the widget unfocusable
170  m_wRoot.SetFlags(WidgetFlags.NOFOCUS);
171  }
172 
173  //------------------------------------------------------------------------------------------------
174  protected void OnHandlerFocusLost()
175  {
176  // Call focusLost event on parent class
177  super.OnFocusLost(m_wRoot, 0, 0);
178 
179  // Make focusable again
180  m_wRoot.ClearFlags(WidgetFlags.NOFOCUS);
181  }
182 
183  //------------------------------------------------------------------------------------------------
184  protected void OnHandlerHovered()
185  {
186  if (m_wArrowImage)
187  AnimateWidget.Color(m_wArrowImage, m_ArrowFocused, m_fAnimationRate);
188  }
189 
190  //------------------------------------------------------------------------------------------------
191  protected void OnHandlerUnhovered()
192  {
193  if (m_wArrowImage)
194  {
195  Color color = m_ArrowDefault;
196 
197  if (m_bOpened)
198  color = m_ArrowInteracting;
199 
200  AnimateWidget.Color(m_wArrowImage, color, m_fAnimationRate);
201  }
202  }
203 
204  //------------------------------------------------------------------------------------------------
205  protected void OnMenuFocusLost(ChimeraMenuBase menu)
206  {
207  if (menu == ChimeraMenuBase.GetOwnerMenu(m_wRoot) && m_bOpened)
208  CloseList();
209  }
210 
211  //------------------------------------------------------------------------------------------------
212  override protected void OnEnabled(bool animate)
213  {
214  super.OnEnabled(animate);
215 
216  if (m_wButton)
217  m_wButton.SetVisible(true);
218  }
219 
220  //------------------------------------------------------------------------------------------------
221  override protected void OnDisabled(bool animate)
222  {
223  super.OnDisabled(animate);
224 
225  if (m_wButton)
226  m_wButton.SetVisible(false);
227  }
228 
229  //------------------------------------------------------------------------------------------------
230  protected void UpdateName()
231  {
232  if (!m_wText)
233  return;
234 
235  if (m_aElementNames && m_iSelectedItem > -1 && m_iSelectedItem < m_aElementNames.Count())
236  m_wText.SetText(m_aElementNames[m_iSelectedItem]);
237  else
238  m_wText.SetText(string.Empty);
239  }
240 
241  //------------------------------------------------------------------------------------------------
242  override bool SetCurrentItem(int i, bool playSound = false, bool animate = false)
243  {
244  bool result = super.SetCurrentItem(i, playSound, animate);
245  UpdateName();
246  if (m_bOpened)
247  CreateEntries();
248 
249  return result;
250  }
251 
252  //------------------------------------------------------------------------------------------------
253  void CreateEntries()
254  {
255  if (!m_wContent || !m_wElementsRoot)
256  return;
257 
258  foreach (Widget w : m_aElementWidgets)
259  {
260  w.RemoveFromHierarchy();
261  }
262  m_aElementWidgets.Clear();
263 
264  foreach (int i, string name : m_aElementNames)
265  {
266  Widget w = GetGame().GetWorkspace().CreateWidgets(m_sElementLayout, m_wContent);
267  if (!w)
268  continue;
269 
270  if (!m_wElementsRoot.IsVisible())
271  m_wElementsRoot.SetVisible(true);
272 
273  m_aElementWidgets.Insert(w);
274  OnCreateElement(w, i);
275 
277  if (comp)
278  {
279  if (i == m_iSelectedItem)
280  {
281  GetGame().GetWorkspace().SetFocusedWidget(comp.GetRootWidget());
282  comp.SetToggled(true, false, false);
283  }
284 
285  comp.SetText(m_aElementNames[i]);
286  comp.m_OnClicked.Insert(OnElementSelected);
287  }
288  }
289 
290  // Set focus on the first one or current index
291  // TODO: fix "Given widget is already modal, not adding again" message
292  if (m_iSelectedItem > -1 && m_iSelectedItem < m_aElementWidgets.Count())
293  GetGame().GetWorkspace().AddModal(m_wElementsRoot, m_aElementWidgets[m_iSelectedItem]);
294  else if (m_aElementWidgets.Count() > 0 && m_aElementWidgets[0])
295  GetGame().GetWorkspace().AddModal(m_wElementsRoot, m_aElementWidgets[0]);
296 
297  // Check until all elements have been initialized, to perform post init setups
298  GetGame().GetCallqueue().Remove(CheckElementsInitialized);
299  GetGame().GetCallqueue().CallLater(CheckElementsInitialized, INITIALIZATION_CHECK_FREQUENCY, true);
300  }
301 
302  //------------------------------------------------------------------------------------------------
303  protected void CheckElementsInitialized()
304  {
305  if (!m_bOpened || m_aElementWidgets.IsEmpty())
306  {
307  GetGame().GetCallqueue().Remove(CheckElementsInitialized);
308  return;
309  }
310 
311  int initializedItems;
312  float totalItems = m_aElementWidgets.Count();
313 
314  foreach (Widget element : m_aElementWidgets)
315  {
316  float x, y;
317  element.GetScreenSize(x, y);
318 
319  if (x > 0 && y > 0)
320  initializedItems++;
321  }
322 
323  if (initializedItems != totalItems)
324  return;
325 
326  // Set slider position to selected element
327  if (m_wScrollLayout)
328  m_wScrollLayout.SetSliderPos(0, m_iSelectedItem / totalItems, true);
329 
330  GetGame().GetCallqueue().Remove(CheckElementsInitialized);
331  }
332 
333  //------------------------------------------------------------------------------------------------
334  void OpenList()
335  {
336  if (m_bOpened || !m_aElementNames || /*m_aElementNames.IsEmpty() ||*/ !m_wContentRoot)
337  return;
338 
339  m_bOpened = true;
340 
341  SCR_MenuHelper.SetActiveWidgetInteractionState(true);
342 
343  if(m_wTextBackground)
344  AnimateWidget.Color(m_wTextBackground, m_BackgroundInteracting, m_fAnimationRate);
345 
346  // Add escape handling
347  m_InputManager.ResetAction("MenuSelect");
348  m_InputManager.AddActionListener("MenuBack", EActionTrigger.DOWN, OnMenuBack);
349 #ifdef WORKBENCH
350  m_InputManager.AddActionListener("MenuBackWB", EActionTrigger.DOWN, OnMenuBack);
351 #endif
352 
353  float x, y, w, h;
354  m_wContentRoot.GetScreenPos(x, y);
355  m_wContentRoot.GetScreenSize(w, h);
356 
357  // Unscale all layout-based positions
358  x = m_Workspace.DPIUnscale(x);
359  y = m_Workspace.DPIUnscale(y);
360  w = m_Workspace.DPIUnscale(w);
361  h = m_Workspace.DPIUnscale(h);
362 
363  // Modify width with the extra paddings on sides
364  x += m_fExtraPaddingLeft;
365  w -= m_fExtraPaddingLeft + m_fExtraPaddingRight;
366 
367  m_wElementsRoot = GetGame().GetWorkspace().CreateWidgets(m_sListRootLayout, GetGame().GetWorkspace());
368  if (m_aElementData.IsEmpty())
369  m_wElementsRoot.SetVisible(false);
370 
371  if (!m_wElementsRoot)
372  return;
373 
374  // List Content setup
375  m_wContent = VerticalLayoutWidget.Cast(m_wElementsRoot.FindAnyWidget("Content"));
376  if (!m_wContent)
377  return;
378 
379  if (m_bCreateListBelow)
380  {
381  y += h + m_fItemsGap;
382  }
383  else
384  {
385  y -= m_fItemsGap;
386  m_wContent.SetFillOrigin(VerticalFillOrigin.BOTTOM);
387  Widget separator = m_wContent.GetChildren();
388  if (separator)
389  separator.SetZOrder(-1);
390  }
391 
392  // List Size setup
393  FrameSlot.SetPos(m_wElementsRoot, x + m_fListXOffset, y);
394  SizeLayoutWidget size = SizeLayoutWidget.Cast(m_wElementsRoot.FindAnyWidget("SizeLayout"));
395  if (size)
396  {
397  size.EnableWidthOverride(true);
398 
399  if (m_bForceListWidth)
400  size.SetWidthOverride(m_fListForcedWidth);
401  else
402  size.SetWidthOverride(w);
403 
404  if (m_fMaxListHeight > 0)
405  {
406  size.SetMaxDesiredHeight(m_fMaxListHeight);
407  size.EnableMaxDesiredHeight(true);
408  }
409  }
410 
411  // Cache content scroll layout if present
412  m_wScrollLayout = ScrollLayoutWidget.Cast(m_wElementsRoot.FindAnyWidget("ScrollLayout"));
413 
414  // Create entries
415  CreateEntries();
416 
417  // Modal handler
418  m_ModalHandler = new SCR_ComboModalHandler();
419  m_wElementsRoot.AddHandler(m_ModalHandler);
420  m_ModalHandler.m_OnModalClickOut.Insert(CloseList);
421 
422  ChimeraMenuBase menu = ChimeraMenuBase.GetOwnerMenu(m_wRoot);
423  m_ModalHandler.SetupOwners(this, menu);
424 
425  // Update arrow image
426  if (m_wArrowImage)
427  {
428  if (m_bRotateArrow)
429  m_wArrowImage.SetRotation(m_fArrowDefaultAngle + 180);
430 
431  AnimateWidget.Color(m_wArrowImage, m_ArrowInteracting, m_fAnimationRate);
432  }
433 
434  // Event
435  m_OnOpened.Invoke(this);
436  }
437 
438  //------------------------------------------------------------------------------------------------
439  protected void OnCreateElement(Widget elementWidget, int index)
440  {
441  }
442 
443  //------------------------------------------------------------------------------------------------
444  void CloseList()
445  {
446  GetGame().GetCallqueue().Remove(CheckElementsInitialized);
447 
448  if (!m_bOpened || !m_wElementsRoot || !m_aElementNames)
449  return;
450 
451  SCR_MenuHelper.SetActiveWidgetInteractionState(false);
452  if(m_wTextBackground)
453  AnimateWidget.Color(m_wTextBackground, m_BackgroundDefault, m_fAnimationRate);
454 
455  // Remove escape handling
456  GetGame().GetInputManager().RemoveActionListener("MenuBack", EActionTrigger.DOWN, OnMenuBack);
457 #ifdef WORKBENCH
458  GetGame().GetInputManager().RemoveActionListener("MenuBackWB", EActionTrigger.DOWN, OnMenuBack);
459 #endif
460 
461  m_bOpened = false;
462  m_wElementsRoot.RemoveFromHierarchy();
463 
464  foreach (Widget w : m_aElementWidgets)
465  {
466  if (!w)
467  continue;
468 
469  SCR_ButtonTextComponent comp = SCR_ButtonTextComponent.Cast(w.GetHandler(0));
470  if (!comp)
471  continue;
472 
473  comp.m_OnToggled.Remove(OnElementSelected);
474  }
475  m_aElementWidgets.Clear();
476 
477  // Reset nagivation rules
478  m_wRoot.SetNavigation(WidgetNavigationDirection.UP, WidgetNavigationRuleType.ESCAPE);
479  m_wRoot.SetNavigation(WidgetNavigationDirection.DOWN, WidgetNavigationRuleType.ESCAPE);
480 
481  GetGame().GetWorkspace().SetFocusedWidget(m_wContentRoot);
482 
483  // Update arrow image
484  if (m_wArrowImage)
485  {
486  if (m_bRotateArrow)
487  m_wArrowImage.SetRotation(m_fArrowDefaultAngle);
488 
489  AnimateWidget.Color(m_wArrowImage, m_ArrowDefault, m_fAnimationRate);
490  }
491 
492  PlaySound(m_sSoundClosed);
493  m_OnClosed.Invoke(this);
494  }
495 
496  //------------------------------------------------------------------------------------------------
497  protected void OnMenuBack()
498  {
499  if (m_bOpened)
500  CloseList();
501  }
502 
503  //------------------------------------------------------------------------------------------------
504  override int AddItem(string item, bool last = false, Managed data = null)
505  {
506  int i = super.AddItem(item, last, data);
507  UpdateName();
508  if (m_bOpened)
509  CreateEntries();
510 
511  return i;
512  }
513 
514  //------------------------------------------------------------------------------------------------
515  override void ClearAll()
516  {
517  super.ClearAll();
518  UpdateName();
519  if (m_bOpened)
520  CreateEntries();
521  }
522 
523  //------------------------------------------------------------------------------------------------
524  override void RemoveItem(int item, bool last = false)
525  {
526  super.RemoveItem(item, last);
527  UpdateName();
528  if (m_bOpened)
529  CreateEntries();
530  }
531 
532  //------------------------------------------------------------------------------------------------
533  private void OnElementSelected(SCR_ButtonTextComponent comp)
534  {
535  int i = m_aElementWidgets.Find(comp.m_wRoot);
536  if (i > -1)
537  {
538  SetCurrentItem(i, true, true);
539  if (m_wText)
540  m_wText.SetText(m_aElementNames[i]);
541  }
542 
543  CloseList();
544  m_OnChanged.Invoke(this, i);
545  }
546 
552  int GetElementWidgets(notnull array<Widget> elementWidgets)
553  {
554  foreach (Widget w: m_aElementWidgets)
555  elementWidgets.Insert(w);
556 
557  return elementWidgets.Count();
558  }
559 
560  //------------------------------------------------------------------------------------------------
561  bool IsOpened()
562  {
563  return m_bOpened;
564  }
565 
566  //------------------------------------------------------------------------------------------------
569  static SCR_ComboBoxComponent GetComboBoxComponent(string name, Widget parent, bool searchAllChildren = true)
570  {
571  auto comp = SCR_ComboBoxComponent.Cast(
572  SCR_WLibComponentBase.GetComponent(SCR_ComboBoxComponent, name, parent, searchAllChildren)
573  );
574  return comp;
575  }
576 };
577 
578 //------------------------------------------------------------------------------------------------
579 class SCR_ComboModalHandler : ScriptedWidgetEventHandler
580 {
581  protected SCR_ComboBoxComponent m_Owner;
582  protected ChimeraMenuBase m_OwnerMenu;
583 
584  ref ScriptInvoker m_OnModalClickOut = new ScriptInvoker();
585 
586  //------------------------------------------------------------------------------------------------
587  override bool OnModalClickOut(Widget modalRoot, int x, int y, int button)
588  {
589  m_OnModalClickOut.Invoke();
590  return true;
591  }
592 
593  //------------------------------------------------------------------------------------------------
594  override void HandlerDeattached(Widget w)
595  {
596  if (m_OwnerMenu)
597  m_OwnerMenu.m_OnUpdate.Remove(OnMenuUpdate);
598  }
599 
600  //------------------------------------------------------------------------------------------------
601  void SetupOwners(SCR_ComboBoxComponent owner, ChimeraMenuBase menu)
602  {
603  m_Owner = owner;
604  m_OwnerMenu = menu;
605 
606  if (m_OwnerMenu)
607  m_OwnerMenu.m_OnUpdate.Insert(OnMenuUpdate);
608  }
609 
610  //------------------------------------------------------------------------------------------------
611  protected void OnMenuUpdate(float tDelta)
612  {
613  // Scroll input
614  if (GetGame().GetInputManager().GetActionValue("MenuScrollVertical") != 0)
615  {
616  m_Owner.CloseList();
617  return;
618  }
619 
620  // Visible in hierarchy
621  if (!m_Owner.GetRootWidget().IsVisibleInHierarchy())
622  {
623  m_Owner.CloseList();
624  return;
625  }
626  }
627 };
ChimeraMenuBase
Constant variables used in various menus.
Definition: ChimeraMenuBase.c:70
SCR_ComboBoxComponent
Definition: SCR_ComboBoxComponent.c:1
m_InputManager
protected InputManager m_InputManager
Definition: SCR_BaseManualCameraComponent.c:15
PlaySound
SCR_ParticleContactComponentClass ScriptComponentClass PlaySound(IEntity owner, SCR_ParticleContactComponentClass prefabData, Contact contact)
Definition: SCR_ParticleContactComponent.c:38
m_wRoot
protected Widget m_wRoot
Definition: SCR_ScenarioFrameworkLayerTaskDefend.c:59
SCR_WLibComponentBase
Base class for all final Reforger interactive elements.
Definition: SCR_WLibComponentBase.c:4
GetGame
ArmaReforgerScripted GetGame()
Definition: game.c:1424
SCR_SoundEvent
Definition: SCR_SoundEvent.c:1
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition: SCR_RespawnBriefingComponent.c:17
SCR_ComboModalHandler
Definition: SCR_ComboBoxComponent.c:579
m_OnChanged
protected ref ScriptInvokerTabViewIndex m_OnChanged
Definition: SCR_TabViewComponent.c:64
Attribute
typedef Attribute
Post-process effect of scripted camera.
m_wContent
protected Widget m_wContent
Definition: SCR_InfoDisplay.c:64
UIColors
Definition: Constants.c:16
SCR_EventHandlerComponent
Definition: SCR_EventHandlerComponent.c:5
SCR_ButtonTextComponent
Definition: SCR_ButtonTextComponent.c:2
m_Workspace
protected WorkspaceWidget m_Workspace
Definition: SCR_EntitiesEditorUIComponent.c:13
SCR_MenuHelper
Definition: SCR_MenuHelper.c:15
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition: SCR_DestructionSynchronizationComponent.c:17
GetInputManager
protected InputManager GetInputManager()
Definition: SCR_BaseManualCameraComponent.c:65
data
Get all prefabs that have the spawner data
Definition: SCR_EntityCatalogManagerComponent.c:305
SCR_SelectionWidgetComponent
Definition: SCR_SelectionWidgetComponent.c:1
m_OwnerMenu
SCR_MapToolMenuUI m_OwnerMenu
Definition: SCR_MapToolMenuUI.c:11
m_Owner
SCR_AIGroupUtilityComponentClass m_Owner
m_wButton
protected ButtonWidget m_wButton
Definition: SCR_InventoryHitZonePointUI.c:393