Hello. For a couple of weeks i have a proplem with compiling a plugin with kismet functions.
I need to create custom blueptint node with some trace functions.
I`ve created a blank project and added a c++ Blueprint Library plugin using editor.
Added dependency to kismet module in all *.cs files:
Project *.build.cs:
using UnrealBuildTool;
public class PluginsTestProject : ModuleRules
{
public PluginsTestProject(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Kismet", "GnomeMod"});
PrivateDependencyModuleNames.AddRange(new string[] { "Engine", "Kismet" });
}
}
Plugin *.build.cs:
using UnrealBuildTool;
public class GnomeMod : ModuleRules
{
public GnomeMod(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicIncludePaths.AddRange(
new string[] {
// ... add public include paths required here ...
}
);
PrivateIncludePaths.AddRange(
new string[] {
}
);
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
"Kismet",
"InputCore"
}
);
PrivateDependencyModuleNames.AddRange(
new string[]
{
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
"Kismet"
}
);
DynamicallyLoadedModuleNames.AddRange(
new string[]
{
}
);
}
}
Here is plugin problematic function:
bool UGnomeModBPLibrary::LineTraceSingle(const UObject* WorldContextObject, const FVector Start, const FVector End, ETraceTypeQuery TraceChannel, bool bTraceComplex, const TArray<AActor*>& ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult& OutHit, bool bIgnoreSelf, FLinearColor TraceColor, FLinearColor TraceHitColor, float DrawTime)
{
static const FName LineTraceSingleName(TEXT("LineTraceSingle"));
FCollisionQueryParams Params;
Params = ConfigureCollisionParams(LineTraceSingleName, bTraceComplex, ActorsToIgnore, bIgnoreSelf, WorldContextObject);
return true;
}
The problem is in ConfigureCollisionParams function. If i click on it in IDE - it shows me its definition in KismetTraceUtils.h . So it`s visible to Visual studio.
But if i build project a get an error.
If I remove ConfigureCollisionParams line like this:
{
static const FName LineTraceSingleName(TEXT("LineTraceSingle"));
FCollisionQueryParams Params;
return true;
}
Everything builds well.
Here is error:
unresolved external symbol "struct FCollisionQueryParams __cdecl ConfigureCollisionParams(class FName,bool,class TArray<class AActor *,class TSizedDefaultAllocator<32> > const &,bool,class UObject const *)" (?ConfigureCollisionParams@@YA?AUFCollisionQueryParams@@VFName@@_NAEBV?$TArray@PEAVAActor@@V?$TSizedDefaultAllocator@$0CA@@@@@1PEBVUObject@@@Z) referenced in function "public: static bool __cdecl UGnomeModBPLibrary::LineTraceSingle(class UObject const *,struct UE::Math::TVector<double>,struct UE::Math::TVector<double>,enum ETraceTypeQuery,bool,class TArray<class AActor *,class TSizedDefaultAllocator<32> > const &,enum EDrawDebugTrace::Type,struct FHitResult &,bool,struct FLinearColor,struct FLinearColor,float)" (?LineTraceSingle@UGnomeModBPLibrary@@SA_NPEBVUObject@@U?$TVector@N@Math@UE@@1W4ETraceTypeQuery@@_NAEBV?$TArray@PEAVAActor@@V?$TSizedDefaultAllocator@$0CA@@@@@W4Type@EDrawDebugTrace@@AEAUFHitResult@@3UFLinearColor@@7M@Z)
So what can i do to use Kismet functions at all and ConfigureCollisionParams in my case? I`ve added kismet module everywhere, all imports, and nothing helps.
Thank you.