EditorViewportSettings.cpp 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <EditorViewportSettings.h>
  9. #include <AzToolsFramework/Viewport/ViewportMessages.h>
  10. #include <AzCore/Casting/numeric_cast.h>
  11. #include <AzCore/Math/MathUtils.h>
  12. #include <AzCore/Settings/SettingsRegistry.h>
  13. #include <AzCore/Settings/SettingsRegistryMergeUtils.h>
  14. #include <AzCore/std/string/string_view.h>
  15. #include <AzToolsFramework/Viewport/ViewportSettings.h>
  16. #include <AzToolsFramework/API/SettingsRegistryUtils.h>
  17. namespace SandboxEditor
  18. {
  19. constexpr AZStd::string_view AssetBrowserMaxItemsShownInSearchSetting = "/Amazon/Preferences/Editor/AssetBrowser/MaxItemsShowInSearch";
  20. constexpr AZStd::string_view GridSnappingSetting = "/Amazon/Preferences/Editor/GridSnapping";
  21. constexpr AZStd::string_view GridSizeSetting = "/Amazon/Preferences/Editor/GridSize";
  22. constexpr AZStd::string_view AngleSnappingSetting = "/Amazon/Preferences/Editor/AngleSnapping";
  23. constexpr AZStd::string_view AngleSizeSetting = "/Amazon/Preferences/Editor/AngleSize";
  24. constexpr AZStd::string_view ShowGridSetting = "/Amazon/Preferences/Editor/ShowGrid";
  25. constexpr AZStd::string_view StickySelectSetting = "/Amazon/Preferences/Editor/StickySelect";
  26. constexpr AZStd::string_view ManipulatorLineBoundWidthSetting = "/Amazon/Preferences/Editor/Manipulator/LineBoundWidth";
  27. constexpr AZStd::string_view ManipulatorCircleBoundWidthSetting = "/Amazon/Preferences/Editor/Manipulator/CircleBoundWidth";
  28. constexpr AZStd::string_view CameraSpeedScaleSetting = "/Amazon/Preferences/Editor/Camera/SpeedScale";
  29. constexpr AZStd::string_view CameraTranslateSpeedSetting = "/Amazon/Preferences/Editor/Camera/TranslateSpeed";
  30. constexpr AZStd::string_view CameraBoostMultiplierSetting = "/Amazon/Preferences/Editor/Camera/BoostMultiplier";
  31. constexpr AZStd::string_view CameraRotateSpeedSetting = "/Amazon/Preferences/Editor/Camera/RotateSpeed";
  32. constexpr AZStd::string_view CameraScrollSpeedSetting = "/Amazon/Preferences/Editor/Camera/DollyScrollSpeed";
  33. constexpr AZStd::string_view CameraDollyMotionSpeedSetting = "/Amazon/Preferences/Editor/Camera/DollyMotionSpeed";
  34. constexpr AZStd::string_view CameraOrbitYawRotationInvertedSetting = "/Amazon/Preferences/Editor/Camera/YawRotationInverted";
  35. constexpr AZStd::string_view CameraPanInvertedXSetting = "/Amazon/Preferences/Editor/Camera/PanInvertedX";
  36. constexpr AZStd::string_view CameraPanInvertedYSetting = "/Amazon/Preferences/Editor/Camera/PanInvertedY";
  37. constexpr AZStd::string_view CameraPanSpeedSetting = "/Amazon/Preferences/Editor/Camera/PanSpeed";
  38. constexpr AZStd::string_view CameraZoomInvertedSetting = "/Amazon/Preferences/Editor/Camera/ZoomInverted";
  39. constexpr AZStd::string_view CameraRotateSmoothnessSetting = "/Amazon/Preferences/Editor/Camera/RotateSmoothness";
  40. constexpr AZStd::string_view CameraTranslateSmoothnessSetting = "/Amazon/Preferences/Editor/Camera/TranslateSmoothness";
  41. constexpr AZStd::string_view CameraTranslateSmoothingSetting = "/Amazon/Preferences/Editor/Camera/TranslateSmoothing";
  42. constexpr AZStd::string_view CameraRotateSmoothingSetting = "/Amazon/Preferences/Editor/Camera/RotateSmoothing";
  43. constexpr AZStd::string_view CameraCaptureCursorLookSetting = "/Amazon/Preferences/Editor/Camera/CaptureCursorLook";
  44. constexpr AZStd::string_view CameraDefaultOrbitDistanceSetting = "/Amazon/Preferences/Editor/Camera/DefaultOrbitDistance";
  45. constexpr AZStd::string_view CameraTranslateForwardIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateForwardId";
  46. constexpr AZStd::string_view CameraTranslateBackwardIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateBackwardId";
  47. constexpr AZStd::string_view CameraTranslateLeftIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateLeftId";
  48. constexpr AZStd::string_view CameraTranslateRightIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateRightId";
  49. constexpr AZStd::string_view CameraTranslateUpIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateUpId";
  50. constexpr AZStd::string_view CameraTranslateDownIdSetting = "/Amazon/Preferences/Editor/Camera/CameraTranslateUpDownId";
  51. constexpr AZStd::string_view CameraTranslateBoostIdSetting = "/Amazon/Preferences/Editor/Camera/TranslateBoostId";
  52. constexpr AZStd::string_view CameraOrbitIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitId";
  53. constexpr AZStd::string_view CameraFreeLookIdSetting = "/Amazon/Preferences/Editor/Camera/FreeLookId";
  54. constexpr AZStd::string_view CameraFreePanIdSetting = "/Amazon/Preferences/Editor/Camera/FreePanId";
  55. constexpr AZStd::string_view CameraOrbitLookIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitLookId";
  56. constexpr AZStd::string_view CameraOrbitDollyIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitDollyId";
  57. constexpr AZStd::string_view CameraOrbitPanIdSetting = "/Amazon/Preferences/Editor/Camera/OrbitPanId";
  58. constexpr AZStd::string_view CameraFocusIdSetting = "/Amazon/Preferences/Editor/Camera/FocusId";
  59. constexpr AZStd::string_view CameraDefaultStartingPositionX = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/x";
  60. constexpr AZStd::string_view CameraDefaultStartingPositionY = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/y";
  61. constexpr AZStd::string_view CameraDefaultStartingPositionZ = "/Amazon/Preferences/Editor/Camera/DefaultStartingPosition/z";
  62. constexpr AZStd::string_view CameraDefaultStartingPitch = "/Amazon/Preferences/Editor/Camera/DefaultStartingPitch";
  63. constexpr AZStd::string_view CameraDefaultStartingYaw = "/Amazon/Preferences/Editor/Camera/DefaultStartingYaw";
  64. constexpr AZStd::string_view CameraNearPlaneDistanceSetting = "/Amazon/Preferences/Editor/Camera/NearPlaneDistance";
  65. constexpr AZStd::string_view CameraFarPlaneDistanceSetting = "/Amazon/Preferences/Editor/Camera/FarPlaneDistance";
  66. constexpr AZStd::string_view CameraFovDegreesSetting = "/Amazon/Preferences/Editor/Camera/FovDegrees";
  67. constexpr AZStd::string_view CameraGoToPositionInstantlySetting = "/Amazon/Preferences/Editor/Camera/GoToPositionInstantly";
  68. constexpr AZStd::string_view CameraGoToPositionDurationSetting = "/Amazon/Preferences/Editor/Camera/GoToPositionDuration";
  69. struct EditorViewportSettingsCallbacksImpl : public EditorViewportSettingsCallbacks
  70. {
  71. EditorViewportSettingsCallbacksImpl()
  72. {
  73. if (auto* registry = AZ::SettingsRegistry::Get())
  74. {
  75. using AZ::SettingsRegistryMergeUtils::IsPathAncestorDescendantOrEqual;
  76. m_angleSnappingNotifyEventHandler = registry->RegisterNotifier(
  77. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  78. {
  79. if (IsPathAncestorDescendantOrEqual(AngleSnappingSetting, notifyEventArgs.m_jsonKeyPath))
  80. {
  81. m_angleSnappingChanged.Signal(AngleSnappingEnabled());
  82. }
  83. }
  84. );
  85. m_cameraSpeedScaleNotifyEventHandler = registry->RegisterNotifier(
  86. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  87. {
  88. if (IsPathAncestorDescendantOrEqual(CameraSpeedScaleSetting, notifyEventArgs.m_jsonKeyPath))
  89. {
  90. m_cameraSpeedScaleChanged.Signal(CameraSpeedScale());
  91. }
  92. }
  93. );
  94. m_gridSnappingNotifyEventHandler = registry->RegisterNotifier(
  95. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  96. {
  97. if (IsPathAncestorDescendantOrEqual(GridSnappingSetting, notifyEventArgs.m_jsonKeyPath))
  98. {
  99. m_gridSnappingChanged.Signal(GridSnappingEnabled());
  100. }
  101. }
  102. );
  103. m_farPlaneDistanceNotifyEventHandler = registry->RegisterNotifier(
  104. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  105. {
  106. if (IsPathAncestorDescendantOrEqual(CameraFarPlaneDistanceSetting, notifyEventArgs.m_jsonKeyPath))
  107. {
  108. m_farPlaneChanged.Signal(CameraDefaultFarPlaneDistance());
  109. }
  110. }
  111. );
  112. m_nearPlaneDistanceNotifyEventHandler = registry->RegisterNotifier(
  113. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  114. {
  115. if (IsPathAncestorDescendantOrEqual(CameraNearPlaneDistanceSetting, notifyEventArgs.m_jsonKeyPath))
  116. {
  117. m_nearPlaneChanged.Signal(CameraDefaultNearPlaneDistance());
  118. }
  119. }
  120. );
  121. m_perspectiveNotifyEventHandler = registry->RegisterNotifier(
  122. [this](const AZ::SettingsRegistryInterface::NotifyEventArgs& notifyEventArgs)
  123. {
  124. if (IsPathAncestorDescendantOrEqual(CameraFovDegreesSetting, notifyEventArgs.m_jsonKeyPath))
  125. {
  126. m_perspectiveChanged.Signal(CameraDefaultFovRadians());
  127. }
  128. }
  129. );
  130. }
  131. }
  132. void SetAngleSnappingChangedEvent(AngleSnappingChangedEvent::Handler& handler) override
  133. {
  134. handler.Connect(m_angleSnappingChanged);
  135. }
  136. void SetCameraSpeedScaleChangedEvent(CameraSpeedScaleChangedEvent::Handler& handler) override
  137. {
  138. handler.Connect(m_cameraSpeedScaleChanged);
  139. }
  140. void SetGridShowingChangedEvent(GridShowingChangedEvent::Handler& handler) override
  141. {
  142. handler.Connect(m_gridShowingChanged);
  143. }
  144. void SetGridSnappingChangedEvent(GridSnappingChangedEvent::Handler& handler) override
  145. {
  146. handler.Connect(m_gridSnappingChanged);
  147. }
  148. void SetFarPlaneDistanceChangedEvent(NearFarPlaneChangedEvent::Handler& handler) override
  149. {
  150. handler.Connect(m_farPlaneChanged);
  151. }
  152. void SetNearPlaneDistanceChangedEvent(NearFarPlaneChangedEvent::Handler& handler) override
  153. {
  154. handler.Connect(m_nearPlaneChanged);
  155. }
  156. void SetPerspectiveChangedEvent(PerspectiveChangedEvent::Handler& handler) override
  157. {
  158. handler.Connect(m_perspectiveChanged);
  159. }
  160. AngleSnappingChangedEvent m_angleSnappingChanged;
  161. CameraSpeedScaleChangedEvent m_cameraSpeedScaleChanged;
  162. GridSnappingChangedEvent m_gridShowingChanged;
  163. GridSnappingChangedEvent m_gridSnappingChanged;
  164. PerspectiveChangedEvent m_perspectiveChanged;
  165. NearFarPlaneChangedEvent m_farPlaneChanged;
  166. NearFarPlaneChangedEvent m_nearPlaneChanged;
  167. AZ::SettingsRegistryInterface::NotifyEventHandler m_angleSnappingNotifyEventHandler;
  168. AZ::SettingsRegistryInterface::NotifyEventHandler m_cameraSpeedScaleNotifyEventHandler;
  169. AZ::SettingsRegistryInterface::NotifyEventHandler m_farPlaneDistanceNotifyEventHandler;
  170. AZ::SettingsRegistryInterface::NotifyEventHandler m_gridShowingNotifyEventHandler;
  171. AZ::SettingsRegistryInterface::NotifyEventHandler m_gridSnappingNotifyEventHandler;
  172. AZ::SettingsRegistryInterface::NotifyEventHandler m_nearPlaneDistanceNotifyEventHandler;
  173. AZ::SettingsRegistryInterface::NotifyEventHandler m_perspectiveNotifyEventHandler;
  174. };
  175. AZStd::unique_ptr<EditorViewportSettingsCallbacks> CreateEditorViewportSettingsCallbacks()
  176. {
  177. return AZStd::make_unique<EditorViewportSettingsCallbacksImpl>();
  178. }
  179. AZ::Vector3 CameraDefaultEditorPosition()
  180. {
  181. return AZ::Vector3(
  182. aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionX, 0.0)),
  183. aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionY, -10.0)),
  184. aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPositionZ, 4.0)));
  185. }
  186. void SetCameraDefaultEditorPosition(const AZ::Vector3& position)
  187. {
  188. AzToolsFramework::SetRegistry(CameraDefaultStartingPositionX, position.GetX());
  189. AzToolsFramework::SetRegistry(CameraDefaultStartingPositionY, position.GetY());
  190. AzToolsFramework::SetRegistry(CameraDefaultStartingPositionZ, position.GetZ());
  191. }
  192. AZ::Vector2 CameraDefaultEditorOrientation()
  193. {
  194. return AZ::Vector2(
  195. aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingPitch, 0.0)),
  196. aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultStartingYaw, 0.0)));
  197. }
  198. void SetCameraDefaultEditorOrientation(const AZ::Vector2& pitchYaw)
  199. {
  200. AzToolsFramework::SetRegistry(CameraDefaultStartingPitch, pitchYaw.GetX());
  201. AzToolsFramework::SetRegistry(CameraDefaultStartingYaw, pitchYaw.GetY());
  202. }
  203. AZ::u64 MaxItemsShownInAssetBrowserSearch()
  204. {
  205. return AzToolsFramework::GetRegistry(AssetBrowserMaxItemsShownInSearchSetting, aznumeric_cast<AZ::u64>(50));
  206. }
  207. void SetMaxItemsShownInAssetBrowserSearch(const AZ::u64 numberOfItemsShown)
  208. {
  209. AzToolsFramework::SetRegistry(AssetBrowserMaxItemsShownInSearchSetting, numberOfItemsShown);
  210. }
  211. bool GridSnappingEnabled()
  212. {
  213. return AzToolsFramework::GetRegistry(GridSnappingSetting, false);
  214. }
  215. void SetGridSnapping(const bool enabled)
  216. {
  217. AzToolsFramework::SetRegistry(GridSnappingSetting, enabled);
  218. }
  219. float GridSnappingSize()
  220. {
  221. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(GridSizeSetting, 0.1));
  222. }
  223. void SetGridSnappingSize(const float size)
  224. {
  225. AzToolsFramework::SetRegistry(GridSizeSetting, size);
  226. }
  227. bool AngleSnappingEnabled()
  228. {
  229. return AzToolsFramework::GetRegistry(AngleSnappingSetting, false);
  230. }
  231. void SetAngleSnapping(const bool enabled)
  232. {
  233. AzToolsFramework::SetRegistry(AngleSnappingSetting, enabled);
  234. }
  235. float AngleSnappingSize()
  236. {
  237. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(AngleSizeSetting, 5.0));
  238. }
  239. void SetAngleSnappingSize(const float size)
  240. {
  241. AzToolsFramework::SetRegistry(AngleSizeSetting, size);
  242. }
  243. bool ShowingGrid()
  244. {
  245. return AzToolsFramework::GetRegistry(ShowGridSetting, false);
  246. }
  247. void SetShowingGrid(const bool showing)
  248. {
  249. AzToolsFramework::SetRegistry(ShowGridSetting, showing);
  250. }
  251. bool StickySelectEnabled()
  252. {
  253. return AzToolsFramework::GetRegistry(StickySelectSetting, false);
  254. }
  255. void SetStickySelectEnabled(const bool enabled)
  256. {
  257. AzToolsFramework::SetRegistry(StickySelectSetting, enabled);
  258. }
  259. float ManipulatorLineBoundWidth()
  260. {
  261. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(ManipulatorLineBoundWidthSetting, 0.1));
  262. }
  263. void SetManipulatorLineBoundWidth(const float lineBoundWidth)
  264. {
  265. AzToolsFramework::SetRegistry(ManipulatorLineBoundWidthSetting, lineBoundWidth);
  266. }
  267. float ManipulatorCircleBoundWidth()
  268. {
  269. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(ManipulatorCircleBoundWidthSetting, 0.1));
  270. }
  271. void SetManipulatorCircleBoundWidth(const float circleBoundWidth)
  272. {
  273. AzToolsFramework::SetRegistry(ManipulatorCircleBoundWidthSetting, circleBoundWidth);
  274. }
  275. float CameraSpeedScale()
  276. {
  277. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraSpeedScaleSetting, 1.0));
  278. }
  279. void SetCameraSpeedScale(float speedScale)
  280. {
  281. AzToolsFramework::SetRegistry(CameraSpeedScaleSetting, speedScale);
  282. }
  283. float CameraTranslateSpeed()
  284. {
  285. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraTranslateSpeedSetting, 10.0));
  286. }
  287. float CameraTranslateSpeedScaled()
  288. {
  289. return CameraTranslateSpeed() * CameraSpeedScale();
  290. }
  291. void SetCameraTranslateSpeed(const float speed)
  292. {
  293. AzToolsFramework::SetRegistry(CameraTranslateSpeedSetting, speed);
  294. }
  295. float CameraBoostMultiplier()
  296. {
  297. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraBoostMultiplierSetting, 3.0));
  298. }
  299. void SetCameraBoostMultiplier(const float multiplier)
  300. {
  301. AzToolsFramework::SetRegistry(CameraBoostMultiplierSetting, multiplier);
  302. }
  303. float CameraRotateSpeed()
  304. {
  305. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraRotateSpeedSetting, 0.005));
  306. }
  307. void SetCameraRotateSpeed(const float speed)
  308. {
  309. AzToolsFramework::SetRegistry(CameraRotateSpeedSetting, speed);
  310. }
  311. float CameraScrollSpeed()
  312. {
  313. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraScrollSpeedSetting, 0.02));
  314. }
  315. float CameraScrollSpeedScaled()
  316. {
  317. return CameraScrollSpeed() * CameraSpeedScale();
  318. }
  319. void SetCameraScrollSpeed(const float speed)
  320. {
  321. AzToolsFramework::SetRegistry(CameraScrollSpeedSetting, speed);
  322. }
  323. float CameraDollyMotionSpeed()
  324. {
  325. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDollyMotionSpeedSetting, 0.01));
  326. }
  327. float CameraDollyMotionSpeedScaled()
  328. {
  329. return CameraDollyMotionSpeed() * CameraSpeedScale();
  330. }
  331. void SetCameraDollyMotionSpeed(const float speed)
  332. {
  333. AzToolsFramework::SetRegistry(CameraDollyMotionSpeedSetting, speed);
  334. }
  335. bool CameraOrbitYawRotationInverted()
  336. {
  337. return AzToolsFramework::GetRegistry(CameraOrbitYawRotationInvertedSetting, false);
  338. }
  339. void SetCameraOrbitYawRotationInverted(const bool inverted)
  340. {
  341. AzToolsFramework::SetRegistry(CameraOrbitYawRotationInvertedSetting, inverted);
  342. }
  343. bool CameraPanInvertedX()
  344. {
  345. return AzToolsFramework::GetRegistry(CameraPanInvertedXSetting, true);
  346. }
  347. void SetCameraPanInvertedX(const bool inverted)
  348. {
  349. AzToolsFramework::SetRegistry(CameraPanInvertedXSetting, inverted);
  350. }
  351. bool CameraPanInvertedY()
  352. {
  353. return AzToolsFramework::GetRegistry(CameraPanInvertedYSetting, true);
  354. }
  355. void SetCameraPanInvertedY(const bool inverted)
  356. {
  357. AzToolsFramework::SetRegistry(CameraPanInvertedYSetting, inverted);
  358. }
  359. float CameraPanSpeed()
  360. {
  361. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraPanSpeedSetting, 0.01));
  362. }
  363. float CameraPanSpeedScaled()
  364. {
  365. return CameraPanSpeed() * CameraSpeedScale();
  366. }
  367. void SetCameraPanSpeed(float speed)
  368. {
  369. AzToolsFramework::SetRegistry(CameraPanSpeedSetting, speed);
  370. }
  371. bool CameraZoomInverted()
  372. {
  373. return AzToolsFramework::GetRegistry(CameraZoomInvertedSetting, false);
  374. }
  375. void SetCameraZoomInverted(const bool inverted)
  376. {
  377. AzToolsFramework::SetRegistry(CameraZoomInvertedSetting, inverted);
  378. }
  379. float CameraRotateSmoothness()
  380. {
  381. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraRotateSmoothnessSetting, 5.0));
  382. }
  383. void SetCameraRotateSmoothness(const float smoothness)
  384. {
  385. AzToolsFramework::SetRegistry(CameraRotateSmoothnessSetting, smoothness);
  386. }
  387. float CameraTranslateSmoothness()
  388. {
  389. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraTranslateSmoothnessSetting, 5.0));
  390. }
  391. void SetCameraTranslateSmoothness(const float smoothness)
  392. {
  393. AzToolsFramework::SetRegistry(CameraTranslateSmoothnessSetting, smoothness);
  394. }
  395. bool CameraRotateSmoothingEnabled()
  396. {
  397. return AzToolsFramework::GetRegistry(CameraRotateSmoothingSetting, true);
  398. }
  399. void SetCameraRotateSmoothingEnabled(const bool enabled)
  400. {
  401. AzToolsFramework::SetRegistry(CameraRotateSmoothingSetting, enabled);
  402. }
  403. bool CameraTranslateSmoothingEnabled()
  404. {
  405. return AzToolsFramework::GetRegistry(CameraTranslateSmoothingSetting, true);
  406. }
  407. void SetCameraTranslateSmoothingEnabled(const bool enabled)
  408. {
  409. AzToolsFramework::SetRegistry(CameraTranslateSmoothingSetting, enabled);
  410. }
  411. bool CameraCaptureCursorForLook()
  412. {
  413. return AzToolsFramework::GetRegistry(CameraCaptureCursorLookSetting, true);
  414. }
  415. void SetCameraCaptureCursorForLook(const bool capture)
  416. {
  417. AzToolsFramework::SetRegistry(CameraCaptureCursorLookSetting, capture);
  418. }
  419. float CameraDefaultOrbitDistance()
  420. {
  421. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraDefaultOrbitDistanceSetting, 20.0));
  422. }
  423. void SetCameraDefaultOrbitDistance(const float distance)
  424. {
  425. AzToolsFramework::SetRegistry(CameraDefaultOrbitDistanceSetting, distance);
  426. }
  427. bool CameraGoToPositionInstantlyEnabled()
  428. {
  429. return AzToolsFramework::GetRegistry(CameraGoToPositionInstantlySetting, false);
  430. }
  431. void SetCameraGoToPositionInstantlyEnabled(const bool instant)
  432. {
  433. AzToolsFramework::SetRegistry(CameraGoToPositionInstantlySetting, instant);
  434. }
  435. float CameraGoToPositionDuration()
  436. {
  437. return aznumeric_cast<float>(AzToolsFramework::GetRegistry(CameraGoToPositionDurationSetting, 1.0));
  438. }
  439. void SetCameraGoToPositionDuration(const float duration)
  440. {
  441. AzToolsFramework::SetRegistry(CameraGoToPositionDurationSetting, duration);
  442. }
  443. AzFramework::InputChannelId CameraTranslateForwardChannelId()
  444. {
  445. return AzFramework::InputChannelId(
  446. AzToolsFramework::GetRegistry(CameraTranslateForwardIdSetting, AZStd::string("keyboard_key_alphanumeric_W")).c_str());
  447. }
  448. void SetCameraTranslateForwardChannelId(AZStd::string_view cameraTranslateForwardId)
  449. {
  450. AzToolsFramework::SetRegistry(CameraTranslateForwardIdSetting, cameraTranslateForwardId);
  451. }
  452. AzFramework::InputChannelId CameraTranslateBackwardChannelId()
  453. {
  454. return AzFramework::InputChannelId(
  455. AzToolsFramework::GetRegistry(CameraTranslateBackwardIdSetting, AZStd::string("keyboard_key_alphanumeric_S")).c_str());
  456. }
  457. void SetCameraTranslateBackwardChannelId(AZStd::string_view cameraTranslateBackwardId)
  458. {
  459. AzToolsFramework::SetRegistry(CameraTranslateBackwardIdSetting, cameraTranslateBackwardId);
  460. }
  461. AzFramework::InputChannelId CameraTranslateLeftChannelId()
  462. {
  463. return AzFramework::InputChannelId(
  464. AzToolsFramework::GetRegistry(CameraTranslateLeftIdSetting, AZStd::string("keyboard_key_alphanumeric_A")).c_str());
  465. }
  466. void SetCameraTranslateLeftChannelId(AZStd::string_view cameraTranslateLeftId)
  467. {
  468. AzToolsFramework::SetRegistry(CameraTranslateLeftIdSetting, cameraTranslateLeftId);
  469. }
  470. AzFramework::InputChannelId CameraTranslateRightChannelId()
  471. {
  472. return AzFramework::InputChannelId(
  473. AzToolsFramework::GetRegistry(CameraTranslateRightIdSetting, AZStd::string("keyboard_key_alphanumeric_D")).c_str());
  474. }
  475. void SetCameraTranslateRightChannelId(AZStd::string_view cameraTranslateRightId)
  476. {
  477. AzToolsFramework::SetRegistry(CameraTranslateRightIdSetting, cameraTranslateRightId);
  478. }
  479. AzFramework::InputChannelId CameraTranslateUpChannelId()
  480. {
  481. return AzFramework::InputChannelId(
  482. AzToolsFramework::GetRegistry(CameraTranslateUpIdSetting, AZStd::string("keyboard_key_alphanumeric_E")).c_str());
  483. }
  484. void SetCameraTranslateUpChannelId(AZStd::string_view cameraTranslateUpId)
  485. {
  486. AzToolsFramework::SetRegistry(CameraTranslateUpIdSetting, cameraTranslateUpId);
  487. }
  488. AzFramework::InputChannelId CameraTranslateDownChannelId()
  489. {
  490. return AzFramework::InputChannelId(
  491. AzToolsFramework::GetRegistry(CameraTranslateDownIdSetting, AZStd::string("keyboard_key_alphanumeric_Q")).c_str());
  492. }
  493. void SetCameraTranslateDownChannelId(AZStd::string_view cameraTranslateDownId)
  494. {
  495. AzToolsFramework::SetRegistry(CameraTranslateDownIdSetting, cameraTranslateDownId);
  496. }
  497. AzFramework::InputChannelId CameraTranslateBoostChannelId()
  498. {
  499. return AzFramework::InputChannelId(
  500. AzToolsFramework::GetRegistry(CameraTranslateBoostIdSetting, AZStd::string("keyboard_key_modifier_shift_l")).c_str());
  501. }
  502. void SetCameraTranslateBoostChannelId(AZStd::string_view cameraTranslateBoostId)
  503. {
  504. AzToolsFramework::SetRegistry(CameraTranslateBoostIdSetting, cameraTranslateBoostId);
  505. }
  506. AzFramework::InputChannelId CameraOrbitChannelId()
  507. {
  508. return AzFramework::InputChannelId(
  509. AzToolsFramework::GetRegistry(CameraOrbitIdSetting, AZStd::string("keyboard_key_modifier_alt_l")).c_str());
  510. }
  511. void SetCameraOrbitChannelId(AZStd::string_view cameraOrbitId)
  512. {
  513. AzToolsFramework::SetRegistry(CameraOrbitIdSetting, cameraOrbitId);
  514. }
  515. AzFramework::InputChannelId CameraFreeLookChannelId()
  516. {
  517. return AzFramework::InputChannelId(
  518. AzToolsFramework::GetRegistry(CameraFreeLookIdSetting, AZStd::string("mouse_button_right")).c_str());
  519. }
  520. void SetCameraFreeLookChannelId(AZStd::string_view cameraFreeLookId)
  521. {
  522. AzToolsFramework::SetRegistry(CameraFreeLookIdSetting, cameraFreeLookId);
  523. }
  524. AzFramework::InputChannelId CameraFreePanChannelId()
  525. {
  526. return AzFramework::InputChannelId(
  527. AzToolsFramework::GetRegistry(CameraFreePanIdSetting, AZStd::string("mouse_button_middle")).c_str());
  528. }
  529. void SetCameraFreePanChannelId(AZStd::string_view cameraFreePanId)
  530. {
  531. AzToolsFramework::SetRegistry(CameraFreePanIdSetting, cameraFreePanId);
  532. }
  533. AzFramework::InputChannelId CameraOrbitLookChannelId()
  534. {
  535. return AzFramework::InputChannelId(
  536. AzToolsFramework::GetRegistry(CameraOrbitLookIdSetting, AZStd::string("mouse_button_left")).c_str());
  537. }
  538. void SetCameraOrbitLookChannelId(AZStd::string_view cameraOrbitLookId)
  539. {
  540. AzToolsFramework::SetRegistry(CameraOrbitLookIdSetting, cameraOrbitLookId);
  541. }
  542. AzFramework::InputChannelId CameraOrbitDollyChannelId()
  543. {
  544. return AzFramework::InputChannelId(
  545. AzToolsFramework::GetRegistry(CameraOrbitDollyIdSetting, AZStd::string("mouse_button_right")).c_str());
  546. }
  547. void SetCameraOrbitDollyChannelId(AZStd::string_view cameraOrbitDollyId)
  548. {
  549. AzToolsFramework::SetRegistry(CameraOrbitDollyIdSetting, cameraOrbitDollyId);
  550. }
  551. AzFramework::InputChannelId CameraOrbitPanChannelId()
  552. {
  553. return AzFramework::InputChannelId(
  554. AzToolsFramework::GetRegistry(CameraOrbitPanIdSetting, AZStd::string("mouse_button_middle")).c_str());
  555. }
  556. void SetCameraOrbitPanChannelId(AZStd::string_view cameraOrbitPanId)
  557. {
  558. AzToolsFramework::SetRegistry(CameraOrbitPanIdSetting, cameraOrbitPanId);
  559. }
  560. AzFramework::InputChannelId CameraFocusChannelId()
  561. {
  562. return AzFramework::InputChannelId(
  563. AzToolsFramework::GetRegistry(CameraFocusIdSetting, AZStd::string("keyboard_key_alphanumeric_X")).c_str());
  564. }
  565. void SetCameraFocusChannelId(AZStd::string_view cameraFocusId)
  566. {
  567. AzToolsFramework::SetRegistry(CameraFocusIdSetting, cameraFocusId);
  568. }
  569. float CameraDefaultNearPlaneDistance()
  570. {
  571. return aznumeric_caster(AzToolsFramework::GetRegistry(CameraNearPlaneDistanceSetting, 0.2));
  572. }
  573. void SetCameraDefaultNearPlaneDistance(const float distance)
  574. {
  575. AzToolsFramework::SetRegistry(CameraNearPlaneDistanceSetting, aznumeric_cast<double>(distance));
  576. }
  577. float CameraDefaultFarPlaneDistance()
  578. {
  579. return aznumeric_caster(AzToolsFramework::GetRegistry(CameraFarPlaneDistanceSetting, 1024.0));
  580. }
  581. void SetCameraDefaultFarPlaneDistance(const float distance)
  582. {
  583. AzToolsFramework::SetRegistry(CameraFarPlaneDistanceSetting, aznumeric_cast<double>(distance));
  584. }
  585. float CameraDefaultFovRadians()
  586. {
  587. return AZ::DegToRad(CameraDefaultFovDegrees());
  588. }
  589. void SetCameraDefaultFovRadians(const float fovRadians)
  590. {
  591. SetCameraDefaultFovDegrees(AZ::RadToDeg(fovRadians));
  592. }
  593. float CameraDefaultFovDegrees()
  594. {
  595. return aznumeric_caster(AzToolsFramework::GetRegistry(CameraFovDegreesSetting, aznumeric_cast<double>(75.0)));
  596. }
  597. void SetCameraDefaultFovDegrees(const float fovDegrees)
  598. {
  599. AzToolsFramework::SetRegistry(CameraFovDegreesSetting, aznumeric_cast<double>(fovDegrees));
  600. }
  601. void ResetCameraSpeedScale()
  602. {
  603. AzToolsFramework::ClearRegistry(CameraSpeedScaleSetting);
  604. }
  605. void ResetCameraTranslateSpeed()
  606. {
  607. AzToolsFramework::ClearRegistry(CameraTranslateSpeedSetting);
  608. }
  609. void ResetCameraRotateSpeed()
  610. {
  611. AzToolsFramework::ClearRegistry(CameraRotateSpeedSetting);
  612. }
  613. void ResetCameraBoostMultiplier()
  614. {
  615. AzToolsFramework::ClearRegistry(CameraBoostMultiplierSetting);
  616. }
  617. void ResetCameraScrollSpeed()
  618. {
  619. AzToolsFramework::ClearRegistry(CameraScrollSpeedSetting);
  620. }
  621. void ResetCameraDollyMotionSpeed()
  622. {
  623. AzToolsFramework::ClearRegistry(CameraDollyMotionSpeedSetting);
  624. }
  625. void ResetCameraPanSpeed()
  626. {
  627. AzToolsFramework::ClearRegistry(CameraPanSpeedSetting);
  628. }
  629. void ResetCameraRotateSmoothness()
  630. {
  631. AzToolsFramework::ClearRegistry(CameraRotateSmoothnessSetting);
  632. }
  633. void ResetCameraRotateSmoothingEnabled()
  634. {
  635. AzToolsFramework::ClearRegistry(CameraRotateSmoothingSetting);
  636. }
  637. void ResetCameraTranslateSmoothness()
  638. {
  639. AzToolsFramework::ClearRegistry(CameraTranslateSmoothnessSetting);
  640. }
  641. void ResetCameraTranslateSmoothingEnabled()
  642. {
  643. AzToolsFramework::ClearRegistry(CameraTranslateSmoothingSetting);
  644. }
  645. void ResetCameraCaptureCursorForLook()
  646. {
  647. AzToolsFramework::ClearRegistry(CameraCaptureCursorLookSetting);
  648. }
  649. void ResetCameraOrbitYawRotationInverted()
  650. {
  651. AzToolsFramework::ClearRegistry(CameraOrbitYawRotationInvertedSetting);
  652. }
  653. void ResetCameraPanInvertedX()
  654. {
  655. AzToolsFramework::ClearRegistry(CameraPanInvertedXSetting);
  656. }
  657. void ResetCameraPanInvertedY()
  658. {
  659. AzToolsFramework::ClearRegistry(CameraPanInvertedYSetting);
  660. }
  661. void ResetCameraZoomInverted()
  662. {
  663. AzToolsFramework::ClearRegistry(CameraZoomInvertedSetting);
  664. }
  665. void ResetCameraDefaultEditorPosition()
  666. {
  667. AzToolsFramework::ClearRegistry(CameraDefaultStartingPositionX);
  668. AzToolsFramework::ClearRegistry(CameraDefaultStartingPositionY);
  669. AzToolsFramework::ClearRegistry(CameraDefaultStartingPositionZ);
  670. }
  671. void ResetCameraDefaultOrbitDistance()
  672. {
  673. AzToolsFramework::ClearRegistry(CameraDefaultOrbitDistanceSetting);
  674. }
  675. void ResetCameraDefaultEditorOrientation()
  676. {
  677. AzToolsFramework::ClearRegistry(CameraDefaultStartingPitch);
  678. AzToolsFramework::ClearRegistry(CameraDefaultStartingYaw);
  679. }
  680. void ResetCameraGoToPositionInstantlyEnabled()
  681. {
  682. AzToolsFramework::ClearRegistry(CameraGoToPositionInstantlySetting);
  683. }
  684. void ResetCameraGoToPositionDuration()
  685. {
  686. AzToolsFramework::ClearRegistry(CameraGoToPositionDurationSetting);
  687. }
  688. void ResetCameraTranslateForwardChannelId()
  689. {
  690. AzToolsFramework::ClearRegistry(CameraTranslateForwardIdSetting);
  691. }
  692. void ResetCameraTranslateBackwardChannelId()
  693. {
  694. AzToolsFramework::ClearRegistry(CameraTranslateBackwardIdSetting);
  695. }
  696. void ResetCameraTranslateLeftChannelId()
  697. {
  698. AzToolsFramework::ClearRegistry(CameraTranslateLeftIdSetting);
  699. }
  700. void ResetCameraTranslateRightChannelId()
  701. {
  702. AzToolsFramework::ClearRegistry(CameraTranslateRightIdSetting);
  703. }
  704. void ResetCameraTranslateUpChannelId()
  705. {
  706. AzToolsFramework::ClearRegistry(CameraTranslateUpIdSetting);
  707. }
  708. void ResetCameraTranslateDownChannelId()
  709. {
  710. AzToolsFramework::ClearRegistry(CameraTranslateDownIdSetting);
  711. }
  712. void ResetCameraTranslateBoostChannelId()
  713. {
  714. AzToolsFramework::ClearRegistry(CameraTranslateBoostIdSetting);
  715. }
  716. void ResetCameraOrbitChannelId()
  717. {
  718. AzToolsFramework::ClearRegistry(CameraOrbitIdSetting);
  719. }
  720. void ResetCameraFreeLookChannelId()
  721. {
  722. AzToolsFramework::ClearRegistry(CameraFreeLookIdSetting);
  723. }
  724. void ResetCameraFreePanChannelId()
  725. {
  726. AzToolsFramework::ClearRegistry(CameraFreePanIdSetting);
  727. }
  728. void ResetCameraOrbitLookChannelId()
  729. {
  730. AzToolsFramework::ClearRegistry(CameraOrbitLookIdSetting);
  731. }
  732. void ResetCameraOrbitDollyChannelId()
  733. {
  734. AzToolsFramework::ClearRegistry(CameraOrbitDollyIdSetting);
  735. }
  736. void ResetCameraOrbitPanChannelId()
  737. {
  738. AzToolsFramework::ClearRegistry(CameraOrbitPanIdSetting);
  739. }
  740. void ResetCameraFocusChannelId()
  741. {
  742. AzToolsFramework::ClearRegistry(CameraFocusIdSetting);
  743. }
  744. } // namespace SandboxEditor