Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_ContentBrowserEditorUIComponent.c
Go to the documentation of this file.
1
5{
6 [Attribute()]
7 protected ref array<ref SCR_ContentBrowserEditorCard> m_aCardPrefabs;
8 [Attribute("4", desc: "Speed value passed to WidgetAnimator, 1 = 1sec, higher = faster")]
9 private float m_iCardFadeInSpeed;
10
11 [Attribute(params: "layout")]
12 private ResourceName m_sCardPrefab;
13
14 [Attribute(params: "layout")]
15 private ResourceName m_sEmptyCardPrefab;
16
17 [Attribute(params: "layout")]
18 private ResourceName m_sUndefinedCardPrefab;
19
20 [Attribute("Title")]
21 protected string m_sHeaderWidgetName;
22
23 [Attribute("Filters")]
24 private string m_sLabelComponentWidget;
25
26 [Attribute("NoFilterResults")]
28
29 [Attribute(defvalue: "ResetFilterButton")]
30 protected string m_sResetFiltersButtonName;
31
32 [Attribute("EditBoxSearch")]
33 private string m_sSearchEditBoxName;
34
35 [Attribute("Scroll")]
36 private string m_sScrollLayoutName;
37
38 [Attribute("LoadingCircle")]
39 private string m_sContentLoadingWidgetName;
40
41 [Attribute(defvalue: "ToggleBetweenCardAndFilter")]
42 protected string m_sToggleCardFilterButton;
43
44 [Attribute(defvalue: "ToggleSearch")]
45 protected string m_sToggleSearchButton;
46
47 [Attribute(defvalue: "ActiveFilters")]
48 protected string m_sActiveFiltersName;
49
50 [Attribute(defvalue: "SelectButton")]
51 protected string m_sSelectCardButtonName;
52
53 [Attribute(defvalue: "ToggleButton")]
55
56 [Attribute("SOUND_E_OPENASSETBROWSER", UIWidgets.EditBox, "")]
57 protected string m_sSfxOnOpenDialog;
58
59 private SCR_EditableEntityCore m_EntityCore;
60 private SCR_BudgetEditorComponent m_BudgetManager;
61 private SCR_ContentBrowserEditorComponent m_ContentBrowserManager;
62 private SCR_PlacingEditorComponent m_PlacingManager;
63 private EditorBrowserDialogUI m_ContentBrowserDialog;
64
65 private SCR_ContentBrowserFiltersEditorUIComponent m_LabelsUIComponent;
66
68 protected int m_iCardFocusIndex;
70 protected bool m_bUsingGamePad;
71 protected bool m_bFocusingAssetCard;
72 protected bool m_bSearchIsToggled;
74 protected bool m_bAnimateEntries;
76
77 //Widget refs
83
87 protected ref array<string> m_aLocalizationKeys = {};
88
89 private ref ScriptInvoker m_LabelApplyCallback = new ScriptInvoker();
90 private ref ScriptInvoker m_ShowLoadingCircleCallback = new ScriptInvoker();
91
92 protected bool m_bCardSelected; //~ If card selected then no close Sfx is played
93
97 void OnCardLMB(Widget assetWidget)
98 {
100 if (!placingManager) return;
101
102 int entryIndex = GetEntryIndex(assetWidget);
103 int prefabID = m_ContentBrowserManager.GetFilteredPrefabID(entryIndex);
104
105 ResourceName prefab = m_ContentBrowserManager.GetResourceNamePrefabID(prefabID);
106
107 if (placingManager.SetSelectedPrefab(prefab, showBudgetMaxNotification: true))
108 {
109 // Only close window if prefab can be selected
111 m_bCardSelected = true;
112 }
113 }
114
119 {
121 if (m_ContentBrowserDialog)
122 m_ContentBrowserDialog.Close();
123 }
124
125 //---- REFACTOR NOTE START: Using hardcoded 20
126
127 override void ShowEntries(Widget contentWidget, int indexStart, int indexEnd)
128 {
129 WorkspaceWidget workspace = GetGame().GetWorkspace();
130
131 //Show no result indicator and hide grid
132 bool showNoResults = indexEnd == 0 && !m_bContentLoadingWidgetActive;
134 m_NoFilterResultsWidget.SetVisible(showNoResults);
135 contentWidget.SetVisible(!showNoResults);
136
137 ResourceName cardPrefab, defaultCardPrefab;
138 foreach (SCR_ContentBrowserEditorCard cardPrefabCandidate: m_aCardPrefabs)
139 {
140 if (cardPrefabCandidate.m_EntityType == EEditableEntityType.GENERIC)
141 {
142 defaultCardPrefab = cardPrefabCandidate.m_sPrefab;
143 break;
144 }
145 }
146
147 Widget firstCard;
148 SCR_EditableEntityUIInfo entityInfo;
149 ScriptCallQueue callQueue = GetGame().GetCallqueue();
150 for (int i = indexStart; i < indexEnd; i++)
151 {
152 int prefabID = m_ContentBrowserManager.GetFilteredPrefabID(i);
153 entityInfo = m_ContentBrowserManager.GetInfo(prefabID);
154
155 cardPrefab = m_sUndefinedCardPrefab;
156 if (entityInfo)
157 {
158 cardPrefab = defaultCardPrefab;
159 foreach (SCR_ContentBrowserEditorCard cardPrefabCandidate: m_aCardPrefabs)
160 {
161 if (cardPrefabCandidate.m_EntityType == entityInfo.GetEntityType())
162 {
163 cardPrefab = cardPrefabCandidate.m_sPrefab;
164 break;
165 }
166 }
167 }
168
169 //--- Create card
170 Widget assetWidget = workspace.CreateWidgets(cardPrefab, contentWidget);
171 if (!assetWidget) continue;
172
174 if (!assetCard)
175 {
176 Print("Asset widget is missing SCR_AssetCardFrontUIComponent!", LogLevel.ERROR);
177 assetWidget.RemoveFromHierarchy();
178 continue;
179 }
180
181 SCR_UIInfo blockingBudgetInfo;
182 array<ref SCR_EntityBudgetValue> budgetCosts = { };
183
184 if (!m_PlacingManager.HasPlacingFlag(EEditorPlacingFlags.CHARACTER_PLAYER))
185 m_ContentBrowserManager.CanPlace(prefabID, budgetCosts, blockingBudgetInfo);
186
187 //Set card focus
188 if (firstCard == null)
189 firstCard = assetCard.GetButtonWidget();
190
191 //if (prefabID == m_iCardFocusIndex)
192 // m_wFocusedCard = assetCard.GetButtonWidget();
193
194 assetCard.GetOnHover().Insert(OnCardHover);
195 assetCard.GetOnFocus().Insert(OnCardFocus);
196 assetCard.InitCard(prefabID, entityInfo, m_ContentBrowserManager.GetResourceNamePrefabID(prefabID), blockingBudgetInfo, m_ContentBrowserManager);
197 ButtonActionComponent.GetOnAction(assetWidget, true, 0).Insert(OnCardLMB);
198
200 {
201 assetWidget.SetOpacity(0);
202 int cardIndexOnPage = (i - indexStart);
203
204 callQueue.CallLater(AnimateCardFadeIn, cardIndexOnPage * 20, false, assetWidget);
205 }
206 }
207
208 //No focused card
209 if (m_wFocusedCard == null)
210 m_wFocusedCard = firstCard;
211
212 /* Currently overridden by paging focus
213 if (m_wFocusedCard)
214 {
215 m_FocusedIndex[0] = UniformGridSlot.GetRow(m_wFocusedCard);
216 m_FocusedIndex[1] = UniformGridSlot.GetColumn(m_wFocusedCard);
217 GetGame().GetWorkspace().SetFocusedWidget(m_wFocusedCard);
218 }
219 */
220
221 m_bAnimateEntries = false;
223 }
224
225 //---- REFACTOR NOTE END ----
226
227 override int GetEntryCount()
228 {
229 if (m_ContentBrowserManager && !m_bContentLoadingWidgetActive)
230 {
231 return m_ContentBrowserManager.GetFilteredPrefabCount();
232 }
233 else
234 {
235 return 0;
236 }
237 }
238
239 protected void AnimateCardFadeIn(Widget cardWidget)
240 {
241 AnimateWidget.Opacity(cardWidget, 1.0, m_iCardFadeInSpeed);
242 }
243
245 {
248 else
250
252 }
253
254 protected void SwitchToAssetCards()
255 {
256 if (!m_wFocusedCard)
257 return;
258
259 WorkspaceWidget workspace = GetGame().GetWorkspace();
260 if (!workspace)
261 return;
262
263 workspace.SetFocusedWidget(m_wFocusedCard);
264 }
265
271
272 protected void SwitchToFilters()
273 {
274 WorkspaceWidget workspace = GetGame().GetWorkspace();
275 if (!workspace)
276 return;
277
278 if (m_LabelsUIComponent)
279 workspace.SetFocusedWidget(m_LabelsUIComponent.GetLastFocusedLabel());
280 }
281
283 {
285 GamePadToggleSearch(false, false);
286 else
287 GamePadToggleSearch(true, false);
288 }
289
290 protected void GamePadToggleSearch(bool toggle, bool forceToggle = true)
291 {
292 WorkspaceWidget workspace = GetGame().GetWorkspace();
293 if (!workspace)
294 return;
295
296 Widget focusedWidget = workspace.GetFocusedWidget();
297 if (!forceToggle && (focusedWidget == m_SearchEditBox.GetRootWidget() || focusedWidget == m_SearchEditBox.m_wEditBox))
298 {
299 EditBoxWidget.Cast(m_SearchEditBox.m_wEditBox).ActivateWriteMode();
300 }
301 else if (m_bSearchIsToggled != toggle)
302 {
303 m_bSearchIsToggled = toggle;
304
306 {
307 workspace.SetFocusedWidget(m_SearchEditBox.GetRootWidget());
308 EditBoxWidget.Cast(m_SearchEditBox.m_wEditBox).ActivateWriteMode();
309 }
310 else
311 {
312 workspace.SetFocusedWidget(m_wFocusedCard);
313 }
314 }
315 }
316
317 protected void ResetSearch()
318 {
319 if (m_SearchEditBox)
320 {
321 m_SearchEditBox.SetValue(string.Empty);
322 }
323 m_ContentBrowserManager.SetCurrentSearch(string.Empty);
324 m_ContentBrowserManager.SetPageIndex(0);
325 m_ContentBrowserManager.SaveBrowserState();
326
327 if (m_bUsingGamePad)
328 GamePadToggleSearch(false);
329 }
330
331 protected void FilterEntries(bool resetPage = true, bool resetSearch = true, bool animateEntries = false)
332 {
333 // Search
334 if (resetSearch)
335 {
336 ResetSearch();
337 }
338 else
339 {
340 string searchInputText = m_SearchEditBox.GetValue().Trim();
341 if (!searchInputText.IsEmpty() && searchInputText != m_ContentBrowserManager.GetCurrentSearch())
342 {
343 m_ContentBrowserManager.SetCurrentSearch(searchInputText);
344 }
345 }
346
347 if (resetPage)
348 {
349 m_ContentBrowserManager.SetPageIndex(0);
350 }
351
352
353 m_ContentBrowserManager.FilterEntries();
354
355 // Set page
356 m_bAnimateEntries = animateEntries;
357
358 SetPage(m_ContentBrowserManager.GetPageIndex(), true);
359 }
360
361 protected void OnInputDeviceIsGamepadScripted(bool isGamepad)
362 {
363 m_bUsingGamePad = isGamepad;
364
366 OnCardHover(null, -1, true);
367 else
368 OnCardHover(null, -1, false);
369
370 if (isGamepad)
371 {
373 }
374 else
375 {
376 m_SelectCardButton.SetVisible(false);
377 m_ToggleFilterdButton.SetVisible(false);
378 }
379
380 if (!m_SearchEditBox)
381 return;
382
383 if (!m_bUsingGamePad)
384 {
385 GamePadToggleSearch(false);
386 }
387 else
388 {
389 WorkspaceWidget workspace = GetGame().GetWorkspace();
390 if (!workspace)
391 return;
392
393 workspace.SetFocusedWidget(m_SearchEditBox.GetRootWidget());
394 }
395 }
396
397 protected void OnCardHover(Widget card, int prefabIndex, bool hover)
398 {
399 if (!hover)
400 {
401 m_ContentBrowserManager.RefreshPreviewCost();
402 return;
403 }
404
406
407 m_ContentBrowserManager.RefreshPreviewCost(prefabIndex);
408
409 }
410
411 protected void OnCardFocus(Widget card, int prefabIndex, bool focus)
412 {
413 if (!m_bUsingGamePad) return;
414
415 m_bFocusingAssetCard = focus;
417
419 {
420 m_wToggleCardFilterButton.SetLabel("#AR-Editor_ContentBrowser_SwitchToFilters");
421 }
422 else
423 {
424 m_wToggleCardFilterButton.SetLabel("#AR-Editor_ContentBrowser_SwitchToCards");
425 m_ContentBrowserManager.RefreshPreviewCost();
426 return;
427 }
428
429 if (card)
430 {
431 m_wFocusedCard = card;
432 m_iCardFocusIndex = prefabIndex;
433 m_ContentBrowserManager.RefreshPreviewCost(prefabIndex);
434 }
435 }
436
437 protected void OnSearchFocusChanged(SCR_EditBoxComponent editBoxComponent, EditBoxWidget editBoxWidget, bool focus)
438 {
439 if (focus != m_bSearchIsToggled)
440 m_bSearchIsToggled = focus
441 }
442
443 protected void OnSearchConfirmed(SCR_EditBoxComponent editBox, string text)
444 {
445 string search = text.Trim();
446 m_ContentBrowserManager.SetCurrentSearch(search);
447
448 FilterEntries(true, false, true);
449
450 //If using gamepad make sure search box is no longer selected
452 GamePadToggleSearch(false);
453 }
454
455 //~ After Browser state is loaded
457 {
458 m_bAnimateEntries = true;
459 SetPage(m_ContentBrowserManager.GetPageIndex(), true);
460 }
461
462 //~ After Browser state has reset filters
463 protected void OnBrowserStateCleared()
464 {
465 m_SearchEditBox.SetValue(m_ContentBrowserManager.GetCurrentSearch());
466
468 }
469
470 protected void OnMenuClosed()
471 {
472 if (m_ContentBrowserManager)
473 {
474 m_ContentBrowserManager.OnMenuClosed();
475 }
476 }
477
478 protected void OnResetClicked()
479 {
480 m_LabelsUIComponent.OnResetClicked();
481 m_ContentBrowserManager.ResetBrowserState(false);
482 }
483
484 protected void OnShowLoadingCircle(bool state = true)
485 {
487 {
488 return;
489 }
490 m_ContentLoadingVisual.SetVisible(state);
492
493 RefreshPage();
494
495 m_ContentBrowserManager.SetSaveStateTabsEnabled(!state);
496 }
497
498 protected void OnApplyLabelChanges()
499 {
500 OnShowLoadingCircle(false);
501 FilterEntries(true, false, true);
502 }
503
504 protected void InitializeLabels()
505 {
506 Widget labelsWidget = GetWidget().FindAnyWidget(m_sLabelComponentWidget);
507 if (!labelsWidget) return;
508
509 m_LabelsUIComponent = SCR_ContentBrowserFiltersEditorUIComponent.Cast(labelsWidget.FindHandler(SCR_ContentBrowserFiltersEditorUIComponent));
510 if (!m_LabelsUIComponent) return;
511
512 m_LabelsUIComponent.SetContentBrowserCallbacks(m_ShowLoadingCircleCallback, m_LabelApplyCallback);
513
514 Widget activeFilters = GetWidget().FindAnyWidget(m_sActiveFiltersName);
515 if (activeFilters)
516 {
518
519 if (activeFilterComponent)
520 activeFilterComponent.Init(m_LabelsUIComponent);
521 }
522 }
523
524 //~ Returns the UI Info of highest ordered label (in the highest ordered group)
525 protected SCR_UIInfo GetHighestOrderedLabelUIInfo(notnull array<EEditableEntityLabel> labels)
526 {
527 EEditableEntityLabelGroup groupLabel;
528
529 int newLabelOrder;
530 int newLabelGroupOrder;
531
532 int lowestGroupOrder = int.MAX;
533 int lowestLabelOrder = int.MAX;
534
535 EEditableEntityLabel highestOrderedLabel;
536
537 foreach (EEditableEntityLabel label: labels)
538 {
539 m_ContentBrowserManager.GetLabelGroupType(label, groupLabel);
540 newLabelGroupOrder = m_ContentBrowserManager.GetLabelGroupOrder(groupLabel);
541
542 if (newLabelGroupOrder <= lowestGroupOrder)
543 {
544 newLabelOrder = m_ContentBrowserManager.GetLabelOrderInGroup(label);
545
546 if (newLabelOrder < lowestLabelOrder)
547 {
548 lowestGroupOrder = newLabelGroupOrder;
549 lowestLabelOrder = newLabelOrder;
550 highestOrderedLabel = label;
551 }
552 }
553 }
554
555 SCR_UIInfo uiInfo;
556 m_ContentBrowserManager.GetLabelUIInfo(highestOrderedLabel, uiInfo);
557 return uiInfo;
558 }
559
560 protected override bool IsUnique()
561 {
562 return true;
563 }
564
565 protected override void OnButtonPrev()
566 {
567 int previousPageIndex = m_iCurrentPage - 1;
568 if (SetPage(previousPageIndex))
569 {
570 m_ContentBrowserManager.SetPageIndex(previousPageIndex);
571 }
572 }
573
574 protected override void OnButtonNext()
575 {
576 int nextPageIndex = m_iCurrentPage + 1;
577 if (SetPage(nextPageIndex))
578 {
579 m_ContentBrowserManager.SetPageIndex(nextPageIndex);
580 }
581 }
582
583 override protected void HandlerAttachedScripted(Widget w)
584 {
585 super.HandlerAttachedScripted(w);
586
587 Widget toggleBetweenCardAndFilter = w.FindAnyWidget(m_sToggleCardFilterButton);
588
589 if (toggleBetweenCardAndFilter)
590 {
591 ButtonActionComponent.GetOnAction(toggleBetweenCardAndFilter, false, 0).Insert(ToggleBetweenCardsAndFilters);
592 m_wToggleCardFilterButton = SCR_InputButtonComponent.Cast(toggleBetweenCardAndFilter.FindHandler(SCR_InputButtonComponent));
593 }
594
595 // Disable budget preview update during loading, prevent OnCardHover callbacks during init
597
598 if (SCR_Global.IsEditMode()) return;
599
601 if (!m_EntityCore)
602 return;
603
605 if (!m_ContentBrowserManager)
606 return;
607
608 m_ContentBrowserManager.SetPageEntryCount(GetRows() * GetColumns());
609
610 m_PlacingManager = SCR_PlacingEditorComponent.Cast(SCR_PlacingEditorComponent.GetInstance(SCR_PlacingEditorComponent, true, true));
611 m_BudgetManager = SCR_BudgetEditorComponent.Cast(SCR_BudgetEditorComponent.GetInstance(SCR_BudgetEditorComponent, false, true));
612
613 m_ContentBrowserDialog = EditorBrowserDialogUI.Cast(GetMenu());
614 m_ContentBrowserDialog.GetOnMenuHide().Insert(OnMenuClosed);
615
617
620
621 Widget resetFiltersButton = w.FindAnyWidget(m_sResetFiltersButtonName);
622 if (resetFiltersButton)
623 {
624 ButtonActionComponent.GetOnAction(resetFiltersButton, false, 0).Insert(OnResetClicked);
625 }
626
627 m_SearchEditBox = SCR_EditBoxComponent.GetEditBoxComponent(m_sSearchEditBoxName, w, true);
628 if (m_SearchEditBox)
629 {
630 m_SearchEditBox.m_OnConfirm.Insert(OnSearchConfirmed);
631 m_SearchEditBox.m_OnFocusChangedEditBox.Insert(OnSearchFocusChanged);
632
633 if (m_ContentBrowserManager.GetCurrentSearch())
634 {
635 m_SearchEditBox.SetValue(m_ContentBrowserManager.GetCurrentSearch());
636 }
637 }
638
639 m_ContentLoadingVisual = w.FindAnyWidget(m_sContentLoadingWidgetName);
641 Print("'SCR_ContentBrowserEditorUIComponent' cannot find 'm_ContentLoadingVisual'!", LogLevel.WARNING);
642
643 m_ShowLoadingCircleCallback.Insert(OnShowLoadingCircle);
644 m_LabelApplyCallback.Insert(OnApplyLabelChanges);
645
649
650 //Input device changed
651 OnInputDeviceIsGamepadScripted(!GetGame().GetInputManager().IsUsingMouseAndKeyboard());
652 GetGame().OnInputDeviceIsGamepadInvoker().Insert(OnInputDeviceIsGamepadScripted);
653
655
656 if (m_ContentBrowserManager.GetContentBrowserDisplayConfig())
657 {
658 string header = m_ContentBrowserManager.GetContentBrowserDisplayConfig().GetHeader();
659
660 if (header != string.Empty)
661 {
662 TextWidget headerWidget = TextWidget.Cast(w.FindAnyWidget(m_sHeaderWidgetName));
663
664 if (headerWidget)
665 headerWidget.SetText(header);
666 }
667 }
668
669 m_ContentBrowserManager.GetOnBrowserEntriesFiltered().Insert(OnBrowserEntriesFiltered);
670 m_ContentBrowserManager.GetOnBrowserStateCleared().Insert(OnBrowserStateCleared);
671 m_ContentBrowserManager.RefreshPreviewCost();
672
673 SCR_UISoundEntity.SoundEvent(m_sSfxOnOpenDialog, true);
674
675 m_bAnimateEntries = true;
676
677 SetPage(m_ContentBrowserManager.GetPageIndex());
678
679 if (m_BudgetManager)
680 m_BudgetManager.DemandBudgetUpdateFromServer();
681 }
682
683 override protected void HandlerDeattached(Widget w)
684 {
685 super.HandlerDeattached(w);
686
687 //Input device changed
688 GetGame().OnInputDeviceIsGamepadInvoker().Remove(OnInputDeviceIsGamepadScripted);
689
690 if (SCR_Global.IsEditMode()) return;
691
692 m_ShowLoadingCircleCallback.Remove(OnShowLoadingCircle);
693 m_LabelApplyCallback.Remove(OnApplyLabelChanges);
694
695 m_ContentBrowserDialog.GetOnMenuHide().Remove(OnMenuClosed);
696
697 if (m_ContentBrowserManager)
698 {
699 m_ContentBrowserManager.SetExtendedEntity(null);
700
701 //~ State loading
702 m_ContentBrowserManager.GetOnBrowserEntriesFiltered().Remove(OnBrowserEntriesFiltered);
703 m_ContentBrowserManager.GetOnBrowserStateCleared().Remove(OnBrowserStateCleared);
704 }
705
706 if (m_SearchEditBox)
707 {
708 m_SearchEditBox.m_OnConfirm.Remove(OnSearchConfirmed);
709 }
710 }
711};
712
715{
716 [Attribute(uiwidget: UIWidgets.ComboBox, enums: ParamEnumArray.FromEnum(EEditableEntityType))]
717 EEditableEntityType m_EntityType;
718
719 [Attribute(params: "layout")]
720 ResourceName m_sPrefab;
721};
EEditableEntityLabel
EEditableEntityLabelGroup
EEditorPlacingFlags
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
InputManager GetInputManager()
class SCR_CampaignHintStorage SCR_BaseContainerCustomTitleEnum(EHint, "m_eHintId")
SCR_RadialMenu GetMenu()
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Widget GetWidget()
static WidgetAnimationOpacity Opacity(Widget widget, float targetValue, float speed, bool toggleVisibility=false)
Component to execute action when the button or its shortcut is pressed.
sealed bool SetPage(int page, bool isRefresh=false)
void Init(SCR_ContentBrowserFiltersEditorUIComponent contentBrowserFilterUiComponent)
void GamePadToggleSearch(bool toggle, bool forceToggle=true)
void OnSearchConfirmed(SCR_EditBoxComponent editBox, string text)
void OnCardHover(Widget card, int prefabIndex, bool hover)
SCR_UIInfo GetHighestOrderedLabelUIInfo(notnull array< EEditableEntityLabel > labels)
void OnCardFocus(Widget card, int prefabIndex, bool focus)
void FilterEntries(bool resetPage=true, bool resetSearch=true, bool animateEntries=false)
override void ShowEntries(Widget contentWidget, int indexStart, int indexEnd)
void OnSearchFocusChanged(SCR_EditBoxComponent editBoxComponent, EditBoxWidget editBoxWidget, bool focus)
ref array< ref SCR_ContentBrowserEditorCard > m_aCardPrefabs
void SetContentBrowserCallbacks(ScriptInvoker showLoadingCallback, ScriptInvoker labelApplyCallback)
static SCR_EditBoxComponent GetEditBoxComponent(string name, Widget parent, bool searchAllChildren=true)
EEditableEntityType GetEntityType()
static bool IsEditMode()
Definition Functions.c:1566
bool SetSelectedPrefab(ResourceName prefab="", bool onConfirm=false, bool showBudgetMaxNotification=true, set< SCR_EditableEntityComponent > recipients=null, SCR_BaseEditorAction sourceAction=null)
ScriptCallQueue Class provide "lazy" calls - when we don't want to execute function immediately but l...
Definition tools.c:53
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
Definition LogLevel.c:14
EEditableEntityType
Defines type of SCR_EditableEntityComponent. Assigned automatically based on IEntity inheritance.
SCR_FieldOfViewSettings Attribute
ScriptInvokerBase< func > ScriptInvoker
Definition tools.c:134