2019-12-26 14:45:42 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
2019-09-10 11:35:20 -04:00
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "InteractiveTool.h"
|
|
|
|
|
#include "ComponentSourceInterfaces.h"
|
2021-02-23 18:03:26 -04:00
|
|
|
#include "ToolTargets/ToolTarget.h"
|
2021-05-10 01:17:30 -04:00
|
|
|
#include "InteractiveToolQueryInterfaces.h"
|
2021-02-23 18:03:26 -04:00
|
|
|
|
2021-03-11 11:40:03 -04:00
|
|
|
#include "MultiSelectionTool.generated.h"
|
2021-02-23 18:03:26 -04:00
|
|
|
|
2019-09-10 11:35:20 -04:00
|
|
|
UCLASS(Transient)
|
2021-05-10 01:17:30 -04:00
|
|
|
class INTERACTIVETOOLSFRAMEWORK_API UMultiSelectionTool : public UInteractiveTool, public IInteractiveToolCameraFocusAPI
|
2019-09-10 11:35:20 -04:00
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
2021-02-23 18:03:26 -04:00
|
|
|
void SetTargets(TArray<TObjectPtr<UToolTarget>> TargetsIn)
|
|
|
|
|
{
|
|
|
|
|
Targets = MoveTemp(TargetsIn);
|
|
|
|
|
}
|
|
|
|
|
|
2020-11-24 18:42:39 -04:00
|
|
|
/**
|
|
|
|
|
* @return true if all ComponentTargets of this tool are still valid
|
|
|
|
|
*/
|
|
|
|
|
virtual bool AreAllTargetsValid() const
|
|
|
|
|
{
|
2021-02-23 18:03:26 -04:00
|
|
|
for (const TObjectPtr<UToolTarget>& Target : Targets)
|
|
|
|
|
{
|
|
|
|
|
if (Target->IsValid() == false)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-11-24 18:42:39 -04:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual bool CanAccept() const override
|
|
|
|
|
{
|
|
|
|
|
return AreAllTargetsValid();
|
|
|
|
|
}
|
|
|
|
|
|
2019-09-10 11:35:20 -04:00
|
|
|
protected:
|
2021-02-23 18:03:26 -04:00
|
|
|
UPROPERTY()
|
|
|
|
|
TArray<TObjectPtr<UToolTarget>> Targets{};
|
|
|
|
|
|
2021-05-10 01:17:30 -04:00
|
|
|
public:
|
|
|
|
|
// IInteractiveToolCameraFocusAPI implementation
|
|
|
|
|
virtual bool SupportsWorldSpaceFocusBox() override;
|
|
|
|
|
virtual FBox GetWorldSpaceFocusBox() override;
|
|
|
|
|
virtual bool SupportsWorldSpaceFocusPoint() override;
|
|
|
|
|
virtual bool GetWorldSpaceFocusPoint(const FRay& WorldRay, FVector& PointOut) override;
|
2019-09-10 11:35:20 -04:00
|
|
|
};
|
2021-03-11 11:40:03 -04:00
|
|
|
|
|
|
|
|
|