Funny story, my C++ class is less than half as quick as its BP equivalent...

Thanks for helping! I seriously doubt anything else would matter so I’m posting my Tick and BeginPlay here:


void ATestFish::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );
	if (ProjectileMovement->Velocity.Size() <= 0.f)
	{
		ProjectileMovement->SetVelocityInLocalSpace(FVector(200.f, 0.f, 0.f));
	}
}


void ATestFish::BeginPlay()
{
	Super::BeginPlay();
	if (!bHasTarget)  //
	{
		ProjectileMovement->HomingTargetComponent = TargetActor->GetRootComponent();
		bHasTarget = true;
	}
}

I guess also worth mentioning is I have a USceneComponent as root, a UStaticMeshComponent attached to it, and a UProjectileMovementComponent. As I’ve stated above, it’s just so bloody simple that I can’t figure out what goes wrong… The BP is set exactly the same…

EDIT: in case you wonder the bHasTarget:


if (TargetActor) 
	{ 
		ProjectileMovement->HomingTargetComponent = TargetActor->GetRootComponent(); 
		bHasTarget = true;
	}

This is in my ctor. I use SpawnActorDeferred() to spawn fish so I can pass on the “TargetActor” reference. The BeginPlay code is more of a failsafe.