99 lines
3.2 KiB
C++
99 lines
3.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "PoseSearchCost.generated.h"
|
|
|
|
USTRUCT()
|
|
struct FPoseSearchCost
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
|
|
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
|
// Note: We need to explicitly disable warnings on these constructors/operators for clang to be happy with deprecated variables
|
|
// this is a requirement for clang to compile without warnings.
|
|
FPoseSearchCost() = default;
|
|
~FPoseSearchCost() = default;
|
|
FPoseSearchCost(const FPoseSearchCost&) = default;
|
|
FPoseSearchCost(FPoseSearchCost&&) = default;
|
|
FPoseSearchCost& operator=(const FPoseSearchCost&) = default;
|
|
FPoseSearchCost& operator=(FPoseSearchCost&&) = default;
|
|
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
|
|
|
FPoseSearchCost(float DissimilarityCost, float InNotifyCostAddend, float InContinuingPoseCostAddend, float InContinuingInteractionCostAddend = 0.f)
|
|
: TotalCost(DissimilarityCost + InNotifyCostAddend + InContinuingPoseCostAddend + InContinuingInteractionCostAddend)
|
|
#if WITH_EDITORONLY_DATA
|
|
, NotifyCostAddend(InNotifyCostAddend)
|
|
, ContinuingPoseCostAddend(InContinuingPoseCostAddend)
|
|
, ContinuingInteractionCostAddend(InContinuingInteractionCostAddend)
|
|
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
|
, CostAddend(InNotifyCostAddend + InContinuingPoseCostAddend + InContinuingInteractionCostAddend)
|
|
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
|
#endif // WITH_EDITORONLY_DATA
|
|
{
|
|
}
|
|
|
|
static bool IsCostValid(const float Cost) { return Cost != MAX_flt; }
|
|
bool IsValid() const { return IsCostValid(TotalCost); }
|
|
|
|
UE_DEPRECATED(5.6, "Use operator float() instead.")
|
|
float GetTotalCost() const { return TotalCost; }
|
|
|
|
operator float() const { return TotalCost; }
|
|
|
|
#if WITH_EDITORONLY_DATA
|
|
float GetCostAddend() const { return GetNotifyCostAddend() + GetContinuingPoseCostAddend() + GetContinuingInteractionCostAddend(); }
|
|
|
|
float GetNotifyCostAddend() const { return NotifyCostAddend; }
|
|
float GetContinuingPoseCostAddend() const { return ContinuingPoseCostAddend; }
|
|
float GetContinuingInteractionCostAddend() const { return ContinuingInteractionCostAddend; }
|
|
#endif // WITH_EDITORONLY_DATA
|
|
|
|
friend FArchive& operator<<(FArchive& Ar, FPoseSearchCost& PoseSearchCost)
|
|
{
|
|
Ar << PoseSearchCost.TotalCost;
|
|
|
|
#if WITH_EDITORONLY_DATA
|
|
Ar << PoseSearchCost.NotifyCostAddend;
|
|
Ar << PoseSearchCost.ContinuingPoseCostAddend;
|
|
Ar << PoseSearchCost.ContinuingInteractionCostAddend;
|
|
|
|
PRAGMA_DISABLE_DEPRECATION_WARNINGS
|
|
Ar << PoseSearchCost.CostAddend;
|
|
PRAGMA_ENABLE_DEPRECATION_WARNINGS
|
|
|
|
#endif // WITH_EDITORONLY_DATA
|
|
|
|
return Ar;
|
|
}
|
|
|
|
protected:
|
|
// TotalCost is the sum of all the Cost contributions (dissimilarity, notifies, continuing pose, continuing interaction costs)
|
|
UPROPERTY()
|
|
float TotalCost = MAX_flt;
|
|
|
|
#if WITH_EDITORONLY_DATA
|
|
|
|
// Notify Cost Bias contribution
|
|
UPROPERTY()
|
|
float NotifyCostAddend = 0.f;
|
|
|
|
// Continuing Pose Cost Bias contribution
|
|
UPROPERTY()
|
|
float ContinuingPoseCostAddend = 0.f;
|
|
|
|
// Experimental, this feature might be removed without warning, not for production use
|
|
// Continuing Interaction Cost Bias contribution
|
|
UPROPERTY()
|
|
float ContinuingInteractionCostAddend = 0.f;
|
|
|
|
public:
|
|
|
|
UE_DEPRECATED(5.6, "Use GetCostAddend instead")
|
|
UPROPERTY()
|
|
float CostAddend = 0.f;
|
|
#endif // WITH_EDITORONLY_DATA
|
|
};
|
|
|