75 lines
2.6 KiB
C++
75 lines
2.6 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ViewportClientNavigationHelper.h"
|
|
|
|
FViewportClientNavigationHelper::FViewportClientNavigationHelper()
|
|
: bIsMouseLooking(false)
|
|
{
|
|
ResetTransformDelta();
|
|
ResetImpulseData();
|
|
}
|
|
|
|
bool FViewportClientNavigationHelper::HasTransformDelta() const
|
|
{
|
|
return !RotationDelta.IsNearlyZero() || !LocationDelta.IsNearlyZero() || !OrbitDelta.IsNearlyZero();
|
|
}
|
|
|
|
void FViewportClientNavigationHelper::ConsumeTransformDelta(FVector& OutLocationDelta, FRotator& OutRotationDelta)
|
|
{
|
|
OutLocationDelta = LocationDelta;
|
|
OutRotationDelta = RotationDelta;
|
|
|
|
// Reset after use
|
|
ResetTransformDelta();
|
|
}
|
|
|
|
void FViewportClientNavigationHelper::ResetTransformDelta()
|
|
{
|
|
LocationDelta = FVector::ZeroVector;
|
|
RotationDelta = FRotator::ZeroRotator;
|
|
}
|
|
|
|
void FViewportClientNavigationHelper::ConsumeImpulseData(FCameraControllerUserImpulseData& OutImpulseData)
|
|
{
|
|
// Translation
|
|
OutImpulseData.MoveForwardBackwardImpulse += ImpulseDataDelta.MoveForwardBackwardImpulse;
|
|
OutImpulseData.MoveRightLeftImpulse += ImpulseDataDelta.MoveRightLeftImpulse;
|
|
OutImpulseData.MoveWorldUpDownImpulse += ImpulseDataDelta.MoveWorldUpDownImpulse;
|
|
OutImpulseData.MoveLocalUpDownImpulse += ImpulseDataDelta.MoveLocalUpDownImpulse;
|
|
|
|
// Rotation
|
|
OutImpulseData.RotateYawImpulse += ImpulseDataDelta.RotateYawImpulse;
|
|
OutImpulseData.RotatePitchImpulse += ImpulseDataDelta.RotatePitchImpulse;
|
|
OutImpulseData.RotateRollImpulse += ImpulseDataDelta.RotateRollImpulse;
|
|
OutImpulseData.RotateYawVelocityModifier += ImpulseDataDelta.RotateYawVelocityModifier;
|
|
OutImpulseData.RotatePitchVelocityModifier += ImpulseDataDelta.RotatePitchVelocityModifier;
|
|
OutImpulseData.RotateRollVelocityModifier += ImpulseDataDelta.RotateRollVelocityModifier;
|
|
|
|
// FOV
|
|
OutImpulseData.ZoomOutInImpulse += ImpulseDataDelta.ZoomOutInImpulse;
|
|
|
|
// Reset after use
|
|
ResetImpulseData();
|
|
}
|
|
|
|
void FViewportClientNavigationHelper::ConsumeOrbitDelta(FVector& OutOrbitDelta)
|
|
{
|
|
OutOrbitDelta = OrbitDelta;
|
|
OrbitDelta = FVector::ZeroVector;
|
|
}
|
|
|
|
void FViewportClientNavigationHelper::ResetImpulseData()
|
|
{
|
|
ImpulseDataDelta.MoveForwardBackwardImpulse = 0.0f;
|
|
ImpulseDataDelta.MoveRightLeftImpulse = 0.0f;
|
|
ImpulseDataDelta.MoveWorldUpDownImpulse = 0.0f;
|
|
ImpulseDataDelta.MoveLocalUpDownImpulse = 0.0f;
|
|
ImpulseDataDelta.RotateYawImpulse = 0.0f;
|
|
ImpulseDataDelta.RotatePitchImpulse = 0.0f;
|
|
ImpulseDataDelta.RotateRollImpulse = 0.0f;
|
|
ImpulseDataDelta.RotateYawVelocityModifier = 0.0f;
|
|
ImpulseDataDelta.RotatePitchVelocityModifier = 0.0f;
|
|
ImpulseDataDelta.RotateRollVelocityModifier = 0.0f;
|
|
ImpulseDataDelta.ZoomOutInImpulse = 0.0f;
|
|
}
|