You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
#rb rinat.abdrashitov #rnx #jira none #preflight 61a7a324e8314ee7b586bff2 #ROBOMERGE-AUTHOR: ryan.schmidt #ROBOMERGE-SOURCE: CL 18341163 in //UE5/Release-5.0/... via CL 18341169 #ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469) [CL 18341187 by ryan schmidt in ue5-release-engine-test branch]
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "ToolTargets/PrimitiveComponentToolTarget.h"
|
|
|
|
#include "Components/PrimitiveComponent.h"
|
|
|
|
bool UPrimitiveComponentToolTarget::IsValid() const
|
|
{
|
|
return Component && ::IsValid(Component) && !Component->IsUnreachable() && Component->IsValidLowLevel();
|
|
}
|
|
|
|
UPrimitiveComponent* UPrimitiveComponentToolTarget::GetOwnerComponent() const
|
|
{
|
|
return IsValid() ? Component : nullptr;
|
|
}
|
|
|
|
AActor* UPrimitiveComponentToolTarget::GetOwnerActor() const
|
|
{
|
|
return IsValid() ? Component->GetOwner() : nullptr;
|
|
}
|
|
|
|
void UPrimitiveComponentToolTarget::SetOwnerVisibility(bool bVisible) const
|
|
{
|
|
if (IsValid())
|
|
{
|
|
Component->SetVisibility(bVisible);
|
|
}
|
|
}
|
|
|
|
FTransform UPrimitiveComponentToolTarget::GetWorldTransform() const
|
|
{
|
|
return IsValid() ? Component->GetComponentTransform() : FTransform::Identity;
|
|
}
|
|
|
|
bool UPrimitiveComponentToolTarget::HitTestComponent(const FRay& WorldRay, FHitResult& OutHit) const
|
|
{
|
|
FVector End = WorldRay.PointAt(HALF_WORLD_MAX);
|
|
if (IsValid() && Component->LineTraceComponent(OutHit, WorldRay.Origin, End, FCollisionQueryParams(SCENE_QUERY_STAT(HitTest), true)))
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
// Factory
|
|
|
|
bool UPrimitiveComponentToolTargetFactory::CanBuildTarget(UObject* SourceObject, const FToolTargetTypeRequirements& Requirements) const
|
|
{
|
|
UPrimitiveComponent* Component = Cast<UPrimitiveComponent>(SourceObject);
|
|
return Component
|
|
&& ::IsValid(Component)
|
|
&& !Component->IsUnreachable()
|
|
&& Component->IsValidLowLevel()
|
|
&& Requirements.AreSatisfiedBy(UPrimitiveComponentToolTarget::StaticClass());
|
|
}
|
|
|
|
UToolTarget* UPrimitiveComponentToolTargetFactory::BuildTarget(UObject* SourceObject, const FToolTargetTypeRequirements& Requirements)
|
|
{
|
|
UPrimitiveComponentToolTarget* Target = NewObject<UPrimitiveComponentToolTarget>();
|
|
Target->Component = Cast<UPrimitiveComponent>(SourceObject);
|
|
check(Target->Component && Requirements.AreSatisfiedBy(Target));
|
|
return Target;
|
|
}
|
|
|
|
|