Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_EditableEntityUIRuleTracker.c
Go to the documentation of this file.
1
9{
12
13 //------------------------------------------------------------------------------------------------
15 {
16 return m_Rule;
17 }
18
19 //------------------------------------------------------------------------------------------------
21 {
22 return (entity.GetEntityStates() | m_SlotManager.GetForcedStates()) & m_Rule.GetStates();
23 }
24
25 //------------------------------------------------------------------------------------------------
27 {
28 if (!HasState(entity))
29 return;
30
31 SCR_EditableEntityBaseSlotUIComponent entitySlot = m_SlotManager.FindSlot(entity, true);
32 if (!entitySlot)
33 return;
34
35 entitySlot.CreateWidget(entity, m_Rule);
36 }
37
38 //------------------------------------------------------------------------------------------------
39 protected void OnChanged(EEditableEntityState state, set<SCR_EditableEntityComponent> entitiesInsert, set<SCR_EditableEntityComponent> entitiesRemove)
40 {
41 if (entitiesRemove)
42 {
43 foreach (SCR_EditableEntityComponent entity: entitiesRemove)
44 {
45 //--- If some other state is active, don't delete
46 if (HasState(entity))
47 continue;
48
49 SCR_EditableEntityBaseSlotUIComponent entitySlot = m_SlotManager.FindSlot(entity);
50 if (!entitySlot)
51 continue;
52
53 entitySlot.DeleteWidget(m_Rule);
54 m_SlotManager.DeleteSlot(entity);
55 }
56 }
57 if (entitiesInsert)
58 {
59 foreach (SCR_EditableEntityComponent entity: entitiesInsert)
60 {
61 SCR_EditableEntityBaseSlotUIComponent entitySlot = m_SlotManager.FindSlot(entity, true);
62 if (entitySlot)
63 entitySlot.CreateWidget(entity, m_Rule);
64 }
65 }
66 }
67
68 //------------------------------------------------------------------------------------------------
70 {
72 if (!filterManager)
73 return;
74
75 m_Rule = rule;
76 m_SlotManager = slotManager;
77
78 //--- Register entities
79 array<int> states = {};
80 m_Rule.GetStatesArray(states);
81 foreach (EEditableEntityState state: states)
82 {
83 SCR_BaseEditableEntityFilter filter = filterManager.GetFilter(state);
84 if (!filter)
85 continue;
86
87 filter.GetOnChanged().Insert(OnChanged);
88
89 if (canAddAllEntities)
90 {
91 set<SCR_EditableEntityComponent> entities = new set<SCR_EditableEntityComponent>;
92 filter.GetEntities(entities);
93 OnChanged(state, entities, null);
94 }
95 }
96 }
97
98 //------------------------------------------------------------------------------------------------
100 {
102 if (!filterManager)
103 return;
104
105 array<int> states = {};
106 m_Rule.GetStatesArray(states);
107 foreach (EEditableEntityState state: states)
108 {
109 SCR_BaseEditableEntityFilter filter = filterManager.GetFilter(state);
110 if (!filter)
111 continue;
112
113 if (filter && filter.GetOnChanged())
114 filter.GetOnChanged().Remove(OnChanged);
115 }
116 }
117};
ScriptInvokerBase< SCR_BaseEditableEntityFilter_OnChange > GetOnChanged()
int GetEntities(out set< SCR_EditableEntityComponent > entities, bool includeChildren=false, bool evaluate=true)
Widget CreateWidget(SCR_EditableEntityUIInfo info, SCR_EntitiesEditorUIRule rule)
SCR_EditableEntitySlotManagerUIComponent m_SlotManager
bool HasState(SCR_EditableEntityComponent entity)
void SCR_EditableEntityUIRuleTracker(SCR_EntitiesEditorUIRule rule, SCR_EditableEntitySlotManagerUIComponent slotManager, bool canAddAllEntities)
void OnChanged(EEditableEntityState state, set< SCR_EditableEntityComponent > entitiesInsert, set< SCR_EditableEntityComponent > entitiesRemove)
void AddEntity(SCR_EditableEntityComponent entity)
SCR_BaseEditableEntityFilter GetFilter(EEditableEntityState state, bool showError=false)
EEditableEntityState