| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #pragma once
- #include <AzFramework/Windowing/WindowBus.h>
- struct ImGuiContext;
- namespace AtomSampleViewer
- {
- class ImGuiSidebar
- {
- public:
- static void Reflect(AZ::ReflectContext* context);
- ImGuiSidebar() = default;
- /// @param configFilePath - Path to a local json file for maintaining state between runs. Should start with "@user@/"
- explicit ImGuiSidebar(AZStd::string_view configFilePath);
- void Activate();
- void Deactivate();
- void SetHideSidebar(bool isHidden);
- bool Begin();
- void End();
- private:
- struct ConfigFile final
- {
- AZ_TYPE_INFO(ImGuiSidebar::ConfigFile, "{8B5F54D4-1DE8-4476-AE2F-80B2EE02E0A1}");
- AZ_CLASS_ALLOCATOR(ConfigFile, AZ::SystemAllocator, 0);
- static void Reflect(AZ::ReflectContext* context);
- float m_width = 300.0f;
- };
- AzFramework::WindowSize BeginFrame();
- void EndFrame();
- bool LoadConfigFile();
- void SaveConfigFile();
- static const float s_widthMin;
- static const float s_widthMax;
- static const float s_widthStepSmall;
- static const float s_widthStepBig;
- bool m_hideSidebar = false;
- bool m_isSidebarReady = false;
- AZStd::string m_configFilePath;
- ConfigFile m_configFile;
- };
- } // namespace AtomSampleViewer
|