You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#jira UE-126648 #rb ryan.schmidt #preflight 61437544568b3a00012173e0 [CL 17541920 by Christina TempelaarL in ue5-main branch]
97 lines
2.3 KiB
C++
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);
|
|
} |