Validate Assets
You can use IsDataValid to generated BP compilation message/warning/error as you need (for example, to tell your designers they missed something).
Fix actions
In 5.5 there is a new “fix me” overridable methods that will run code when you click on the text (similar to engine “fix” clickable text), more info here.
Example:
TSharedRef<FTokenizedMessage> Message = FTokenizedMessage::Create(EMessageSeverity::Error);
Message->AddToken(FAssetNameToken::Create(GetPathNameSafe(Blueprint),
FText::FromString(FString::Printf(
TEXT("Prefab Reference Component %s doesn't have the default required struct FPSRequiredActorPrefabSpawnParameters (Required Spawn Prefab Parameters)."),
*FU_Utilities::GetNameWithoutTemplateSuffix(PRC->GetFName()).ToString()
))));
// Make a FixeController, this can container multiple fixs
TSharedRef<FMutuallyExclusiveFixSet> FixController = MakeShareable(new FMutuallyExclusiveFixSet());
// fix function
TFunction<FFixResult()> ApplyFix1 = [PRC]()
{
...
return FFixResult::Success();
};
// fix function
TFunction<FFixResult()> ApplyFix2 = [PRC]()
{
...
return FFixResult::Success();
};
// action message with fixer 1
FixController->Add(INVTEXT(
"Click to apply fix1"),
MakeFix(MoveTemp(ApplyFix1))
);
// action message with fixer 2
FixController->Add(INVTEXT(
"Click to apply fix2"),
MakeFix(MoveTemp(ApplyFix2))
);
FixController->CreateTokens([Message](TSharedRef<FFixToken> FixToken)
{
Message->AddToken(FixToken);
});
// finally, add the message to the editor validator entries
Context.AddMessage(Message);
Result:
Validate project
You can use validators See CommonValidators