October3d55/M/LGUI/Source/LTween/Private/LTweenBPLibrary.cpp

1223 lines
48 KiB
C++
Raw Normal View History

2025-03-10 09:43:27 +08:00
// Copyright 2019-Present LexLiu. All Rights Reserved.
#include "LTweenBPLibrary.h"
#include "LTween.h"
#include "Components/SceneComponent.h"
#include "Materials/MaterialInstanceDynamic.h"
#include "Components/MeshComponent.h"
ULTweener* ULTweenBPLibrary::FloatTo(UObject* WorldContextObject, const FLTweenFloatSetterDynamic& setter, float startValue, float endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenFloatGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenFloatSetterFunction::CreateLambda([setter](float value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::DoubleTo(UObject* WorldContextObject, const FLTweenDoubleSetterDynamic& setter, double startValue, double endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenDoubleGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenDoubleSetterFunction::CreateLambda([setter](auto value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::IntTo(UObject* WorldContextObject, const FLTweenIntSetterDynamic& setter, int startValue, int endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenIntGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenIntSetterFunction::CreateLambda([setter](int value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::Vector2To(UObject* WorldContextObject, const FLTweenVector2SetterDynamic& setter, FVector2D startValue, FVector2D endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector2DGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenVector2DSetterFunction::CreateLambda([setter](const FVector2D& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::Vector3To(UObject* WorldContextObject, const FLTweenVector3SetterDynamic& setter, FVector startValue, FVector endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVectorGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenVectorSetterFunction::CreateLambda([setter](const FVector& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::Vector4To(UObject* WorldContextObject, const FLTweenVector4SetterDynamic& setter, FVector4 startValue, FVector4 endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenVector4SetterFunction::CreateLambda([setter](const FVector4& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::ColorTo(UObject* WorldContextObject, const FLTweenColorSetterDynamic& setter, FColor startValue, FColor endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenColorGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenColorSetterFunction::CreateLambda([setter](const FColor& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LinearColorTo(UObject* WorldContextObject, const FLTweenLinearColorSetterDynamic& setter, FLinearColor startValue, FLinearColor endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenLinearColorGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenLinearColorSetterFunction::CreateLambda([setter](const FLinearColor& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::QuaternionTo(UObject* WorldContextObject, const FLTweenQuaternionSetterDynamic& setter, FQuat startValue, FQuat endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenQuaternionGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenQuaternionSetterFunction::CreateLambda([setter](const FQuat& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::RotatorTo(UObject* WorldContextObject, const FLTweenRotatorSetterDynamic& setter, FRotator startValue, FRotator endValue, float duration, float delay, ELTweenEase ease)
{
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenRotatorGetterFunction::CreateLambda([startValue]
{
return startValue;
}), FLTweenRotatorSetterFunction::CreateLambda([setter](const FRotator& value)
{
if (setter.IsBound())
setter.Execute(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
#pragma region PositionXYZ
ULTweener* ULTweenBPLibrary::LocalPositionXTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionXTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().X;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target](auto value) {
auto location = target->GetRelativeLocation();
location.X = value;
target->SetRelativeLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionYTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionYTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().Y;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target](auto value) {
auto location = target->GetRelativeLocation();
location.Y = value;
target->SetRelativeLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionZTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionZTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().Z;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [=](auto value) {
auto location = target->GetRelativeLocation();
location.Z = value;
target->SetRelativeLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionXTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionXTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().X;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetRelativeLocation();
location.X = value;
target->SetRelativeLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionYTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionYTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().Y;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetRelativeLocation();
location.Y = value;
target->SetRelativeLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionZTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionZTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeLocation().Z;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetRelativeLocation();
location.Z = value;
target->SetRelativeLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionXTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionXTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().X;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target](auto value) {
auto location = target->GetComponentLocation();
location.X = value;
target->SetWorldLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionYTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionYTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().Y;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target](auto value) {
auto location = target->GetComponentLocation();
location.Y = value;
target->SetWorldLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionZTo(USceneComponent* target, double endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionZTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().Z;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target](auto value) {
auto location = target->GetComponentLocation();
location.Z = value;
target->SetWorldLocation(location);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionXTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionXTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().X;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetComponentLocation();
location.X = value;
target->SetWorldLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionYTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionYTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().Y;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetComponentLocation();
location.Y = value;
target->SetWorldLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionZTo_Sweep(USceneComponent* target, double endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionZTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenDoubleGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentLocation().Z;
}), FLTweenDoubleSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](auto value) {
auto location = target->GetComponentLocation();
location.Z = value;
target->SetWorldLocation(location, teleport, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
#pragma endregion PositionXYZ
#pragma region Position
ULTweener* ULTweenBPLibrary::LocalPositionTo(USceneComponent* target, FVector endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target
, FLTweenPositionGetterFunction::CreateUObject(target, &USceneComponent::GetRelativeLocation)
, FLTweenPositionSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeLocation)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionTo(USceneComponent* target, FVector endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target
, FLTweenPositionGetterFunction::CreateUObject(target, &USceneComponent::GetComponentLocation)
, FLTweenPositionSetterFunction::CreateUObject(target, &USceneComponent::SetWorldLocation)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalPositionTo_Sweep(USceneComponent* target, FVector endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalPositionTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target
, FLTweenVectorGetterFunction::CreateUObject(target, &USceneComponent::GetRelativeLocation)
, FLTweenPositionSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeLocation)
, endValue, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldPositionTo_Sweep(USceneComponent* target, FVector endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldPositionTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target
, FLTweenPositionGetterFunction::CreateUObject(target, &USceneComponent::GetComponentLocation)
, FLTweenPositionSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeLocation)
, endValue, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
#pragma endregion Position
ULTweener* ULTweenBPLibrary::LocalScaleTo(USceneComponent* target, FVector endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalScaleTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target
, FLTweenVectorGetterFunction::CreateUObject(target, &USceneComponent::GetRelativeScale3D)
, FLTweenVectorSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeScale3D)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
#pragma region Rotation
ULTweener* ULTweenBPLibrary::LocalRotateEulerAngleTo(USceneComponent* target, FVector eulerAngle, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotateEulerAngleTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeRotationCache().GetCachedQuat();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeRotation)
, eulerAngle, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalRotationQuaternionTo(USceneComponent* target, const FQuat& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotationTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeRotationCache().GetCachedQuat();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeRotation)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalRotateEulerAngleTo_Sweep(USceneComponent* target, FVector eulerAngle, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotateEulerAngleTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeRotationCache().GetCachedQuat();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeRotation)
, eulerAngle, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalRotationQuaternionTo_Sweep(USceneComponent* target, const FQuat& endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotationTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetRelativeRotationCache().GetCachedQuat();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetRelativeRotation)
, endValue, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::LocalRotatorTo(USceneComponent* target, FRotator endValue, bool shortestPath, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotatorTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
if (shortestPath)
{
return LocalRotationQuaternionTo(target, endValue.Quaternion(), duration, delay, ease);
}
else
{
auto Tweener = ULTweenManager::To(target
, FLTweenRotatorGetterFunction::CreateUObject(target, &USceneComponent::GetRelativeRotation)
, FLTweenRotatorSetterFunction::CreateWeakLambda(target, [target] (FRotator value)
{
target->SetRelativeRotation(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
}
ULTweener* ULTweenBPLibrary::LocalRotatorTo_Sweep(USceneComponent* target, FRotator endValue, bool shortestPath, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::LocalRotatorTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
if (shortestPath)
{
return LocalRotationQuaternionTo_Sweep(target, endValue.Quaternion(), sweepHitResult, sweep, teleport, duration, delay, ease);
}
else
{
auto Tweener = ULTweenManager::To(target
, FLTweenRotatorGetterFunction::CreateUObject(target, &USceneComponent::GetRelativeRotation)
, FLTweenRotatorSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](FRotator value)
{
target->SetRelativeRotation(value, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
}
ULTweener* ULTweenBPLibrary::WorldRotateEulerAngleTo(USceneComponent* target, FVector eulerAngle, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotateEulerAngleTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentRotation().Quaternion();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetWorldRotation)
, eulerAngle, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldRotationQuaternionTo(USceneComponent* target, const FQuat& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotationTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentRotation().Quaternion();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetWorldRotation)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldRotateEulerAngleTo_Sweep(USceneComponent* target, FVector eulerAngle, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotateEulerAngleTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentRotation().Quaternion();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetWorldRotation)
, eulerAngle, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldRotationQuaternionTo_Sweep(USceneComponent* target, const FQuat& endValue, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotationTo_Sweep] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(target, FLTweenRotationQuatGetterFunction::CreateWeakLambda(target, [target]
{
return target->GetComponentRotation().Quaternion();
}), FLTweenRotationQuatSetterFunction::CreateUObject(target, &USceneComponent::SetWorldRotation)
, endValue, duration, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::WorldRotatorTo(USceneComponent* target, FRotator endValue, bool shortestPath, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotatorTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
if (shortestPath)
{
return WorldRotationQuaternionTo(target, endValue.Quaternion(), duration, delay, ease);
}
else
{
auto Tweener = ULTweenManager::To(target
, FLTweenRotatorGetterFunction::CreateUObject(target, &USceneComponent::GetComponentRotation)
, FLTweenRotatorSetterFunction::CreateWeakLambda(target, [target](FRotator value)
{
target->SetWorldRotation(value);
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
}
ULTweener* ULTweenBPLibrary::WorldRotatorTo_Sweep(USceneComponent* target, FRotator endValue, bool shortestPath, FHitResult& sweepHitResult, bool sweep, bool teleport, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::WorldRotatorTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
if (shortestPath)
{
return WorldRotationQuaternionTo_Sweep(target, endValue.Quaternion(), sweepHitResult, sweep, teleport, duration, delay, ease);
}
else
{
auto Tweener = ULTweenManager::To(target
, FLTweenRotatorGetterFunction::CreateUObject(target, &USceneComponent::GetComponentRotation)
, FLTweenRotatorSetterFunction::CreateWeakLambda(target, [target, &sweepHitResult, sweep, teleport](FRotator value)
{
target->SetWorldRotation(value, sweep, sweep ? &sweepHitResult : nullptr, TeleportFlagToEnum(teleport));
}), endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
}
#pragma endregion Rotation
#pragma region Material
ULTweener* ULTweenBPLibrary::MaterialScalarParameterTo(UObject* WorldContextObject, UMaterialInstanceDynamic* target, FName parameterName, float endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(WorldContextObject))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MaterialScalarParameterTo] WorldContextObject is not valid!"));
return nullptr;
}
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MaterialScalarParameterTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
float startValue = 0;
int32 parameterIndex = 0;
if (target->GetScalarParameterValue(parameterName, startValue))
{
target->InitializeScalarParameterAndGetIndex(parameterName, startValue, parameterIndex);
}
else
{
UE_LOG(LTween, Warning, TEXT("[ULTweenBPLibrary::MaterialScalarParameterTo]GetScalarParameterValue:%s error!"), *(parameterName.ToString()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenMaterialScalarGetterFunction::CreateWeakLambda(target, [target, parameterName](float& result)
{
return target->GetScalarParameterValue(parameterName, result);
}), FLTweenMaterialScalarSetterFunction::CreateUObject(target, &UMaterialInstanceDynamic::SetScalarParameterByIndex)
, endValue, duration, parameterIndex);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::MaterialVectorParameterTo(UObject* WorldContextObject, UMaterialInstanceDynamic* target, FName parameterName, FLinearColor endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(WorldContextObject))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MaterialVectorParameterTo] WorldContextObject is not valid!"));
return nullptr;
}
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MaterialVectorParameterTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
FLinearColor startValue = FLinearColor();
int32 parameterIndex = 0;
if (target->GetVectorParameterValue(parameterName, startValue))
{
target->InitializeVectorParameterAndGetIndex(parameterName, startValue, parameterIndex);
}
else
{
UE_LOG(LTween, Warning, TEXT("[ULTweenBPLibrary::MaterialVectorParameterTo]GetVectorParameterValue:%s error!"), *(parameterName.ToString()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenMaterialVectorGetterFunction::CreateWeakLambda(target, [target, parameterName](FLinearColor& result)
{
return target->GetVectorParameterValue(parameterName, result);
}), FLTweenMaterialVectorSetterFunction::CreateUObject(target, &UMaterialInstanceDynamic::SetVectorParameterByIndex)
, endValue, duration, parameterIndex);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::MeshMaterialScalarParameterTo(UPrimitiveComponent* target, int materialIndex, FName parameterName, float endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MeshMaterialScalarParameterTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
float startValue = 0;
int32 parameterIndex = 0;
auto material = target->CreateAndSetMaterialInstanceDynamic(parameterIndex);
if (material->GetScalarParameterValue(parameterName, startValue))
{
material->InitializeScalarParameterAndGetIndex(parameterName, startValue, parameterIndex);
}
else
{
UE_LOG(LTween, Warning, TEXT("[ULTweenBPLibrary::MaterialScalarParameterTo]GetScalarParameterValue:%s error!"), *(parameterName.ToString()));
return nullptr;
}
auto Tweener = ULTweenManager::To(material, FLTweenMaterialScalarGetterFunction::CreateWeakLambda(material, [material, parameterName](float& result)
{
return material->GetScalarParameterValue(parameterName, result);
}), FLTweenMaterialScalarSetterFunction::CreateUObject(material, &UMaterialInstanceDynamic::SetScalarParameterByIndex)
, endValue, duration, parameterIndex);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::MeshMaterialVectorParameterTo(UPrimitiveComponent* target, int materialIndex, FName parameterName, FLinearColor endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[ULTweenBPLibrary::MeshMaterialVectorParameterTo] target is not valid:%s"), *(target->GetPathName()));
return nullptr;
}
FLinearColor startValue = FLinearColor();
int32 parameterIndex = 0;
auto material = target->CreateAndSetMaterialInstanceDynamic(parameterIndex);
if (material->GetVectorParameterValue(parameterName, startValue))
{
material->InitializeVectorParameterAndGetIndex(parameterName, startValue, parameterIndex);
}
else
{
UE_LOG(LTween, Warning, TEXT("[ULTweenBPLibrary::MaterialVectorParameterTo]GetVectorParameterValue:%s error!"), *(parameterName.ToString()));
return nullptr;
}
auto Tweener = ULTweenManager::To(material, FLTweenMaterialVectorGetterFunction::CreateWeakLambda(material, [material, parameterName](FLinearColor& result)
{
return material->GetVectorParameterValue(parameterName, result);
}), FLTweenMaterialVectorSetterFunction::CreateUObject(material, &UMaterialInstanceDynamic::SetVectorParameterByIndex)
, endValue, duration, parameterIndex);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease);
}
return Tweener;
}
#pragma endregion
#pragma region UMG
#include "Components/CanvasPanelSlot.h"
ULTweener* ULTweenBPLibrary::UMG_CanvasPanelSlot_PositionTo(UObject* WorldContextObject, UCanvasPanelSlot* target, const FVector2D& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject
, FLTweenVector2DGetterFunction::CreateUObject(target, &UCanvasPanelSlot::GetPosition)
, FLTweenVector2DSetterFunction::CreateUObject(target, &UCanvasPanelSlot::SetPosition)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::UMG_CanvasPanelSlot_SizeTo(UObject* WorldContextObject, class UCanvasPanelSlot* target, const FVector2D& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject
, FLTweenVector2DGetterFunction::CreateUObject(target, &UCanvasPanelSlot::GetSize)
, FLTweenVector2DSetterFunction::CreateUObject(target, &UCanvasPanelSlot::SetSize)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/HorizontalBoxSlot.h"
ULTweener* ULTweenBPLibrary::UMG_HorizontalBoxSlot_PaddingTo(UObject* WorldContextObject, UHorizontalBoxSlot* target, const FMargin& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto endValueVector4 = FVector4(endValue.Left, endValue.Top, endValue.Right, endValue.Bottom);
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateWeakLambda(target, [=]
{
auto padding = target->GetPadding();
return FVector4(padding.Left, padding.Top, padding.Right, padding.Bottom);
}), FLTweenVector4SetterFunction::CreateWeakLambda(target, [=](const FVector4& value) {
target->SetPadding(FMargin(value.X, value.Y, value.Z, value.W));
}), endValueVector4, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/VerticalBoxSlot.h"
ULTweener* ULTweenBPLibrary::UMG_VerticalBoxSlot_PaddingTo(UObject* WorldContextObject, UVerticalBoxSlot* target, const FMargin& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto endValueVector4 = FVector4(endValue.Left, endValue.Top, endValue.Right, endValue.Bottom);
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateWeakLambda(target, [=]
{
auto padding = target->GetPadding();
return FVector4(padding.Left, padding.Top, padding.Right, padding.Bottom);
}), FLTweenVector4SetterFunction::CreateWeakLambda(target, [=](const FVector4& value) {
target->SetPadding(FMargin(value.X, value.Y, value.Z, value.W));
}), endValueVector4, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/OverlaySlot.h"
ULTweener* ULTweenBPLibrary::UMG_OverlaySlot_PaddingTo(UObject* WorldContextObject, UOverlaySlot* target, const FMargin& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto endValueVector4 = FVector4(endValue.Left, endValue.Top, endValue.Right, endValue.Bottom);
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateWeakLambda(target, [=]
{
auto padding = target->GetPadding();
return FVector4(padding.Left, padding.Top, padding.Right, padding.Bottom);
}), FLTweenVector4SetterFunction::CreateWeakLambda(target, [=](const FVector4& value) {
target->SetPadding(FMargin(value.X, value.Y, value.Z, value.W));
}), endValueVector4, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/ButtonSlot.h"
ULTweener* ULTweenBPLibrary::UMG_ButtonSlot_PaddingTo(UObject* WorldContextObject, UButtonSlot* target, const FMargin& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto endValueVector4 = FVector4(endValue.Left, endValue.Top, endValue.Right, endValue.Bottom);
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateWeakLambda(target, [=]
{
auto padding = target->GetPadding();
return FVector4(padding.Left, padding.Top, padding.Right, padding.Bottom);
}), FLTweenVector4SetterFunction::CreateWeakLambda(target, [=](const FVector4& value) {
target->SetPadding(FMargin(value.X, value.Y, value.Z, value.W));
}), endValueVector4, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/BorderSlot.h"
ULTweener* ULTweenBPLibrary::UMG_BorderSlot_PaddingTo(UObject* WorldContextObject, UBorderSlot* target, const FMargin& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto endValueVector4 = FVector4(endValue.Left, endValue.Top, endValue.Right, endValue.Bottom);
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector4GetterFunction::CreateWeakLambda(target, [=]
{
auto padding = target->GetPadding();
return FVector4(padding.Left, padding.Top, padding.Right, padding.Bottom);
}), FLTweenVector4SetterFunction::CreateWeakLambda(target, [=](const FVector4& value) {
target->SetPadding(FMargin(value.X, value.Y, value.Z, value.W));
}), endValueVector4, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/Widget.h"
ULTweener* ULTweenBPLibrary::UMG_RenderTransform_TranslationTo(UObject* WorldContextObject, class UWidget* target, const FVector2D& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector2DGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetRenderTransform().Translation;
}), FLTweenVector2DSetterFunction::CreateUObject(target, &UWidget::SetRenderTranslation)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::UMG_RenderTransform_AngleTo(UObject* WorldContextObject, UWidget* target, float endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject
, FLTweenFloatGetterFunction::CreateUObject(target, &UWidget::GetRenderTransformAngle)
, FLTweenFloatSetterFunction::CreateUObject(target, &UWidget::SetRenderTransformAngle)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::UMG_RenderTransform_ScaleTo(UObject* WorldContextObject, UWidget* target, const FVector2D& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector2DGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetRenderTransform().Scale;
}), FLTweenVector2DSetterFunction::CreateUObject(target, &UWidget::SetRenderScale)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::UMG_RenderTransform_ShearTo(UObject* WorldContextObject, UWidget* target, const FVector2D& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenVector2DGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetRenderTransform().Shear;
}), FLTweenVector2DSetterFunction::CreateUObject(target, &UWidget::SetRenderShear)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
ULTweener* ULTweenBPLibrary::UMG_RenderOpacityTo(UObject* WorldContextObject, UWidget* target, float endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject
, FLTweenFloatGetterFunction::CreateUObject(target, &UWidget::GetRenderOpacity)
, FLTweenFloatSetterFunction::CreateUObject(target, &UWidget::SetRenderOpacity)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Blueprint/UserWidget.h"
ULTweener* ULTweenBPLibrary::UMG_UserWidget_ColorAndOpacityTo(UObject* WorldContextObject, UUserWidget* target, const FLinearColor& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenLinearColorGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetColorAndOpacity();
}), FLTweenLinearColorSetterFunction::CreateUObject(target, &UUserWidget::SetColorAndOpacity)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/Image.h"
ULTweener* ULTweenBPLibrary::UMG_Image_ColorAndOpacityTo(UObject* WorldContextObject, UImage* target, const FLinearColor& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenLinearColorGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetColorAndOpacity();
}), FLTweenLinearColorSetterFunction::CreateUObject(target, &UImage::SetColorAndOpacity)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/Button.h"
ULTweener* ULTweenBPLibrary::UMG_Button_ColorAndOpacityTo(UObject* WorldContextObject, UButton* target, const FLinearColor& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject, FLTweenLinearColorGetterFunction::CreateWeakLambda(target, [=]
{
return target->GetColorAndOpacity();
}), FLTweenLinearColorSetterFunction::CreateUObject(target, &UButton::SetColorAndOpacity)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#include "Components/Border.h"
ULTweener* ULTweenBPLibrary::UMG_Border_ContentColorAndOpacityTo(UObject* WorldContextObject, UBorder* target, const FLinearColor& endValue, float duration, float delay, ELTweenEase ease)
{
if (!IsValid(target))
{
UE_LOG(LTween, Error, TEXT("[%s] target is not valid:%s"), ANSI_TO_TCHAR(__FUNCTION__), *(target->GetPathName()));
return nullptr;
}
auto Tweener = ULTweenManager::To(WorldContextObject
, FLTweenLinearColorGetterFunction::CreateUObject(target, &UBorder::GetContentColorAndOpacity)
, FLTweenLinearColorSetterFunction::CreateUObject(target, &UBorder::SetContentColorAndOpacity)
, endValue, duration);
if (Tweener)
{
Tweener->SetDelay(delay)->SetEase(ease)->SetAffectByGamePause(false)->SetAffectByTimeDilation(false);
}
return Tweener;
}
#pragma endregion