Atom Tools: Restoring idle behavior for viewport input behavior controller

Signed-off-by: Guthrie Adams <guthadam@amazon.com>
monroegm-disable-blank-issue-2
Guthrie Adams 4 years ago
parent 60d7533301
commit 3bdb0f5d9b

@ -0,0 +1,21 @@
/*
* 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 <AtomToolsFramework/Viewport/ViewportInputBehaviorController/ViewportInputBehavior.h>
namespace AtomToolsFramework
{
class IdleBehavior final : public ViewportInputBehavior
{
public:
IdleBehavior(ViewportInputBehaviorControllerInterface* controller);
virtual ~IdleBehavior() = default;
};
} // namespace AtomToolsFramework

@ -0,0 +1,18 @@
/*
* 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 <AtomToolsFramework/Viewport/ViewportInputBehaviorController/IdleBehavior.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/ViewportInputBehaviorControllerInterface.h>
namespace AtomToolsFramework
{
IdleBehavior::IdleBehavior(ViewportInputBehaviorControllerInterface* controller)
: ViewportInputBehavior(controller)
{
}
} // namespace AtomToolsFramework

@ -280,8 +280,14 @@ namespace AtomToolsFramework
void ViewportInputBehaviorController::EvaluateControlBehavior()
{
auto it = m_behaviorMap.find(m_keys);
if (it == m_behaviorMap.end())
{
it = m_behaviorMap.find(None);
}
AZStd::shared_ptr<ViewportInputBehavior> nextBehavior =
it != m_behaviorMap.end() ? it->second : AZStd::shared_ptr<ViewportInputBehavior>();
if (m_behavior != nextBehavior)
{
if (m_behavior)

@ -95,6 +95,8 @@ set(FILES
Include/AtomToolsFramework/Viewport/ViewportInputBehaviorController/ViewportInputBehavior.h
Source/Viewport/ViewportInputBehaviorController/DollyCameraBehavior.cpp
Include/AtomToolsFramework/Viewport/ViewportInputBehaviorController/DollyCameraBehavior.h
Source/Viewport/ViewportInputBehaviorController/IdleBehavior.cpp
Include/AtomToolsFramework/Viewport/ViewportInputBehaviorController/IdleBehavior.h
Source/Viewport/ViewportInputBehaviorController/MoveCameraBehavior.cpp
Include/AtomToolsFramework/Viewport/ViewportInputBehaviorController/MoveCameraBehavior.h
Source/Viewport/ViewportInputBehaviorController/PanCameraBehavior.cpp

@ -41,6 +41,7 @@
#include <AtomLyIntegration/CommonFeatures/PostProcess/ExposureControl/ExposureControlComponentConstants.h>
#include <AtomLyIntegration/CommonFeatures/PostProcess/PostFxLayerComponentConstants.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/DollyCameraBehavior.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/IdleBehavior.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/MoveCameraBehavior.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/OrbitCameraBehavior.h>
#include <AtomToolsFramework/Viewport/ViewportInputBehaviorController/PanCameraBehavior.h>
@ -312,6 +313,8 @@ namespace MaterialEditor
// Create viewport input controller and regioster its behaviors
m_viewportController.reset(
aznew ViewportInputBehaviorController(m_cameraEntity->GetId(), m_modelEntity->GetId(), m_iblEntity->GetId()));
m_viewportController->AddBehavior(
ViewportInputBehaviorController::None, AZStd::make_shared<IdleBehavior>(m_viewportController.get()));
m_viewportController->AddBehavior(
ViewportInputBehaviorController::Lmb, AZStd::make_shared<PanCameraBehavior>(m_viewportController.get()));
m_viewportController->AddBehavior(

Loading…
Cancel
Save