void UMarionettistUtilities::FindMarionettistInScene(TEnumAsByte<EMarionettist> MarionettistName, bool &Error, TScriptInterface<IMarionettistInterface> &Interface)
{
TArray<AActor*> Actors;
UGameplayStatics::GetAllActorsWithInterface(GWorld, UMarionettistInterface::StaticClass(), Actors);
for (auto a : Actors)
{
if (!a->Implements<UMarionettistInterface>())
continue;
auto ifc = Cast<IMarionettistInterface>(a);
if (!ifc) continue;
auto name = ifc->Execute_GetWorldUniqueMarionettistName(Cast<UObject>(a));
if (name == MarionettistName) {
if (IsValid(ifc->_getUObject())) {
Error = false;
Interface.SetInterface(ifc);
return;
}
}
}
Error = true;
}