本文整理汇总了C++中FBodyInstance::GetCollisionEnabled方法的典型用法代码示例。如果您正苦于以下问题:C++ FBodyInstance::GetCollisionEnabled方法的具体用法?C++ FBodyInstance::GetCollisionEnabled怎么用?C++ FBodyInstance::GetCollisionEnabled使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FBodyInstance
的用法示例。
在下文中一共展示了FBodyInstance::GetCollisionEnabled方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HasteTrace
static bool HasteTrace(UWorld* InWorld, FHitResult& OutHit, FVector InStart, FVector InEnd, FName InTraceTag, bool InbReturnFaceIndex = false)
{
FCollisionQueryParams QueryParams(InTraceTag, true);
QueryParams.bReturnFaceIndex = InbReturnFaceIndex;
bool bResult = true;
while (true)
{
bResult = InWorld->LineTraceSingleByChannel(OutHit, InStart, InEnd, ECC_WorldStatic, QueryParams);
if (bResult)
{
// In the editor traces can hit "No Collision" type actors, so ugh.
FBodyInstance* BodyInstance = OutHit.Component->GetBodyInstance();
if (BodyInstance->GetCollisionEnabled() != ECollisionEnabled::QueryAndPhysics || BodyInstance->GetResponseToChannel(ECC_WorldStatic) != ECR_Block)
{
AActor* Actor = OutHit.Actor.Get();
if (Actor)
{
QueryParams.AddIgnoredActor(Actor);
}
InStart = OutHit.ImpactPoint;
continue;
}
}
break;
}
return bResult;
}
示例2: GetClosestCollidingRigidBodyLocation
FVector USkeletalMeshComponent::GetClosestCollidingRigidBodyLocation(const FVector& TestLocation) const
{
float BestDistSq = BIG_NUMBER;
FVector Best = TestLocation;
UPhysicsAsset* PhysicsAsset = GetPhysicsAsset();
if( PhysicsAsset )
{
for (int32 i=0; i<Bodies.Num(); i++)
{
FBodyInstance* BodyInstance = Bodies[i];
if( BodyInstance && BodyInstance->IsValidBodyInstance() && (BodyInstance->GetCollisionEnabled() != ECollisionEnabled::NoCollision) )
{
const FVector BodyLocation = BodyInstance->GetUnrealWorldTransform().GetTranslation();
const float DistSq = (BodyLocation - TestLocation).SizeSquared();
if( DistSq < BestDistSq )
{
Best = BodyLocation;
BestDistSq = DistSq;
}
}
}
}
return Best;
}