Dayz Explorer 1.28.160049
Loading...
Searching...
No Matches
scriptconsolecameratab.c
Go to the documentation of this file.
2{
3 static float m_CurrentFOV;
4 static float m_CurrentFocusDistance;
5 static float m_CurrentFocusLength;
6 static float m_CurrentFocusLengthNear;
7 static float m_CurrentBlur;
8 static float m_CurrentFocusDepthOffset;
9
10 static void SetDefaultValues()
11 {
12 m_CurrentFOV = 1.0;
13 m_CurrentFocusDistance = 0.0;
14 m_CurrentFocusLength = -1.0;
15 m_CurrentFocusLengthNear = -1.0;
16 m_CurrentBlur = 0.0;
17 m_CurrentFocusDepthOffset = 1.0;
18 }
19}
20
22static ScriptConsoleCameraValues GetScriptConsoleValues()
23{
27}
28
30{
37
38 protected TextWidget m_FOVValue;
39 protected EditBoxWidget m_FOVEditbox;
40
41 protected TextWidget m_FocusDistanceValue;
42 protected EditBoxWidget m_FocusDistanceEditbox;
43
44 protected TextWidget m_FocusLengthValue;
45 protected EditBoxWidget m_FocusLengthEditbox;
46
47 protected TextWidget m_FocusLengthNearValue;
48 protected EditBoxWidget m_FocusLengthNearEditbox;
49
50 protected TextWidget m_BlurValue;
51 protected EditBoxWidget m_BlurEditbox;
52
53 protected TextWidget m_FocusDepthOffsetValue;
54 protected EditBoxWidget m_FocusDepthOffsetEditbox;
55
56 protected ButtonWidget m_ResetDOFButton;
57 protected EditBoxWidget m_DOFPresetEditbox;
58
59 protected Widget m_DOFPresetsPanel;
60 protected Widget m_DOFPresetsBtns;
61 protected ButtonWidget m_DOFShowPresetsBtn;
62 protected TextWidget m_DOFShowPresetsBtnLabel;
63 protected ButtonWidget m_DOFSavePrefabBtn;
64 protected ButtonWidget m_DOFDeletePrefabBtn;
65 protected ButtonWidget m_DOFLoadPrefabBtn;
66
67 protected FreeDebugCamera m_FreeDebugCamera;
68 protected bool m_MouseMovementEnabled;
69 protected bool m_DOFPresetsVisible;
70 protected bool m_IsCTRLPressed;
71 protected bool m_IsCAPSPressed;
72 protected bool m_IsReturnPressed;
73 protected bool m_ValueEditboxMode;
74 protected float m_ValueEditModeTime;
75 protected bool m_FirstInit;
77 protected ref ScriptConsolePresetsList m_DOFPresetsList;
78 protected bool m_CanUseMovement;
79
80 void ScriptConsoleCameraTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent = null)
81 {
82 m_FreeDebugCamera = FreeDebugCamera.GetInstance();
83
84 m_FOVSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderFOVPanel"), m_FreeDebugCamera.GetCurrentFOV(), this, false, 0.001, 1.0);
85 m_FocusDistanceSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderFocusDistancePanel"), GetScriptConsoleValues().m_CurrentFocusDistance, this, false, 0.0, 1000.0);
86
87 m_FocusLengthSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderFocusLengthPanel"), GetScriptConsoleValues().m_CurrentFocusLength, this, false, -1.0, 10000.0);
88 m_FocusLengthSelector.SetStep(0.0001);
89
90 m_FocusLengthNearSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderFocusLengthNearPanel"), GetScriptConsoleValues().m_CurrentFocusLengthNear, this, false, -1.0, 10000.0);
91 m_FocusLengthNearSelector.SetStep(0.0001);
92
93 m_BlurSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderBlurPanel"), GetScriptConsoleValues().m_CurrentBlur, this, false, 0.0, 32.0);
94 m_FocusDepthOffsetSelector = new ScriptConsoleSelector(root.FindAnyWidget("SliderFocusDepthOffsetPanel"), GetScriptConsoleValues().m_CurrentFocusDepthOffset, this, false, 0.0, 1000.0);
95
96 m_FOVSelector.m_OptionChanged.Insert(UpdateFOV);
97 m_FocusDistanceSelector.m_OptionChanged.Insert(UpdateFocusDistance);
98 m_FocusLengthSelector.m_OptionChanged.Insert(UpdateFocusLength);
100 m_BlurSelector.m_OptionChanged.Insert(UpdateBlur);
102
103 m_FOVValue = TextWidget.Cast(root.FindAnyWidget("SliderFOVValue"));
104 m_FOVEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderFOVEditbox"));
105
106 m_FocusDistanceValue = TextWidget.Cast(root.FindAnyWidget("SliderFocusDistanceValue"));
107 m_FocusDistanceEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderFocusDistanceEditbox"));
108
109 m_FocusLengthValue = TextWidget.Cast(root.FindAnyWidget("SliderFocusLengthValue"));
110 m_FocusLengthEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderFocusLengthEditbox"));
111
112 m_FocusLengthNearValue = TextWidget.Cast(root.FindAnyWidget("SliderFocusLengthNearValue"));
113 m_FocusLengthNearEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderFocusLengthNearEditbox"));
114
115 m_BlurValue = TextWidget.Cast(root.FindAnyWidget("SliderBlurValue"));
116 m_BlurEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderBlurEditbox"));
117
118 m_FocusDepthOffsetValue = TextWidget.Cast(root.FindAnyWidget("SliderFocusDepthOffsetValue"));
119 m_FocusDepthOffsetEditbox = EditBoxWidget.Cast(root.FindAnyWidget("SliderFocusDepthOffsetEditbox"));
120
121 m_ResetDOFButton = ButtonWidget.Cast(root.FindAnyWidget("ResetDOFButton"));
122
123 m_FOVValue.SetText(GetScriptConsoleValues().m_CurrentFOV.ToString());
124 m_FocusDistanceValue.SetText(GetScriptConsoleValues().m_CurrentFocusDistance.ToString());
125 m_FocusLengthValue.SetText(GetScriptConsoleValues().m_CurrentFocusLength.ToString());
126 m_FocusLengthNearValue.SetText(GetScriptConsoleValues().m_CurrentFocusLengthNear.ToString());
127 m_BlurValue.SetText(GetScriptConsoleValues().m_CurrentBlur.ToString());
128 m_FocusDepthOffsetValue.SetText(GetScriptConsoleValues().m_CurrentFocusDepthOffset.ToString());
129
130 m_DOFPresetsPanel = root.FindAnyWidget("DOFPresetsPanel");
131 m_DOFPresetsList = new ScriptConsolePresetsList(m_DOFPresetsPanel, this);
132 m_DOFPresetsList.m_ItemSelected.Insert(OnListItemSelected);
133
134 m_DOFPresetsBtns = root.FindAnyWidget("DOFPresetsButtons");
135 m_DOFLoadPrefabBtn = ButtonWidget.Cast(root.FindAnyWidget("DOFLoadPrefab"));
136 m_DOFDeletePrefabBtn = ButtonWidget.Cast(root.FindAnyWidget("DOFDeletePrefab"));
137
138 m_DOFShowPresetsBtn = ButtonWidget.Cast(root.FindAnyWidget("DOFPresetsButton"));
139 m_DOFShowPresetsBtnLabel = TextWidget.Cast(root.FindAnyWidget("DOFPresetsLabel"));
140 m_DOFPresetEditbox = EditBoxWidget.Cast(root.FindAnyWidget("DOFName"));
141 m_DOFSavePrefabBtn = ButtonWidget.Cast(root.FindAnyWidget("SaveDOFButton"));
142
143 m_DOFShowPresetsBtn.Show(true);
144 m_DOFPresetEditbox.Show(true);
145 m_DOFSavePrefabBtn.Show(true);
146
147 if (!m_FirstInit)
148 {
149 ResetDOF();
150 m_FirstInit = true;
151 }
152
154 }
155
156 protected void ReloadDOFPresetsList()
157 {
158 m_DOFPresetsList.ClearList();
159
160 for (int i = 0; i < m_ConfigDebugProfile.GetCameraPresets().Count(); i++)
161 {
162 ScriptConsoleCameraDOFPreset preset = m_ConfigDebugProfile.GetCameraPresets()[i];
163 if (!preset)
164 {
165 ErrorEx("Could not load DOF preset entry!");
166 continue;
167 }
168
169 m_DOFPresetsList.AddListItem(preset.Name, 0, i);
170 }
171 }
172
173 protected void UpdateFOV(float value)
174 {
175 GetScriptConsoleValues().m_CurrentFOV = value;
176 m_FOVValue.SetText(value.ToString());
177 m_FOVEditbox.SetText(value.ToString());
178 m_FreeDebugCamera.SetFOV(value);
179 }
180
181 protected void UpdateFocusDistance(float value)
182 {
183 GetScriptConsoleValues().m_CurrentFocusDistance = value;
184 m_FocusDistanceValue.SetText(value.ToString());
185 m_FocusDistanceEditbox.SetText(value.ToString());
186 SetDOF();
187 }
188
189 protected void UpdateFocusLength(float value)
190 {
191 GetScriptConsoleValues().m_CurrentFocusLength = value;
192 m_FocusLengthValue.SetText(value.ToString());
193 m_FocusLengthEditbox.SetText(value.ToString());
194 SetDOF();
195 }
196
197 protected void UpdateFocusLengthNear(float value)
198 {
199 GetScriptConsoleValues().m_CurrentFocusLengthNear = value;
200 m_FocusLengthNearValue.SetText(value.ToString());
201 m_FocusLengthNearEditbox.SetText(value.ToString());
202 SetDOF();
203 }
204
205 protected void UpdateBlur(float value)
206 {
207 GetScriptConsoleValues().m_CurrentBlur = value;
208 m_BlurValue.SetText(value.ToString());
209 m_BlurEditbox.SetText(value.ToString());
210 SetDOF();
211 }
212
213 protected void UpdateFocusDepthOffset(float value)
214 {
215 GetScriptConsoleValues().m_CurrentFocusDepthOffset = value;
216 m_FocusDepthOffsetValue.SetText(value.ToString());
217 m_FocusDepthOffsetEditbox.SetText(value.ToString());
218 SetDOF();
219 }
220
221 protected void SetDOF()
222 {
223 GetGame().OverrideDOF(true, GetScriptConsoleValues().m_CurrentFocusDistance, GetScriptConsoleValues().m_CurrentFocusLength, GetScriptConsoleValues().m_CurrentFocusLengthNear, GetScriptConsoleValues().m_CurrentBlur, GetScriptConsoleValues().m_CurrentFocusDepthOffset);
224 }
225
226 protected void ResetDOF()
227 {
228 GetScriptConsoleValues().SetDefaultValues();
230 GetGame().OverrideDOF(true, GetScriptConsoleValues().m_CurrentFocusDistance, GetScriptConsoleValues().m_CurrentFocusLength, GetScriptConsoleValues().m_CurrentFocusLengthNear, GetScriptConsoleValues().m_CurrentBlur, GetScriptConsoleValues().m_CurrentFocusDepthOffset);
231 }
232
233 protected void UpdateDOFSliders()
234 {
235 m_FocusDistanceValue.SetText(GetScriptConsoleValues().m_CurrentFocusDistance.ToString());
236 m_FocusDistanceEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusDistance.ToString());
237 m_FocusDistanceSelector.SetValue(GetScriptConsoleValues().m_CurrentFocusDistance, false);
238
239 m_FocusLengthValue.SetText(GetScriptConsoleValues().m_CurrentFocusLength.ToString());
240 m_FocusLengthEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusLength.ToString());
241 m_FocusLengthSelector.SetValue(GetScriptConsoleValues().m_CurrentFocusLength, false);
242
243 m_FocusLengthNearValue.SetText(GetScriptConsoleValues().m_CurrentFocusLengthNear.ToString());
244 m_FocusLengthNearEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusLengthNear.ToString());
245 m_FocusLengthNearSelector.SetValue(GetScriptConsoleValues().m_CurrentFocusLengthNear, false);
246
247 m_BlurValue.SetText(GetScriptConsoleValues().m_CurrentBlur.ToString());
248 m_BlurEditbox.SetText(GetScriptConsoleValues().m_CurrentBlur.ToString());
249 m_BlurSelector.SetValue(GetScriptConsoleValues().m_CurrentBlur, false);
250
251 m_FocusDepthOffsetValue.SetText(GetScriptConsoleValues().m_CurrentFocusDepthOffset.ToString());
252 m_FocusDepthOffsetEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusDepthOffset.ToString());
253 m_FocusDepthOffsetSelector.SetValue(GetScriptConsoleValues().m_CurrentFocusDepthOffset, false);
254 }
255
256 protected void SaveDOFPreset()
257 {
258 m_ConfigDebugProfile.AddCameraPreset(m_DOFPresetEditbox.GetText(), GetScriptConsoleValues().m_CurrentFocusDistance, GetScriptConsoleValues().m_CurrentFocusLength, GetScriptConsoleValues().m_CurrentFocusLengthNear, GetScriptConsoleValues().m_CurrentBlur, GetScriptConsoleValues().m_CurrentFocusDepthOffset);
260 }
261
262 protected void DeleteDOFPreset()
263 {
265 return;
266
267 m_ConfigDebugProfile.RemoveCameraPreset(m_SelectedDOFPreset.Name);
269 }
270
271 protected void OnListItemSelected(int row, int column)
272 {
273 m_SelectedDOFPreset = m_ConfigDebugProfile.GetCameraPresets().Get(row);
274 }
275
276 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
277 {
278 if (w == m_DOFPresetEditbox)
279 {
280 GetGame().GetMission().RemoveActiveInputExcludes({"movement"});
281 if (GetFocus() == m_DOFPresetEditbox)
282 SetFocus(null);
283 }
284 return false;
285 }
286
287 override bool OnMouseEnter(Widget w, int x, int y)
288 {
289 if (w == m_DOFPresetEditbox)
290 {
291 GetGame().GetMission().AddActiveInputExcludes({"movement"});
292 }
293 return false;
294 }
295
296 override bool OnClick(Widget w, int x, int y, int button)
297 {
298 if (w == m_ResetDOFButton)
299 {
300 ResetDOF();
301 return true;
302 }
303 else if (w == m_DOFShowPresetsBtn)
304 {
306 {
307 m_DOFShowPresetsBtnLabel.SetText("Hide DOF Presets");
308 m_DOFPresetsPanel.Show(true);
309 m_DOFPresetsBtns.Show(true);
310 m_DOFPresetsVisible = true;
311 }
312 else
313 {
314 m_DOFShowPresetsBtnLabel.SetText("Show DOF Presets");
315 m_DOFPresetsPanel.Show(false);
316 m_DOFPresetsBtns.Show(false);
317 m_DOFPresetsVisible = false;
318 }
319 }
320 else if (w == m_DOFLoadPrefabBtn)
321 {
323 }
324 else if (w == m_DOFSavePrefabBtn)
325 {
327 }
328 else if (w == m_DOFDeletePrefabBtn)
329 {
331 }
332
333 return false;
334 }
335
336 protected void LoadDOFPreset()
337 {
339 return;
340
341 GetScriptConsoleValues().m_CurrentFocusDistance = m_SelectedDOFPreset.FocusDistance;
342 GetScriptConsoleValues().m_CurrentFocusLength = m_SelectedDOFPreset.FocusLength;
343 GetScriptConsoleValues().m_CurrentFocusLengthNear = m_SelectedDOFPreset.FocusLengthNear;
344 GetScriptConsoleValues().m_CurrentBlur = m_SelectedDOFPreset.Blur;
345 GetScriptConsoleValues().m_CurrentFocusDepthOffset = m_SelectedDOFPreset.FocusDepthOffset;
347 SetDOF();
348 }
349
350 protected void ToggleValueEditMode(bool editBoxMode)
351 {
352 m_FOVValue.Show(!editBoxMode);
353 m_FOVEditbox.Show(editBoxMode);
354 m_FOVSelector.GetLayoutRoot().Show(!editBoxMode);
355
356 m_FocusDistanceValue.Show(!editBoxMode);
357 m_FocusDistanceEditbox.Show(editBoxMode);
358 m_FocusDistanceSelector.GetLayoutRoot().Show(!editBoxMode);
359
360 m_FocusLengthValue.Show(!editBoxMode);
361 m_FocusLengthEditbox.Show(editBoxMode);
362 m_FocusLengthSelector.GetLayoutRoot().Show(!editBoxMode);
363
364 m_FocusLengthNearValue.Show(!editBoxMode);
365 m_FocusLengthNearEditbox.Show(editBoxMode);
366 m_FocusLengthNearSelector.GetLayoutRoot().Show(!editBoxMode);
367
368 m_BlurValue.Show(!editBoxMode);
369 m_BlurEditbox.Show(editBoxMode);
370 m_BlurSelector.GetLayoutRoot().Show(!editBoxMode);
371
372 m_FocusDepthOffsetValue.Show(!editBoxMode);
373 m_FocusDepthOffsetEditbox.Show(editBoxMode);
374 m_FocusDepthOffsetSelector.GetLayoutRoot().Show(!editBoxMode);
375
376 if (editBoxMode)
377 {
378 m_FOVEditbox.SetText(GetScriptConsoleValues().m_CurrentFOV.ToString());
379 m_FocusDistanceEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusDistance.ToString());
380 m_FocusLengthEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusLength.ToString());
381 m_FocusLengthNearEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusLengthNear.ToString());
382 m_BlurEditbox.SetText(GetScriptConsoleValues().m_CurrentBlur.ToString());
383 m_FocusDepthOffsetEditbox.SetText(GetScriptConsoleValues().m_CurrentFocusDepthOffset.ToString());
384 }
385 }
386
388 {
389 if (IsValidEditboxValue(m_FOVEditbox.GetText(), 0.001, 1.0))
390 UpdateFOV(m_FOVEditbox.GetText().ToFloat());
391
392 bool updateDOF = true;
393 if (IsValidEditboxValue(m_FocusDistanceEditbox.GetText(), 0.0, 1000.0))
394 {
395 UpdateFocusDistance(m_FocusDistanceEditbox.GetText().ToFloat());
396 }
397 else
398 {
399 updateDOF = false;
400 }
401
402 if (IsValidEditboxValue(m_FocusLengthEditbox.GetText(), -1.0, 10000.0))
403 {
404 UpdateFocusLength(m_FocusLengthEditbox.GetText().ToFloat());
405 }
406 else
407 {
408 updateDOF = false;
409 }
410
411 if (IsValidEditboxValue(m_FocusLengthNearEditbox.GetText(), -1.0, 10000.0))
412 {
414 }
415 else
416 {
417 updateDOF = false;
418 }
419
420 if (IsValidEditboxValue(m_BlurEditbox.GetText(), 0.0, 32.0))
421 {
422 UpdateBlur(m_BlurEditbox.GetText().ToFloat());
423 }
424 else
425 {
426 updateDOF = false;
427 }
428
429 if (IsValidEditboxValue(m_FocusDepthOffsetEditbox.GetText(), 0.0, 1000.0))
430 {
432 }
433 else
434 {
435 updateDOF = false;
436 }
437
438 if (updateDOF)
439 {
441 SetDOF();
442 }
443 }
444
445 bool IsValidEditboxValue(string text, float min, float max)
446 {
447 TStringArray allowedCharacters = {".","0","1","2","3","4","5","6","7","8","9"};
448 for (int i = 0; i < text.Length(); i++)
449 {
450 int foundIndex = allowedCharacters.Find(text.Get(i));
451 if (foundIndex == -1 || i == 0 && foundIndex == 0 || i == text.Length() && foundIndex == 0)
452 return false;
453 }
454
455 if (text.ToFloat() < min || text.ToFloat() > max)
456 return false;
457
458 return true;
459 }
460
461 override void Update(float timeslice)
462 {
463 super.Update(timeslice);
464
465 m_IsCTRLPressed = KeyState(KeyCode.KC_LCONTROL) || KeyState(KeyCode.KC_RCONTROL);
466 m_IsCAPSPressed = KeyState(KeyCode.KC_CAPITAL);
468
470 {
472 ToggleValueEditMode(false);
473 }
474
475 if (m_IsCTRLPressed)
476 {
477 m_ValueEditModeTime += timeslice;
478 if (m_ValueEditModeTime >= 0.300)
479 {
481 {
483 }
484 else
485 {
487 ToggleValueEditMode(false);
488 }
489
492 }
493 }
494 else
495 {
497 }
498
499 if (m_IsCAPSPressed && !m_MouseMovementEnabled && (!GetFocus() || GetFocus() != m_DOFPresetEditbox) && GetWidgetUnderCursor() != m_DOFPresetEditbox)
500 {
501 if (GetGame() && GetGame().GetMission() && GetGame().GetUIManager())
502 {
504 GetGame().GetMission().RemoveActiveInputExcludes({"aiming"});
505 GetGame().GetUIManager().ShowUICursor(false);
506 }
507 }
509 {
510 if (GetGame() && GetGame().GetMission() && GetGame().GetUIManager())
511 {
513 GetGame().GetMission().AddActiveInputExcludes({"aiming"});
514 GetGame().GetUIManager().ShowUICursor(true);
515 }
516 }
517
518 if (GetFocus() == m_DOFPresetEditbox && !m_CanUseMovement)
519 {
520 m_CanUseMovement = true;
521 GetGame().GetMission().RemoveActiveInputExcludes({"UAMoveForward", "UAMoveBack", "UAMoveLeft", "UAMoveRight", "UAWalkRunTemp"});
522 }
523 else if ((GetFocus() != m_DOFPresetEditbox || !GetFocus()) && GetWidgetUnderCursor() != m_DOFPresetEditbox && m_CanUseMovement)
524 {
525 m_CanUseMovement = false;
526 GetGame().GetMission().AddActiveInputExcludes({"UAMoveForward", "UAMoveBack", "UAMoveLeft", "UAMoveRight", "UAWalkRunTemp"});
527 }
528 }
529}
proto native void OverrideDOF(bool enable, float focusDistance, float focusLength, float focusLengthNear, float blur, float focusDepthOffset)
ref ScriptConsoleSelector m_FocusLengthSelector
ref ScriptConsoleSelector m_FOVSelector
ref ScriptConsoleSelector m_FocusLengthNearSelector
ScriptConsoleCameraDOFPreset m_SelectedDOFPreset
void ToggleValueEditMode(bool editBoxMode)
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
ref ScriptConsoleSelector m_FocusDepthOffsetSelector
void ScriptConsoleCameraTab(Widget root, ScriptConsole console, Widget button, ScriptConsoleTabBase parent=null)
void UpdateFocusDepthOffset(float value)
void UpdateFocusLengthNear(float value)
override void Update(float timeslice)
void UpdateFocusDistance(float value)
bool IsValidEditboxValue(string text, float min, float max)
override bool OnMouseEnter(Widget w, int x, int y)
override bool OnClick(Widget w, int x, int y, int button)
ref ScriptConsolePresetsList m_DOFPresetsList
ref ScriptConsoleSelector m_BlurSelector
ref ScriptConsoleSelector m_FocusDistanceSelector
void OnListItemSelected(int row, int column)
void UpdateFocusLength(float value)
PluginConfigDebugProfile m_ConfigDebugProfile
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
enum ShapeType ErrorEx
KeyCode
Definition ensystem.c:157
proto native int KeyState(KeyCode key)
Icon x
Icon y
class ScriptConsoleCameraValues s_ScriptConsoleValues