Files
UnrealEngineUWP/Engine/Source/Runtime/InteractiveToolsFramework/Public/ToolTargets/PrimitiveComponentToolTarget.h
lonnie li 2c15e236a7 InteractiveToolsFramework: Add UPrimitiveComponentToolTargetFactory.
#rb ryan.schmidt
#rnx
#jira none
#preflight 619e5291405273b2c37a20da

#ROBOMERGE-AUTHOR: lonnie.li
#ROBOMERGE-SOURCE: CL 18283958 in //UE5/Release-5.0/... via CL 18283976
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)

[CL 18283991 by lonnie li in ue5-release-engine-test branch]
2021-11-24 10:32:04 -05:00

48 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "TargetInterfaces/PrimitiveComponentBackedTarget.h"
#include "ToolTargets/ToolTarget.h"
#include "PrimitiveComponentToolTarget.generated.h"
/**
* A tool target to share some reusable code for tool targets that are
* backed by primitive components.
*/
UCLASS(Transient)
class INTERACTIVETOOLSFRAMEWORK_API UPrimitiveComponentToolTarget : public UToolTarget, public IPrimitiveComponentBackedTarget
{
GENERATED_BODY()
public:
virtual bool IsValid() const override;
// IPrimitiveComponentBackedTarget implementation
virtual UPrimitiveComponent* GetOwnerComponent() const override;
virtual AActor* GetOwnerActor() const override;
virtual void SetOwnerVisibility(bool bVisible) const override;
virtual FTransform GetWorldTransform() const override;
virtual bool HitTestComponent(const FRay& WorldRay, FHitResult& OutHit) const override;
protected:
friend class UPrimitiveComponentToolTargetFactory;
UPrimitiveComponent* Component;
};
/**
* Factory for UPrimitiveComponentToolTarget to be used by the target manager.
*/
UCLASS(Transient)
class INTERACTIVETOOLSFRAMEWORK_API UPrimitiveComponentToolTargetFactory : public UToolTargetFactory
{
GENERATED_BODY()
public:
virtual bool CanBuildTarget(UObject* SourceObject, const FToolTargetTypeRequirements& TargetTypeInfo) const override;
virtual UToolTarget* BuildTarget(UObject* SourceObject, const FToolTargetTypeRequirements& TargetTypeInfo) override;
};