Manipulator for params (#7231)
Signed-off-by: rhhong <rhhong@amazon.com>
This commit is contained in:
@@ -28,8 +28,6 @@
|
||||
namespace EMStudio
|
||||
{
|
||||
AZ_CLASS_ALLOCATOR_IMPL(AtomRenderPlugin, EMotionFX::EditorAllocator, 0);
|
||||
const AzToolsFramework::ManipulatorManagerId g_animManipulatorManagerId =
|
||||
AzToolsFramework::ManipulatorManagerId(AZ::Crc32("AnimManipulatorManagerId"));
|
||||
|
||||
AtomRenderPlugin::AtomRenderPlugin()
|
||||
: DockWidgetPlugin()
|
||||
|
||||
+3
@@ -500,6 +500,9 @@ namespace EMStudio
|
||||
painter.drawPath(path);
|
||||
}
|
||||
|
||||
const AzToolsFramework::ManipulatorManagerId g_animManipulatorManagerId =
|
||||
AzToolsFramework::ManipulatorManagerId(AZ::Crc32("AnimManipulatorManagerId"));
|
||||
|
||||
// shortcuts
|
||||
QApplication* GetApp()
|
||||
{
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
#include "MainWindow.h"
|
||||
#include <Source/Editor/Plugins/SkeletonOutliner/SkeletonOutlinerBus.h>
|
||||
|
||||
#include <AzToolsFramework/Manipulators/ManipulatorBus.h>
|
||||
|
||||
// include Qt
|
||||
#include <QString>
|
||||
#include <QPainter>
|
||||
@@ -169,6 +171,9 @@ namespace EMStudio
|
||||
EventProcessingCallback* m_eventProcessingCallback = nullptr;
|
||||
};
|
||||
|
||||
// Define the manipulator id for atom viewport in animation editor.
|
||||
extern const AzToolsFramework::ManipulatorManagerId g_animManipulatorManagerId;
|
||||
|
||||
// Shortcuts
|
||||
QApplication* GetApp();
|
||||
EMStudioManager* GetManager();
|
||||
|
||||
+44
@@ -25,6 +25,8 @@ namespace EMStudio
|
||||
, m_currentValue(0.0f, 0.0f, 0.0f)
|
||||
, m_gizmoButton(nullptr)
|
||||
, m_transformationGizmo(nullptr)
|
||||
, m_translationManipulators(
|
||||
AzToolsFramework::TranslationManipulators::Dimensions::Three, AZ::Transform::Identity(), AZ::Vector3::CreateOne())
|
||||
{
|
||||
UpdateValue();
|
||||
}
|
||||
@@ -102,6 +104,27 @@ namespace EMStudio
|
||||
m_gizmoButton->setCheckable(true);
|
||||
m_gizmoButton->setEnabled(!IsReadOnly());
|
||||
m_manipulatorCallback = manipulatorCallback;
|
||||
|
||||
// Setup the translation manipulator
|
||||
AzToolsFramework::ConfigureTranslationManipulatorAppearance3d(&m_translationManipulators);
|
||||
m_translationManipulators.InstallLinearManipulatorMouseMoveCallback(
|
||||
[this](const AzToolsFramework::LinearManipulator::Action& action)
|
||||
{
|
||||
OnManipulatorMoved(action.LocalPosition());
|
||||
});
|
||||
|
||||
m_translationManipulators.InstallPlanarManipulatorMouseMoveCallback(
|
||||
[this](const AzToolsFramework::PlanarManipulator::Action& action)
|
||||
{
|
||||
OnManipulatorMoved(action.LocalPosition());
|
||||
});
|
||||
|
||||
m_translationManipulators.InstallSurfaceManipulatorMouseMoveCallback(
|
||||
[this](const AzToolsFramework::SurfaceManipulator::Action& action)
|
||||
{
|
||||
OnManipulatorMoved(action.LocalPosition());
|
||||
});
|
||||
|
||||
return m_gizmoButton;
|
||||
}
|
||||
|
||||
@@ -183,6 +206,17 @@ namespace EMStudio
|
||||
EMStudioManager::MakeTransparentButton(m_gizmoButton, "Images/Icons/Vector3GizmoDisabled.png", "Show/Hide translation gizmo for visual manipulation");
|
||||
}
|
||||
|
||||
// These will enable/disable the translation manipulator for atom render viewport.
|
||||
if (m_translationManipulators.Registered())
|
||||
{
|
||||
m_translationManipulators.Unregister();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_translationManipulators.Register(g_animManipulatorManagerId);
|
||||
}
|
||||
|
||||
// These will enable/disable the translation manipulator for opengl render viewport.
|
||||
if (!m_transformationGizmo)
|
||||
{
|
||||
m_transformationGizmo = static_cast<MCommon::TranslateManipulator*>(GetManager()->AddTransformationManipulator(new MCommon::TranslateManipulator(70.0f, true)));
|
||||
@@ -197,4 +231,14 @@ namespace EMStudio
|
||||
m_transformationGizmo = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void Vector3GizmoParameterEditor::OnManipulatorMoved(const AZ::Vector3& position)
|
||||
{
|
||||
m_translationManipulators.SetLocalPosition(position);
|
||||
SetValue(position);
|
||||
if (m_manipulatorCallback)
|
||||
{
|
||||
m_manipulatorCallback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-1
@@ -8,7 +8,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ValueParameterEditor.h"
|
||||
#include <EMotionFX/Tools/EMotionStudio/Plugins/StandardPlugins/Source/AnimGraph/ParameterEditor/ValueParameterEditor.h>
|
||||
#include <AzToolsFramework/Manipulators/TranslationManipulators.h>
|
||||
|
||||
#include <QPushButton>
|
||||
|
||||
@@ -50,10 +51,16 @@ namespace EMStudio
|
||||
AZ::Vector3 GetMinValue() const;
|
||||
AZ::Vector3 GetMaxValue() const;
|
||||
|
||||
void OnManipulatorMoved(const AZ::Vector3& position);
|
||||
|
||||
private:
|
||||
AZ::Vector3 m_currentValue = AZ::Vector3::CreateZero();
|
||||
QPushButton* m_gizmoButton = nullptr;
|
||||
|
||||
// TODO: Remove this when we remove the opengl widget
|
||||
MCommon::TranslateManipulator* m_transformationGizmo = nullptr;
|
||||
|
||||
AzToolsFramework::TranslationManipulators m_translationManipulators;
|
||||
AZStd::function<void()> m_manipulatorCallback;
|
||||
};
|
||||
} // namespace EMStudio
|
||||
|
||||
Reference in New Issue
Block a user