scriptconsolecameratab.c 18 KB

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