Skip to content

File CollisionData.cpp

File List > Data > CollisionData.cpp

Go to the documentation of this file

#include "CollisionData.h"

#include "Misc/DataValidation.h"

#include UE_INLINE_GENERATED_CPP_BY_NAME(CollisionData)

#define LOCTEXT_NAMESPACE "NightSkyEngine"

#if WITH_EDITOR

EDataValidationResult UCollisionData::IsDataValid(FDataValidationContext& Context) const
{
    EDataValidationResult Result = CombineDataValidationResults(Super::IsDataValid(Context), EDataValidationResult::Valid);
    if (Result == EDataValidationResult::Valid)
    {
        // Check for duplicates and empty names
        TSet<FGameplayTag> CelNames;
        for (const auto& CollisionFrame : CollisionFrames)
        {
            if (!CollisionFrame.CelName.IsValid())
            {
                Context.AddError(LOCTEXT("InvalidCelName", "Invalid Cel name found (not named)"));
                Result = EDataValidationResult::Invalid;
            }
            else
            {
                bool bIsDuplicate = false;
                CelNames.Add(CollisionFrame.CelName, &bIsDuplicate);
                if (bIsDuplicate)
                {
                    Context.AddError(LOCTEXT("DuplicateCelName", "Duplicate Cel name found"));
                    Result = EDataValidationResult::Invalid;
                }
            }
        }
    }
    return Result;
}

#endif // WITH_EDITOR

#undef LOCTEXT_NAMESPACE