Merge branch 'development' into cmake/warn_virtual
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com>
This commit is contained in:
+13
-2
@@ -39,6 +39,8 @@ namespace AzManipulatorTestFramework
|
||||
DerivedDispatcherT* MouseLButtonDown();
|
||||
//! Set the left mouse button up.
|
||||
DerivedDispatcherT* MouseLButtonUp();
|
||||
//! Send a double click event.
|
||||
DerivedDispatcherT* MouseLButtonDoubleClick();
|
||||
//! Set the keyboard modifier button down.
|
||||
DerivedDispatcherT* KeyboardModifierDown(const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier);
|
||||
//! Set the keyboard modifier button up.
|
||||
@@ -71,6 +73,7 @@ namespace AzManipulatorTestFramework
|
||||
virtual void CameraStateImpl(const AzFramework::CameraState& cameraState) = 0;
|
||||
virtual void MouseLButtonDownImpl() = 0;
|
||||
virtual void MouseLButtonUpImpl() = 0;
|
||||
virtual void MouseLButtonDoubleClickImpl() = 0;
|
||||
virtual void MousePositionImpl(const AzFramework::ScreenPoint& position) = 0;
|
||||
virtual void KeyboardModifierDownImpl(const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier) = 0;
|
||||
virtual void KeyboardModifierUpImpl(const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier) = 0;
|
||||
@@ -167,7 +170,7 @@ namespace AzManipulatorTestFramework
|
||||
template<typename DerivedDispatcherT>
|
||||
DerivedDispatcherT* ActionDispatcher<DerivedDispatcherT>::MouseLButtonDown()
|
||||
{
|
||||
Log("%s", "Mouse left button down");
|
||||
Log("Mouse left button down");
|
||||
MouseLButtonDownImpl();
|
||||
return static_cast<DerivedDispatcherT*>(this);
|
||||
}
|
||||
@@ -175,11 +178,19 @@ namespace AzManipulatorTestFramework
|
||||
template<typename DerivedDispatcherT>
|
||||
DerivedDispatcherT* ActionDispatcher<DerivedDispatcherT>::MouseLButtonUp()
|
||||
{
|
||||
Log("%s", "Mouse left button up");
|
||||
Log("Mouse left button up");
|
||||
MouseLButtonUpImpl();
|
||||
return static_cast<DerivedDispatcherT*>(this);
|
||||
}
|
||||
|
||||
template<typename DerivedDispatcherT>
|
||||
DerivedDispatcherT* ActionDispatcher<DerivedDispatcherT>::MouseLButtonDoubleClick()
|
||||
{
|
||||
Log("Mouse left button double click");
|
||||
MouseLButtonDoubleClickImpl();
|
||||
return static_cast<DerivedDispatcherT*>(this);
|
||||
}
|
||||
|
||||
template<typename DerivedDispatcherT>
|
||||
const char* ActionDispatcher<DerivedDispatcherT>::KeyboardModifierString(
|
||||
const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier)
|
||||
|
||||
+1
@@ -58,6 +58,7 @@ namespace AzManipulatorTestFramework
|
||||
void CameraStateImpl(const AzFramework::CameraState& cameraState) override;
|
||||
void MouseLButtonDownImpl() override;
|
||||
void MouseLButtonUpImpl() override;
|
||||
void MouseLButtonDoubleClickImpl() override;
|
||||
void MousePositionImpl(const AzFramework::ScreenPoint& position) override;
|
||||
void KeyboardModifierDownImpl(const KeyboardModifier& keyModifier) override;
|
||||
void KeyboardModifierUpImpl(const KeyboardModifier& keyModifier) override;
|
||||
|
||||
-55
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
* 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 <AzManipulatorTestFramework/AzManipulatorTestFramework.h>
|
||||
#include <AzManipulatorTestFramework/ActionDispatcher.h>
|
||||
#include <AzManipulatorTestFramework/ImmediateModeActionDispatcher.h>
|
||||
#include <AzCore/std/containers/list.h>
|
||||
#include <AzCore/std/functional.h>
|
||||
|
||||
namespace AzManipulatorTestFramework
|
||||
{
|
||||
//! Buffers actions to be dispatched upon a call to Execute().
|
||||
class RetainedModeActionDispatcher
|
||||
: public ActionDispatcher<RetainedModeActionDispatcher>
|
||||
{
|
||||
public:
|
||||
explicit RetainedModeActionDispatcher(ManipulatorViewportInteraction& viewportManipulatorInteraction);
|
||||
//! Execute the sequence of actions and lock the dispatcher from adding further actions.
|
||||
RetainedModeActionDispatcher* Execute();
|
||||
//! Reset the sequence of actions and unlock the dispatcher from adding further actions.
|
||||
RetainedModeActionDispatcher* ResetSequence();
|
||||
|
||||
protected:
|
||||
// ActionDispatcher ...
|
||||
void EnableSnapToGridImpl() override;
|
||||
void DisableSnapToGridImpl() override;
|
||||
void GridSizeImpl(float size) override;
|
||||
void CameraStateImpl(const AzFramework::CameraState& cameraState) override;
|
||||
void MouseLButtonDownImpl() override;
|
||||
void MouseLButtonUpImpl() override;
|
||||
void MousePositionImpl(const AzFramework::ScreenPoint& position) override;
|
||||
void KeyboardModifierDownImpl(const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier) override;
|
||||
void KeyboardModifierUpImpl(const AzToolsFramework::ViewportInteraction::KeyboardModifier& keyModifier) override;
|
||||
void ExpectManipulatorBeingInteractedImpl() override;
|
||||
void ExpectManipulatorNotBeingInteractedImpl() override;
|
||||
void SetEntityWorldTransformImpl(AZ::EntityId entityId, const AZ::Transform& transform) override;
|
||||
void SetSelectedEntityImpl(AZ::EntityId entity) override;
|
||||
void SetSelectedEntitiesImpl(const AzToolsFramework::EntityIdList& entities) override;
|
||||
void EnterComponentModeImpl(const AZ::Uuid& uuid) override;
|
||||
|
||||
private:
|
||||
using Action = AZStd::function<void()>;
|
||||
void AddActionToSequence(Action&& action);
|
||||
ImmediateModeActionDispatcher m_dispatcher;
|
||||
AZStd::list<Action> m_actions;
|
||||
bool m_locked = false;
|
||||
};
|
||||
} // namespace AzManipulatorTestFramework
|
||||
@@ -83,7 +83,17 @@ namespace AzManipulatorTestFramework
|
||||
void ImmediateModeActionDispatcher::MouseLButtonUpImpl()
|
||||
{
|
||||
GetMouseInteractionEvent()->m_mouseEvent = AzToolsFramework::ViewportInteraction::MouseEvent::Up;
|
||||
m_viewportManipulatorInteraction.GetManipulatorManager().ConsumeMouseInteractionEvent(*GetMouseInteractionEvent());
|
||||
m_viewportManipulatorInteraction.GetManipulatorManager().ConsumeMouseInteractionEvent(*m_event);
|
||||
ToggleOff(GetMouseInteractionEvent()->m_mouseInteraction.m_mouseButtons.m_mouseButtons, MouseButton::Left);
|
||||
// the mouse position will be the same as the previous event, thus the delta will be 0
|
||||
MouseMoveAfterButton();
|
||||
}
|
||||
|
||||
void ImmediateModeActionDispatcher::MouseLButtonDoubleClickImpl()
|
||||
{
|
||||
GetMouseInteractionEvent()->m_mouseEvent = AzToolsFramework::ViewportInteraction::MouseEvent::DoubleClick;
|
||||
ToggleOn(GetMouseInteractionEvent()->m_mouseInteraction.m_mouseButtons.m_mouseButtons, MouseButton::Left);
|
||||
m_viewportManipulatorInteraction.GetManipulatorManager().ConsumeMouseInteractionEvent(*m_event);
|
||||
ToggleOff(GetMouseInteractionEvent()->m_mouseInteraction.m_mouseButtons.m_mouseButtons, MouseButton::Left);
|
||||
// the mouse position will be the same as the previous event, thus the delta will be 0
|
||||
MouseMoveAfterButton();
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
*
|
||||
*/
|
||||
|
||||
#include <AzManipulatorTestFramework/RetainedModeActionDispatcher.h>
|
||||
|
||||
namespace AzManipulatorTestFramework
|
||||
{
|
||||
using KeyboardModifier = AzToolsFramework::ViewportInteraction::KeyboardModifier;
|
||||
|
||||
RetainedModeActionDispatcher::RetainedModeActionDispatcher(
|
||||
ManipulatorViewportInteraction& viewportManipulatorInteraction)
|
||||
: m_dispatcher(viewportManipulatorInteraction)
|
||||
{
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::AddActionToSequence(Action&& action)
|
||||
{
|
||||
if (m_locked)
|
||||
{
|
||||
const char* error = "Couldn't add action to sequence, dispatcher is locked (you must call ResetSequence() \
|
||||
before adding actions to this dispatcher)";
|
||||
Log("%s", error);
|
||||
AZ_Assert(false, "Error: %s", error);
|
||||
}
|
||||
|
||||
m_actions.emplace_back(action);
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::EnableSnapToGridImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.EnableSnapToGrid(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::DisableSnapToGridImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.DisableSnapToGrid(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::GridSizeImpl(float size)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.GridSize(size); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::CameraStateImpl(const AzFramework::CameraState& cameraState)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.CameraState(cameraState); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::MouseLButtonDownImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.MouseLButtonDown(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::MouseLButtonUpImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.MouseLButtonUp(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::MousePositionImpl(const AzFramework::ScreenPoint& position)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.MousePosition(position); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::KeyboardModifierDownImpl(const KeyboardModifier& keyModifier)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.KeyboardModifierDown(keyModifier); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::KeyboardModifierUpImpl(const KeyboardModifier& keyModifier)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.KeyboardModifierUp(keyModifier); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::ExpectManipulatorBeingInteractedImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.ExpectManipulatorBeingInteracted(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::ExpectManipulatorNotBeingInteractedImpl()
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.ExpectManipulatorNotBeingInteracted(); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::SetEntityWorldTransformImpl(AZ::EntityId entityId, const AZ::Transform& transform)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.SetEntityWorldTransform(entityId, transform); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::SetSelectedEntityImpl(AZ::EntityId entity)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.SetSelectedEntity(entity); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::SetSelectedEntitiesImpl(const AzToolsFramework::EntityIdList& entities)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.SetSelectedEntities(entities); });
|
||||
}
|
||||
|
||||
void RetainedModeActionDispatcher::EnterComponentModeImpl(const AZ::Uuid& uuid)
|
||||
{
|
||||
AddActionToSequence([=]() { m_dispatcher.EnterComponentMode(uuid); });
|
||||
}
|
||||
|
||||
RetainedModeActionDispatcher* RetainedModeActionDispatcher::ResetSequence()
|
||||
{
|
||||
Log("%s", "Resetting the action sequence");
|
||||
m_actions.clear();
|
||||
m_dispatcher.ResetEvent();
|
||||
m_locked = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
RetainedModeActionDispatcher* RetainedModeActionDispatcher::Execute()
|
||||
{
|
||||
Log("Executing %u actions", m_actions.size());
|
||||
for (auto& action : m_actions)
|
||||
{
|
||||
action();
|
||||
}
|
||||
m_dispatcher.ResetEvent();
|
||||
m_locked = true;
|
||||
return this;
|
||||
}
|
||||
} // namespace AzManipulatorTestFramework
|
||||
@@ -14,12 +14,10 @@ set(FILES
|
||||
Include/AzManipulatorTestFramework/DirectManipulatorViewportInteraction.h
|
||||
Include/AzManipulatorTestFramework/IndirectManipulatorViewportInteraction.h
|
||||
Include/AzManipulatorTestFramework/ImmediateModeActionDispatcher.h
|
||||
Include/AzManipulatorTestFramework/RetainedModeActionDispatcher.h
|
||||
Include/AzManipulatorTestFramework/AzManipulatorTestFrameworkUtils.h
|
||||
Source/ViewportInteraction.cpp
|
||||
Source/DirectManipulatorViewportInteraction.cpp
|
||||
Source/IndirectManipulatorViewportInteraction.cpp
|
||||
Source/ImmediateModeActionDispatcher.cpp
|
||||
Source/RetainedModeActionDispatcher.cpp
|
||||
Source/AzManipulatorTestFrameworkUtils.cpp
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user