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_CreateLayerWithSelectionContextAction.c
Go to the documentation of this file.
1
[
BaseContainerProps
(),
SCR_BaseContainerCustomTitleUIInfo
(
"m_Info"
)]
2
class
SCR_CreateLayerWithSelectionContextAction
:
SCR_BaseContextAction
3
{
4
protected
ref set<SCR_EditableEntityComponent>
m_EntitiesToMove
=
new
set<SCR_EditableEntityComponent>();
5
protected
SCR_EditableEntityCore
m_Core
;
6
protected
SCR_BaseEditableEntityFilter
m_SelectionFilter
;
7
protected
bool
m_bSelectionCanceled
;
8
9
10
override
bool
CanBeShown
(
SCR_EditableEntityComponent
hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities,
vector
cursorWorldPosition,
int
flags
)
11
{
12
if
(!
m_Core
)
13
{
14
m_Core
=
SCR_EditableEntityCore
.Cast(
SCR_EditableEntityCore
.GetInstance(
SCR_EditableEntityCore
));
15
if
(!
m_Core
)
16
return
false
;
17
}
18
19
if
(!
m_SelectionFilter
)
20
{
21
m_SelectionFilter
=
SCR_BaseEditableEntityFilter
.
GetInstance
(
EEditableEntityState
.SELECTED);
22
if
(!
m_SelectionFilter
)
23
return
false
;
24
}
25
26
SCR_LayersEditorComponent
layerManager =
SCR_LayersEditorComponent
.Cast(
SCR_LayersEditorComponent
.GetInstance(
SCR_LayersEditorComponent
));
27
if
(!layerManager || !layerManager.
IsEditingLayersEnabled
())
28
return
false
;
29
30
bool
hasValidEntities =
false
;
31
32
SCR_EditableEntityComponent
parent;
33
34
foreach
(
SCR_EditableEntityComponent
entity: selectedEntities)
35
{
36
if
(entity)
37
{
38
parent = entity.
GetParentEntity
();
39
break
;
40
}
41
}
42
43
EEditableEntityFlag
newLayerFlags;
44
newLayerFlags |=
EEditableEntityFlag
.LAYER;
45
int
count = selectedEntities.Count();
46
47
SCR_EditableEntityInteraction
interaction;
48
for
(
int
i = 0; i < count; i++)
49
{
50
interaction = selectedEntities[i].GetEntityInteraction();
51
if
(interaction && interaction.
CanCreateParentFor
(
EEditableEntityType
.GENERIC, newLayerFlags, parent, i == 0))
52
{
53
hasValidEntities =
true
;
54
break
;
55
}
56
}
57
58
59
return
hasValidEntities;
60
}
61
62
override
bool
CanBePerformed
(
SCR_EditableEntityComponent
hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities,
vector
cursorWorldPosition,
int
flags
)
63
{
64
return
true
;
65
}
66
override
void
Perform
(
SCR_EditableEntityComponent
hoveredEntity, notnull set<SCR_EditableEntityComponent> selectedEntities,
vector
cursorWorldPosition,
int
flags
,
int
param = -1)
67
{
68
SCR_LayersEditorComponent
layerManager =
SCR_LayersEditorComponent
.Cast(
SCR_LayersEditorComponent
.GetInstance(
SCR_LayersEditorComponent
));
69
if
(!layerManager)
return
;
70
71
72
//If selected the current layer the user is in
73
if
(selectedEntities.Contains(layerManager.
GetCurrentLayer
()))
74
{
75
selectedEntities.Clear();
76
selectedEntities.Insert(layerManager.
GetCurrentLayer
());
77
layerManager.
SetCurrentLayer
(layerManager.
GetCurrentLayer
().
GetParentEntity
());
78
}
79
80
EEditableEntityFlag
newLayerFlags;
81
newLayerFlags |=
EEditableEntityFlag
.LAYER;
82
SCR_EditableEntityComponent
parent = selectedEntities[0].
GetParentEntity
();
83
m_EntitiesToMove
.Clear();
84
int
count = selectedEntities.Count();
85
86
SCR_EditableEntityInteraction
interaction;
87
for
(
int
i = 0; i < count; i++)
88
{
89
interaction = selectedEntities[i].GetEntityInteraction();
90
if
(interaction && interaction.
CanCreateParentFor
(
EEditableEntityType
.GENERIC, newLayerFlags, parent, i == 0))
91
{
92
m_EntitiesToMove
.Insert(selectedEntities[i]);
93
}
94
}
95
96
m_Core
.Event_OnParentEntityChanged.Insert(
OnEditableParentChanged
);
97
m_SelectionFilter
.GetOnChanged().Insert(
OnSelectionChanged
);
98
99
layerManager.
CreateNewLayerWithSelected
(
m_EntitiesToMove
, cursorWorldPosition);
100
}
101
102
//Parent was changed so set these as selected
103
protected
void
OnEditableParentChanged
(
SCR_EditableEntityComponent
entity,
SCR_EditableEntityComponent
newParent,
SCR_EditableEntityComponent
prevParent)
104
{
105
int
index
=
m_EntitiesToMove
.Find(entity);
106
if
(
index
> -1)
107
{
108
m_EntitiesToMove
.Remove(
index
);
109
110
if
(
m_EntitiesToMove
.IsEmpty())
111
{
112
if
(
m_Core
)
113
m_Core
.Event_OnParentEntityChanged.Remove(
OnEditableParentChanged
);
114
if
(
m_SelectionFilter
)
115
m_SelectionFilter
.GetOnChanged().Remove(
OnSelectionChanged
);
116
117
m_SelectionFilter
.Add(newParent,
true
);
118
}
119
}
120
}
121
122
//If any selection is changed Remove the events
123
protected
void
OnSelectionChanged
(
EEditableEntityState
state, set<SCR_EditableEntityComponent> entitiesSelected, set<SCR_EditableEntityComponent> entitiesDeselected)
124
{
125
if
(
m_Core
)
126
m_Core
.Event_OnParentEntityChanged.Remove(
OnEditableParentChanged
);
127
if
(
m_SelectionFilter
)
128
m_SelectionFilter
.GetOnChanged().Remove(
OnSelectionChanged
);
129
}
130
131
};
flags
SCR_EAIThreatSectorFlags flags
Definition
AIControlComponentSerializer.c:16
BaseContainerProps
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
Definition
SCR_AIAnimationWaypoint.c:14
SCR_BaseContainerCustomTitleUIInfo
class SCR_ArsenalGameModeUIDataHolder SCR_BaseContainerCustomTitleUIInfo("m_UIInfo")
Definition
SCR_ArsenalManagerComponent.c:1752
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
SCR_BaseContextAction
Definition
SCR_BaseContextAction.c:8
SCR_BaseEditableEntityFilter
Definition
SCR_BaseEditableEntityFilter.c:14
SCR_BaseEditableEntityFilter::GetInstance
static SCR_BaseEditableEntityFilter GetInstance(EEditableEntityState state, bool showError=false)
Definition
SCR_BaseEditableEntityFilter.c:54
SCR_CreateLayerWithSelectionContextAction
Definition
SCR_CreateLayerWithSelectionContextAction.c:3
SCR_CreateLayerWithSelectionContextAction::Perform
override void Perform(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags, int param=-1)
Definition
SCR_CreateLayerWithSelectionContextAction.c:66
SCR_CreateLayerWithSelectionContextAction::m_Core
SCR_EditableEntityCore m_Core
Definition
SCR_CreateLayerWithSelectionContextAction.c:5
SCR_CreateLayerWithSelectionContextAction::CanBePerformed
override bool CanBePerformed(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags)
Definition
SCR_CreateLayerWithSelectionContextAction.c:62
SCR_CreateLayerWithSelectionContextAction::OnEditableParentChanged
void OnEditableParentChanged(SCR_EditableEntityComponent entity, SCR_EditableEntityComponent newParent, SCR_EditableEntityComponent prevParent)
Definition
SCR_CreateLayerWithSelectionContextAction.c:103
SCR_CreateLayerWithSelectionContextAction::m_SelectionFilter
SCR_BaseEditableEntityFilter m_SelectionFilter
Definition
SCR_CreateLayerWithSelectionContextAction.c:6
SCR_CreateLayerWithSelectionContextAction::m_bSelectionCanceled
bool m_bSelectionCanceled
Definition
SCR_CreateLayerWithSelectionContextAction.c:7
SCR_CreateLayerWithSelectionContextAction::OnSelectionChanged
void OnSelectionChanged(EEditableEntityState state, set< SCR_EditableEntityComponent > entitiesSelected, set< SCR_EditableEntityComponent > entitiesDeselected)
Definition
SCR_CreateLayerWithSelectionContextAction.c:123
SCR_CreateLayerWithSelectionContextAction::CanBeShown
override bool CanBeShown(SCR_EditableEntityComponent hoveredEntity, notnull set< SCR_EditableEntityComponent > selectedEntities, vector cursorWorldPosition, int flags)
Definition
SCR_CreateLayerWithSelectionContextAction.c:10
SCR_CreateLayerWithSelectionContextAction::m_EntitiesToMove
ref set< SCR_EditableEntityComponent > m_EntitiesToMove
Definition
SCR_CreateLayerWithSelectionContextAction.c:4
SCR_EditableEntityComponent
Definition
SCR_EditableEntityComponent.c:14
SCR_EditableEntityComponent::GetParentEntity
SCR_EditableEntityComponent GetParentEntity()
Definition
SCR_EditableEntityComponent.c:1154
SCR_EditableEntityCore
Definition
SCR_EditableEntityCore.c:20
SCR_EditableEntityInteraction
Definition
SCR_EditableEntityInteraction.c:3
SCR_EditableEntityInteraction::CanCreateParentFor
bool CanCreateParentFor(EEditableEntityType newLayerType, EEditableEntityFlag newLayerFlags, SCR_EditableEntityComponent parentEntity, bool CheckParentEntity=true)
Definition
SCR_EditableEntityInteraction.c:76
SCR_LayersEditorComponent
Definition
SCR_LayersEditorManager.c:12
SCR_LayersEditorComponent::GetCurrentLayer
SCR_EditableEntityComponent GetCurrentLayer()
Definition
SCR_LayersEditorManager.c:119
SCR_LayersEditorComponent::IsEditingLayersEnabled
bool IsEditingLayersEnabled()
Definition
SCR_LayersEditorManager.c:30
SCR_LayersEditorComponent::CreateNewLayerWithSelected
void CreateNewLayerWithSelected(notnull set< SCR_EditableEntityComponent > entities, vector worldPosition)
Definition
SCR_LayersEditorManager.c:127
SCR_LayersEditorComponent::SetCurrentLayer
void SetCurrentLayer(SCR_EditableEntityComponent entity)
Definition
SCR_LayersEditorManager.c:70
vector
Definition
vector.c:13
EEditableEntityType
EEditableEntityType
Defines type of SCR_EditableEntityComponent. Assigned automatically based on IEntity inheritance.
Definition
EEditableEntityType.c:6
EEditableEntityFlag
EEditableEntityFlag
Unique flags of the entity.
Definition
EEditableEntityFlag.c:6
EEditableEntityState
EEditableEntityState
Definition
EEditableEntityState.c:38
scripts
Game
Editor
Containers
Actions
ContextActions
SCR_CreateLayerWithSelectionContextAction.c
Generated by
1.17.0