Files
UnrealEngine/Engine/Source/Editor/UnrealEd/Private/ViewportClientNavigationHelper.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

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;
}