Files
UnrealEngineUWP/Engine/Source/Runtime/InteractiveToolsFramework/Private/BaseGizmos/TransformSources.cpp
Christina TempelaarL b3888165b3 Move gizmo primitive objects and related classes to Experimental/EditorInteractiveToolsFramework directory for 5.0. They are currently only used by UEditorTransformGizmo and are still in active development.
#jira UE-126648
#rb ryan.schmidt
#preflight 61437544568b3a00012173e0

[CL 17541920 by Christina TempelaarL in ue5-main branch]
2021-09-16 13:52:50 -04:00

97 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "BaseGizmos/TransformSources.h"
#include "Components/SceneComponent.h"
FTransform UGizmoComponentWorldTransformSource::GetTransform() const
{
return Component->GetComponentToWorld();
}
void UGizmoComponentWorldTransformSource::SetTransform(const FTransform& NewTransform)
{
if (bModifyComponentOnTransform)
{
Component->Modify();
}
Component->SetWorldTransform(NewTransform);
OnTransformChanged.Broadcast(this);
}
FTransform UGizmoScaledTransformSource::GetTransform() const
{
// get transform from child, and replace scale with external scale
FTransform Transform = ChildTransformSource->GetTransform();
FVector ExternalScale = ScaleProvider.GetScale();
Transform.SetScale3D(ExternalScale);
return Transform;
}
void UGizmoScaledTransformSource::SetTransform(const FTransform& NewTransform)
{
// forward incoming scale to external provider
FVector ExternalScale = NewTransform.GetScale3D();
ScaleProvider.SetScale(ExternalScale);
// remove scale from transform and forward to child source
FTransform Unscaled(NewTransform);
Unscaled.SetScale3D(FVector::OneVector);
ChildTransformSource->SetTransform(Unscaled);
OnTransformChanged.Broadcast(this);
}
FTransform UGizmoTransformProxyTransformSource::GetTransform() const
{
return Proxy->GetTransform();
}
void UGizmoTransformProxyTransformSource::SetTransform(const FTransform& NewTransform)
{
if (bOverrideSetPivotMode)
{
bool bProxySetPivotOriginal = Proxy->bSetPivotMode;
Proxy->bSetPivotMode = true;
Proxy->SetTransform(NewTransform);
Proxy->bSetPivotMode = bProxySetPivotOriginal;
OnPivotChanged.Broadcast(this);
}
else
{
Proxy->SetTransform(NewTransform);
if (Proxy->bSetPivotMode)
{
OnPivotChanged.Broadcast(this);
}
else
{
OnTransformChanged.Broadcast(this);
}
}
}
FTransform UGizmoScaledAndUnscaledTransformSources::GetTransform() const
{
return ScaledTransformSource->GetTransform();
}
void UGizmoScaledAndUnscaledTransformSources::SetTransform(const FTransform& NewTransform)
{
if (UnscaledTransformSource)
{
FTransform Unscaled(NewTransform);
Unscaled.SetScale3D(FVector::OneVector);
UnscaledTransformSource->SetTransform(Unscaled);
}
ScaledTransformSource->SetTransform(NewTransform);
OnTransformChanged.Broadcast(this);
}