Ensure SnapToGrid only appears when GridSnapping is enabled LYN-2302 (#1362)
* updates to better support showing/hiding viewport ui when grid snapping is enabled/disabled * connect up editor settings callbacks * minor polish changes * api rename * updates following review feedback
This commit is contained in:
committed by
GitHub
parent
f0da36a301
commit
8ffd16b0be
@@ -14,6 +14,7 @@
|
||||
|
||||
#include <AzCore/Casting/numeric_cast.h>
|
||||
#include <AzCore/Settings/SettingsRegistry.h>
|
||||
#include <AzCore/Settings/SettingsRegistryMergeUtils.h>
|
||||
#include <AzCore/std/string/string_view.h>
|
||||
|
||||
namespace SandboxEditor
|
||||
@@ -56,6 +57,39 @@ namespace SandboxEditor
|
||||
return value;
|
||||
}
|
||||
|
||||
struct EditorViewportSettingsCallbacksImpl : public EditorViewportSettingsCallbacks
|
||||
{
|
||||
EditorViewportSettingsCallbacksImpl()
|
||||
{
|
||||
if (auto* registry = AZ::SettingsRegistry::Get())
|
||||
{
|
||||
using AZ::SettingsRegistryMergeUtils::IsPathAncestorDescendantOrEqual;
|
||||
|
||||
m_notifyEventHandler = registry->RegisterNotifier(
|
||||
[this](const AZStd::string_view path, [[maybe_unused]] const AZ::SettingsRegistryInterface::Type type)
|
||||
{
|
||||
if (IsPathAncestorDescendantOrEqual(GridSnappingSetting, path))
|
||||
{
|
||||
m_gridSnappingChanged.Signal(GridSnappingEnabled());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void SetGridSnappingChangedEvent(GridSnappingChangedEvent::Handler& handler) override
|
||||
{
|
||||
handler.Connect(m_gridSnappingChanged);
|
||||
}
|
||||
|
||||
GridSnappingChangedEvent m_gridSnappingChanged;
|
||||
AZ::SettingsRegistryInterface::NotifyEventHandler m_notifyEventHandler;
|
||||
};
|
||||
|
||||
AZStd::unique_ptr<EditorViewportSettingsCallbacks> CreateEditorViewportSettingsCallbacks()
|
||||
{
|
||||
return AZStd::make_unique<EditorViewportSettingsCallbacksImpl>();
|
||||
}
|
||||
|
||||
bool GridSnappingEnabled()
|
||||
{
|
||||
return GetRegistry(GridSnappingSetting, false);
|
||||
|
||||
Reference in New Issue
Block a user