FString UEnvQueryTest_Trace::GetDescriptionDetails() const
{
	FString ShapeDesc = (TraceMode == EEnvTestTrace::Line) ? TEXT("line") :
		(TraceMode == EEnvTestTrace::Sphere) ? FString::Printf(TEXT("sphere (radius: %s)"), *UEnvQueryTypes::DescribeFloatParam(TraceExtentX)) :
		(TraceMode == EEnvTestTrace::Capsule) ? FString::Printf(TEXT("capsule (radius: %s, half height: %s)"),
			*UEnvQueryTypes::DescribeFloatParam(TraceExtentX), *UEnvQueryTypes::DescribeFloatParam(TraceExtentY)) :
		(TraceMode == EEnvTestTrace::Box) ? FString::Printf(TEXT("box (extent: %s %s %s)"),
			*UEnvQueryTypes::DescribeFloatParam(TraceExtentX), *UEnvQueryTypes::DescribeFloatParam(TraceExtentY), *UEnvQueryTypes::DescribeFloatParam(TraceExtentZ)) :
		TEXT("unknown");

	if (TraceComplex.IsNamedParam())
	{
		ShapeDesc += FString::Printf(TEXT(", complex collisions: %s"), *TraceComplex.ParamName.ToString());
	}
	else if (TraceComplex.Value)
	{
		ShapeDesc += TEXT(", complex collisions");
	}

	ShapeDesc.AppendChar(TEXT('\n'));
	ShapeDesc += DescribeBoolTestParams("hit");

	return ShapeDesc;
}
FText UEnvQueryTest_Trace::GetDescriptionDetails() const
{
	return FText::Format(FText::FromString("{0}\n{1}"),
		TraceData.ToText(FEnvTraceData::Detailed), DescribeBoolTestParams("hit"));
}
FText UEnvQueryTest_Project::GetDescriptionDetails() const
{
	return DescribeBoolTestParams(TEXT("projected"));
}