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_LayerAutoEnterUIComponent.c
Go to the documentation of this file.
1
class
SCR_LayerAutoEnterUIComponent
:
SCR_BaseEditorUIComponent
2
{
3
[
Attribute
(defvalue:
"1"
,
desc
:
"How long it takes to toggle hovered entity automatically during entity transformation."
)]
4
protected
float
m_fAutoEnterDuration
;
5
6
[
Attribute
(defvalue:
"0.2"
, uiwidget:
UIWidgets
.Slider,
""
,
params
:
"0 1 0.01"
)]
7
protected
float
m_fAutoEnterDelay
;
8
9
protected
SCR_LayersEditorComponent
m_LayersManager
;
10
protected
SCR_PreviewEntityEditorComponent
m_PreviewEntityManager
;
11
protected
SCR_TransformingEditorComponent
m_TransformingManager
;
12
protected
SCR_HoverEditableEntityFilter
m_HoverFilter
;
13
protected
SCR_RadialProgressBarUIComponent
m_RadialProgressUI
;
14
protected
SCR_EditableEntityComponent
m_AutoEnterTarget
;
15
protected
float
m_fAutoEnterCharge
= -1;
16
protected
bool
m_bCanCharge
=
true
;
17
18
//------------------------------------------------------------------------------------------------
19
protected
void
OnTargetChange
(
SCR_EditableEntityComponent
target)
20
{
21
//--- Not editing anymore or the target was deleted, cancel charge
22
if
(!target || !
m_PreviewEntityManager
.IsEditing())
23
{
24
Clear
();
25
return
;
26
}
27
28
if
(!
m_bCanCharge
)
29
return
;
30
31
//--- Enter the layer only when hovering over its icon (i.e., delegate)
32
bool
isDelegate;
33
SCR_EditableEntityComponent
hoverEntity =
m_HoverFilter
.GetEntityUnderCursor(isDelegate);
34
if
(!isDelegate)
35
return
;
36
37
//--- Filter out incompatible entities
38
if
(hoverEntity)
39
{
40
hoverEntity =
m_LayersManager
.GetParentBelowCurrentLayer(hoverEntity);
41
if
(!hoverEntity)
42
return
;
43
44
//--- Cannot enter non-interactive entities or compatible slots (hovering snaps to them instead)
45
if
(!hoverEntity.
HasEntityFlag
(
EEditableEntityFlag
.LAYER) ||
m_PreviewEntityManager
.GetTargetInteraction() !=
EEditableEntityInteraction
.LAYER)
46
return
;
47
48
//--- Cannot enter into itself
49
if
(
m_TransformingManager
&&
m_TransformingManager
.IsEditing(hoverEntity))
50
return
;
51
}
52
53
//--- Start charging
54
if
(hoverEntity !=
m_AutoEnterTarget
)
55
{
56
m_AutoEnterTarget
= hoverEntity;
57
m_fAutoEnterCharge
= 0;
58
}
59
}
60
61
//------------------------------------------------------------------------------------------------
62
protected
void
Clear
()
63
{
64
m_fAutoEnterCharge
= -1;
65
m_AutoEnterTarget
= null;
66
GetWidget
().SetVisible(
false
);
67
}
68
69
//------------------------------------------------------------------------------------------------
70
protected
void
ResetGracePeriod
()
71
{
72
m_bCanCharge
=
true
;
73
}
74
75
//---- REFACTOR NOTE START: Using call later as input delay and also using hardcoded value there
76
77
//------------------------------------------------------------------------------------------------
78
protected
void
OnMenuUpdate
(
float
tDelta)
79
{
80
//--- Enter hovered entity automatically while editing
81
if
(
m_fAutoEnterCharge
>= 0)
82
{
83
//--- Chaaaaarge!
84
m_fAutoEnterCharge
+= tDelta;
85
86
if
(
m_fAutoEnterCharge
<
m_fAutoEnterDelay
)
87
return
;
88
89
GetWidget
().SetVisible(
true
);
90
91
//--- Update progress bar
92
if
(
m_RadialProgressUI
)
93
m_RadialProgressUI
.SetProgress(
Math
.InverseLerp(
m_fAutoEnterDelay
, 1,
m_fAutoEnterCharge
) /
m_fAutoEnterDuration
);
94
95
//--- Position the widget on the enetered layer
96
vector
worldPos;
97
if
(
m_AutoEnterTarget
.GetPos(worldPos))
98
{
99
vector
screenPos =
GetGame
().GetWorkspace().ProjWorldToScreen(worldPos,
m_AutoEnterTarget
.GetOwner().GetWorld());
100
FrameSlot
.SetPos(
GetWidget
(), screenPos[0], screenPos[1]);
101
}
102
103
//--- Charge complete
104
if
(
m_fAutoEnterCharge
>
m_fAutoEnterDuration
)
105
{
106
m_LayersManager
.ToggleCurrentLayer(
m_AutoEnterTarget
);
107
Clear
();
108
109
//--- Disable charging right after entering a layer, so it won't instantly start charging sub-layer if there is another icon under cursor
110
m_bCanCharge
=
false
;
111
GetGame
().GetCallqueue().CallLater(
ResetGracePeriod
, 100);
112
}
113
}
114
}
115
116
//---- REFACTOR NOTE END ----
117
118
//------------------------------------------------------------------------------------------------
119
override
protected
bool
IsUnique
()
120
{
121
return
false
;
122
}
123
124
//------------------------------------------------------------------------------------------------
125
override
void
HandlerAttachedScripted
(
Widget
w)
126
{
127
super.HandlerAttachedScripted(w);
128
129
m_LayersManager
=
SCR_LayersEditorComponent
.Cast(
SCR_LayersEditorComponent
.GetInstance(
SCR_LayersEditorComponent
,
true
));
130
m_HoverFilter
=
SCR_HoverEditableEntityFilter
.Cast(
SCR_HoverEditableEntityFilter
.GetInstance(
EEditableEntityState
.HOVER,
true
));
131
m_PreviewEntityManager
=
SCR_PreviewEntityEditorComponent
.Cast(
SCR_PreviewEntityEditorComponent
.GetInstance(
SCR_PreviewEntityEditorComponent
,
true
));
132
m_TransformingManager
=
SCR_TransformingEditorComponent
.Cast(
SCR_TransformingEditorComponent
.GetInstance(
SCR_TransformingEditorComponent
));
133
m_RadialProgressUI
=
SCR_RadialProgressBarUIComponent
.Cast(
SCR_WidgetTools
.FindHandlerInChildren(w,
SCR_RadialProgressBarUIComponent
));
134
135
m_PreviewEntityManager
.GetOnTargetChange().Insert(
OnTargetChange
);
136
137
MenuRootBase
menu =
GetMenu
();
138
if
(menu)
139
menu.
GetOnMenuUpdate
().Insert(
OnMenuUpdate
);
140
141
Clear
();
142
}
143
144
//------------------------------------------------------------------------------------------------
145
override
void
HandlerDeattached
(
Widget
w)
146
{
147
super.HandlerDeattached(w);
148
149
if
(
m_PreviewEntityManager
)
150
m_PreviewEntityManager
.GetOnTargetChange().Remove(
OnTargetChange
);
151
152
MenuRootBase
menu =
GetMenu
();
153
if
(menu)
154
menu.
GetOnMenuUpdate
().Remove(
OnMenuUpdate
);
155
}
156
}
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
GetMenu
SCR_RadialMenu GetMenu()
Definition
SCR_RadialMenuGameModeComponent.c:38
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
GetWidget
Widget GetWidget()
Definition
SCR_VonDisplay.c:162
FrameSlot
Definition
FrameSlot.c:13
Math
Definition
Math.c:13
MenuRootBase
Definition
MenuRootBase.c:11
MenuRootBase::GetOnMenuUpdate
ScriptInvoker GetOnMenuUpdate()
Definition
MenuRootBase.c:72
SCR_BaseEditorUIComponent
Definition
SCR_BaseEditorUIComponent.c:4
SCR_EditableEntityComponent
Definition
SCR_EditableEntityComponent.c:14
SCR_EditableEntityComponent::HasEntityFlag
bool HasEntityFlag(EEditableEntityFlag flag)
Definition
SCR_EditableEntityComponent.c:1663
SCR_HoverEditableEntityFilter
Definition
SCR_HoverEditableEntityFilter.c:7
SCR_LayerAutoEnterUIComponent
Definition
SCR_LayerAutoEnterUIComponent.c:2
SCR_LayerAutoEnterUIComponent::Clear
void Clear()
Definition
SCR_LayerAutoEnterUIComponent.c:62
SCR_LayerAutoEnterUIComponent::m_PreviewEntityManager
SCR_PreviewEntityEditorComponent m_PreviewEntityManager
Definition
SCR_LayerAutoEnterUIComponent.c:10
SCR_LayerAutoEnterUIComponent::m_fAutoEnterDuration
float m_fAutoEnterDuration
Definition
SCR_LayerAutoEnterUIComponent.c:4
SCR_LayerAutoEnterUIComponent::m_fAutoEnterDelay
float m_fAutoEnterDelay
Definition
SCR_LayerAutoEnterUIComponent.c:7
SCR_LayerAutoEnterUIComponent::m_AutoEnterTarget
SCR_EditableEntityComponent m_AutoEnterTarget
Definition
SCR_LayerAutoEnterUIComponent.c:14
SCR_LayerAutoEnterUIComponent::m_fAutoEnterCharge
float m_fAutoEnterCharge
Definition
SCR_LayerAutoEnterUIComponent.c:15
SCR_LayerAutoEnterUIComponent::m_RadialProgressUI
SCR_RadialProgressBarUIComponent m_RadialProgressUI
Definition
SCR_LayerAutoEnterUIComponent.c:13
SCR_LayerAutoEnterUIComponent::OnTargetChange
void OnTargetChange(SCR_EditableEntityComponent target)
Definition
SCR_LayerAutoEnterUIComponent.c:19
SCR_LayerAutoEnterUIComponent::HandlerAttachedScripted
override void HandlerAttachedScripted(Widget w)
Definition
SCR_LayerAutoEnterUIComponent.c:125
SCR_LayerAutoEnterUIComponent::m_TransformingManager
SCR_TransformingEditorComponent m_TransformingManager
Definition
SCR_LayerAutoEnterUIComponent.c:11
SCR_LayerAutoEnterUIComponent::ResetGracePeriod
void ResetGracePeriod()
Definition
SCR_LayerAutoEnterUIComponent.c:70
SCR_LayerAutoEnterUIComponent::m_bCanCharge
bool m_bCanCharge
Definition
SCR_LayerAutoEnterUIComponent.c:16
SCR_LayerAutoEnterUIComponent::IsUnique
bool IsUnique()
Definition
SCR_LayerAutoEnterUIComponent.c:119
SCR_LayerAutoEnterUIComponent::m_LayersManager
SCR_LayersEditorComponent m_LayersManager
Definition
SCR_LayerAutoEnterUIComponent.c:9
SCR_LayerAutoEnterUIComponent::m_HoverFilter
SCR_HoverEditableEntityFilter m_HoverFilter
Definition
SCR_LayerAutoEnterUIComponent.c:12
SCR_LayerAutoEnterUIComponent::HandlerDeattached
override void HandlerDeattached(Widget w)
Definition
SCR_LayerAutoEnterUIComponent.c:145
SCR_LayerAutoEnterUIComponent::OnMenuUpdate
void OnMenuUpdate(float tDelta)
Definition
SCR_LayerAutoEnterUIComponent.c:78
SCR_LayersEditorComponent
Definition
SCR_LayersEditorManager.c:12
SCR_PreviewEntityEditorComponent
Definition
SCR_PreviewEntityEditorComponent.c:13
SCR_RadialProgressBarUIComponent
Definition
SCR_RadialProgressBarUIComponent.c:2
SCR_TransformingEditorComponent
Definition
SCR_TransformingEditorComponent.c:34
SCR_WidgetTools
Definition
SCR_WidgetTools.c:2
UIWidgets
Definition
attributes.c:40
Widget
Definition
Widget.c:13
vector
Definition
vector.c:13
EEditableEntityFlag
EEditableEntityFlag
Unique flags of the entity.
Definition
EEditableEntityFlag.c:6
EEditableEntityState
EEditableEntityState
Definition
EEditableEntityState.c:38
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EEditableEntityInteraction
EEditableEntityInteraction
Type of suggested interaction when hovering edited entity on top of another entity.
Definition
EEditableEntityInteraction.c:6
scripts
Game
Editor
UI
Components
Common
SCR_LayerAutoEnterUIComponent.c
Generated by
1.17.0