Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_EditableEntityUIRuleTracker.c
Go to the documentation of this file.
1
8
class
SCR_EditableEntityUIRuleTracker
9
{
10
protected
SCR_EntitiesEditorUIRule
m_Rule
;
11
protected
SCR_EditableEntitySlotManagerUIComponent
m_SlotManager
;
12
13
//------------------------------------------------------------------------------------------------
14
SCR_EntitiesEditorUIRule
GetRule
()
15
{
16
return
m_Rule
;
17
}
18
19
//------------------------------------------------------------------------------------------------
20
bool
HasState
(
SCR_EditableEntityComponent
entity)
21
{
22
return
(entity.
GetEntityStates
() |
m_SlotManager
.GetForcedStates()) &
m_Rule
.GetStates();
23
}
24
25
//------------------------------------------------------------------------------------------------
26
void
AddEntity
(
SCR_EditableEntityComponent
entity)
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
//------------------------------------------------------------------------------------------------
69
void
SCR_EditableEntityUIRuleTracker
(
SCR_EntitiesEditorUIRule
rule,
SCR_EditableEntitySlotManagerUIComponent
slotManager,
bool
canAddAllEntities)
70
{
71
SCR_EntitiesManagerEditorComponent
filterManager =
SCR_EntitiesManagerEditorComponent
.Cast(
SCR_EntitiesManagerEditorComponent
.GetInstance(
SCR_EntitiesManagerEditorComponent
,
true
));
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
//------------------------------------------------------------------------------------------------
99
void
~SCR_EditableEntityUIRuleTracker
()
100
{
101
SCR_EntitiesManagerEditorComponent
filterManager =
SCR_EntitiesManagerEditorComponent
.Cast(
SCR_EntitiesManagerEditorComponent
.GetInstance(
SCR_EntitiesManagerEditorComponent
));
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
};
SCR_BaseEditableEntityFilter
Definition
SCR_BaseEditableEntityFilter.c:14
SCR_BaseEditableEntityFilter::GetOnChanged
ScriptInvokerBase< SCR_BaseEditableEntityFilter_OnChange > GetOnChanged()
Definition
SCR_BaseEditableEntityFilter.c:220
SCR_BaseEditableEntityFilter::GetEntities
int GetEntities(out set< SCR_EditableEntityComponent > entities, bool includeChildren=false, bool evaluate=true)
Definition
SCR_BaseEditableEntityFilter.c:139
SCR_EditableEntityBaseSlotUIComponent
Definition
SCR_EditableEntityBaseSlotUIComponent.c:7
SCR_EditableEntityBaseSlotUIComponent::CreateWidget
Widget CreateWidget(SCR_EditableEntityUIInfo info, SCR_EntitiesEditorUIRule rule)
Definition
SCR_EditableEntityBaseSlotUIComponent.c:33
SCR_EditableEntityBaseSlotUIComponent::DeleteWidget
void DeleteWidget(SCR_EntitiesEditorUIRule rule)
Definition
SCR_EditableEntityBaseSlotUIComponent.c:108
SCR_EditableEntityComponent
Definition
SCR_EditableEntityComponent.c:14
SCR_EditableEntityComponent::GetEntityStates
EEditableEntityState GetEntityStates()
Definition
SCR_EditableEntityComponent.c:1598
SCR_EditableEntitySlotManagerUIComponent
Definition
SCR_EditableEntitySlotManagerUIComponent.c:2
SCR_EditableEntityUIRuleTracker::~SCR_EditableEntityUIRuleTracker
void ~SCR_EditableEntityUIRuleTracker()
Definition
SCR_EditableEntityUIRuleTracker.c:99
SCR_EditableEntityUIRuleTracker::m_SlotManager
SCR_EditableEntitySlotManagerUIComponent m_SlotManager
Definition
SCR_EditableEntityUIRuleTracker.c:11
SCR_EditableEntityUIRuleTracker::HasState
bool HasState(SCR_EditableEntityComponent entity)
Definition
SCR_EditableEntityUIRuleTracker.c:20
SCR_EditableEntityUIRuleTracker::m_Rule
SCR_EntitiesEditorUIRule m_Rule
Definition
SCR_EditableEntityUIRuleTracker.c:10
SCR_EditableEntityUIRuleTracker::SCR_EditableEntityUIRuleTracker
void SCR_EditableEntityUIRuleTracker(SCR_EntitiesEditorUIRule rule, SCR_EditableEntitySlotManagerUIComponent slotManager, bool canAddAllEntities)
Definition
SCR_EditableEntityUIRuleTracker.c:69
SCR_EditableEntityUIRuleTracker::OnChanged
void OnChanged(EEditableEntityState state, set< SCR_EditableEntityComponent > entitiesInsert, set< SCR_EditableEntityComponent > entitiesRemove)
Definition
SCR_EditableEntityUIRuleTracker.c:39
SCR_EditableEntityUIRuleTracker::AddEntity
void AddEntity(SCR_EditableEntityComponent entity)
Definition
SCR_EditableEntityUIRuleTracker.c:26
SCR_EditableEntityUIRuleTracker::GetRule
SCR_EntitiesEditorUIRule GetRule()
Definition
SCR_EditableEntityUIRuleTracker.c:14
SCR_EntitiesEditorUIRule
Definition
SCR_EditableEntityUIRule.c:9
SCR_EntitiesManagerEditorComponent
Definition
SCR_EntitiesManagerEditorComponent.c:14
SCR_EntitiesManagerEditorComponent::GetFilter
SCR_BaseEditableEntityFilter GetFilter(EEditableEntityState state, bool showError=false)
Definition
SCR_EntitiesManagerEditorComponent.c:34
EEditableEntityState
EEditableEntityState
Definition
EEditableEntityState.c:38
scripts
Game
Editor
Containers
EditableEntityUI
SCR_EditableEntityUIRuleTracker.c
Generated by
1.17.0