[Video + Code] How can I get this Spline-Mesh Torus to NOT twist / contour?

Tangents were completely wrong, however I have to manually calculate them AND set the upvector of the spline. It all works apart from the very first point which I cannot figure out.



void AGESGame_Orrery::SetTorusForOrbit(const FOrbitParams& InOrbit, float Radius)
{
	const FRotator OrbitPlane_Rot = FRotator(0.f, InOrbit.LongitudeAscendingNode, InOrbit.Inclination * -1.0f);
	const FVector OrbitPlane_Up = FRotationMatrix(OrbitPlane_Rot).GetScaledAxis(EAxis::Z).GetSafeNormal();

	// Plots the Orbit Torus for a given Orbit
	const double EAngle = 360.f / NumTorusPoints;
	for (int32 i = 0; i < NumTorusPoints; i++)
	{
		TorusSplinePositions* = UGESGameplayStatics::PosFromEccAnomaly(FMath::DegreesToRadians(i * EAngle), InOrbit);
	}

	for (int32 i = 0; i < NumTorusPoints; i++)
	{
		const FVector PrevPosition = TorusSplinePositions[UGESGameplayStatics::GetRolloverArrayIndex(NumTorusPoints, i - 1)];
		const FVector StartPosition = TorusSplinePositions*;
		const FVector EndPosition = TorusSplinePositions[UGESGameplayStatics::GetRolloverArrayIndex(NumTorusPoints, i + 1)];
		const FVector NextEndPosition = TorusSplinePositions[UGESGameplayStatics::GetRolloverArrayIndex(NumTorusPoints, i + 2)];

		const FVector EndTangent = FVector(StartPosition - NextEndPosition).GetSafeNormal();
		const FVector StartTangent = FVector(PrevPosition - EndPosition).GetSafeNormal();

		TorusSplinePoints*->SetStartPosition(StartPosition);
		TorusSplinePoints*->SetEndPosition(EndPosition);
		TorusSplinePoints*->SetSplineUpDir(OrbitPlane_Up);

		TorusSplinePoints*->SetStartTangent(StartTangent);
		TorusSplinePoints*->SetEndTangent(EndTangent);
		
		TorusSplinePoints*->SetWorldScale3D(FVector(Radius));

		DrawDebugString(GetWorld(), StartPosition, FString::Printf(TEXT("%i"), i), NULL, FColor::Green, 5.f, true);
	}
}


Honestly, this is driving me insane now.

9d55a8e910530803a19f747013e1693809289274.jpeg