/* * 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 "InputChannelGestureHold.h" //////////////////////////////////////////////////////////////////////////////////////////////////// namespace Gestures { using namespace AzFramework; //////////////////////////////////////////////////////////////////////////////////////////////// void InputChannelGestureHold::TypeAndConfig::Reflect(AZ::ReflectContext* context) { if (AZ::SerializeContext* serialize = azrtti_cast(context)) { serialize->Class() ->Version(0) ; if (AZ::EditContext* ec = serialize->GetEditContext()) { ec->Class("Hold", "Gesture recognizer for holds.") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ; } } RecognizerHold::Config::Reflect(context); } //////////////////////////////////////////////////////////////////////////////////////////////// InputChannelGesture* InputChannelGestureHold::TypeAndConfig::CreateInputChannel( const AzFramework::InputChannelId& channelId, const AzFramework::InputDevice& inputDevice) { return aznew InputChannelGestureHold(channelId, inputDevice, *this); } //////////////////////////////////////////////////////////////////////////////////////////////// InputChannelGestureHold::InputChannelGestureHold(const InputChannelId& inputChannelId, const InputDevice& inputDevice, const Config& config) : InputChannelGesture(inputChannelId, inputDevice) , RecognizerHold(config) { RecognizerHold::Enable(); } //////////////////////////////////////////////////////////////////////////////////////////////// InputChannelGestureHold::~InputChannelGestureHold() { RecognizerHold::Disable(); } //////////////////////////////////////////////////////////////////////////////////////////////// float InputChannelGestureHold::GetValue() const { return InputChannel::IsActive() ? GetDuration() : 0.0f; } //////////////////////////////////////////////////////////////////////////////////////////////// const InputChannel::CustomData* InputChannelGestureHold::GetCustomData() const { return this; } //////////////////////////////////////////////////////////////////////////////////////////////// void InputChannelGestureHold::OnContinuousGestureInitiated() { UpdateNormalizedPositionAndDeltaFromScreenPosition(GetCurrentPosition()); InputChannel::UpdateState(true); } //////////////////////////////////////////////////////////////////////////////////////////////// void InputChannelGestureHold::OnContinuousGestureUpdated() { UpdateNormalizedPositionAndDeltaFromScreenPosition(GetCurrentPosition()); InputChannel::UpdateState(true); } //////////////////////////////////////////////////////////////////////////////////////////////// void InputChannelGestureHold::OnContinuousGestureEnded() { UpdateNormalizedPositionAndDeltaFromScreenPosition(GetCurrentPosition()); InputChannel::UpdateState(false); } } // namespace Gestures