3
0

LiveLoggingWindowSession.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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. #pragma once
  9. #if !defined(Q_MOC_RUN)
  10. #include <QAbstractListModel>
  11. #include <AzCore/UserSettings/UserSettings.h>
  12. #include <AzFramework/Network/IRemoteTools.h>
  13. #include <AzToolsFramework/Entity/EditorEntityContextBus.h>
  14. #include <Editor/View/Widgets/LoggingPanel/LoggingWindowSession.h>
  15. #include <Editor/View/Widgets/LoggingPanel/LiveWindowSession/LiveLoggingDataAggregator.h>
  16. #endif
  17. namespace ScriptCanvasEditor
  18. {
  19. class TargetManagerModel
  20. : public QAbstractListModel
  21. {
  22. public:
  23. AZ_CLASS_ALLOCATOR(TargetManagerModel, AZ::SystemAllocator);
  24. TargetManagerModel();
  25. // QAbstarctItemModel
  26. int rowCount(const QModelIndex& parent = QModelIndex()) const override;
  27. QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
  28. ////
  29. void TargetJoinedNetwork(AzFramework::RemoteToolsEndpointInfo info);
  30. void TargetLeftNetwork(AzFramework::RemoteToolsEndpointInfo info);
  31. AzFramework::RemoteToolsEndpointInfo FindTargetInfoForRow(int row);
  32. int GetRowForTarget(AZ::u32 targetId);
  33. private:
  34. void ScrapeTargetInfo();
  35. AZStd::vector<AzFramework::RemoteToolsEndpointInfo> m_targetInfo;
  36. };
  37. class LiveLoggingUserSettings
  38. : public AZ::UserSettings
  39. {
  40. public:
  41. static AZStd::intrusive_ptr<LiveLoggingUserSettings> FindSettingsInstance();
  42. AZ_RTTI(LiveLoggingUserSettings, "{2E32C949-5766-480D-B569-781BE9166B2E}", AZ::UserSettings);
  43. AZ_CLASS_ALLOCATOR(LiveLoggingUserSettings, AZ::SystemAllocator);
  44. static void Reflect(AZ::ReflectContext* reflectContext);
  45. LiveLoggingUserSettings() = default;
  46. void SetAutoCaptureEnabled(bool enabled);
  47. bool IsAutoCaptureEnabled() const;
  48. void SetLiveUpdates(bool enabled);
  49. bool IsLiveUpdating() const;
  50. private:
  51. bool m_isAutoCaptureEnabled = true;
  52. bool m_enableLiveUpdates = true;
  53. };
  54. class LiveLoggingWindowSession
  55. : public LoggingWindowSession
  56. , public AzToolsFramework::EditorEntityContextNotificationBus::Handler
  57. , public ScriptCanvas::Debugger::ServiceNotificationsBus::Handler
  58. {
  59. Q_OBJECT
  60. public:
  61. AZ_CLASS_ALLOCATOR(LiveLoggingWindowSession, AZ::SystemAllocator);
  62. LiveLoggingWindowSession(QWidget* parent = nullptr);
  63. ~LiveLoggingWindowSession() override;
  64. // AzFramework::TargetManagerClient
  65. void DesiredTargetChanged(AZ::u32 newId, AZ::u32 oldId);
  66. void DesiredTargetConnected(bool connected);
  67. void TargetJoinedNetwork(AzFramework::RemoteToolsEndpointInfo info);
  68. void TargetLeftNetwork(AzFramework::RemoteToolsEndpointInfo info);
  69. ////
  70. // AzToolsFramework::EditorEntityContextNotificationBus::Handler
  71. void OnStartPlayInEditorBegin() override;
  72. void OnStopPlayInEditor() override;
  73. ////
  74. // ScriptCavnas::Debugger::ServiceNotificationsBus
  75. void Connected(const ScriptCanvas::Debugger::Target& target) override;
  76. ////
  77. protected:
  78. void OnCaptureButtonPressed() override;
  79. void OnPlaybackButtonPressed() override;
  80. void OnOptionsButtonPressed() override;
  81. void OnTargetChanged(int currentIndex) override;
  82. private:
  83. void OnAutoCaptureToggled(bool checked);
  84. void OnLiveUpdateToggled(bool checked);
  85. void StartDataCapture();
  86. void StopDataCapture();
  87. void ConfigureScriptTarget(ScriptCanvas::Debugger::ScriptTarget& captureInfo);
  88. void SetIsCapturing(bool isCapturing);
  89. TargetManagerModel* m_targetManagerModel;
  90. bool m_startedSession;
  91. bool m_encodeStaticEntities;
  92. bool m_isCapturing;
  93. LiveLoggingDataAggregator m_liveDataAggregator;
  94. ScriptCanvas::Debugger::Target m_targetConfiguration;
  95. AZStd::intrusive_ptr<LiveLoggingUserSettings> m_userSettings;
  96. };
  97. }