Files
UnrealEngineUWP/Engine/Plugins/Runtime/SmartObjects/Source/SmartObjectsModule/Public/SmartObjectAnnotation.h
mikko mononen 9841195afe SmartObject: Improved validation settings
- Added SmartObjectUserComponent which allows to define validation settings per user actor
- Added option to SO defintion to have preview validation settings or preview user actor (settings pulled from SO user component)
- Move parameters passed to SO annotation CollectDataForGameplayDebugger() into a struct
- Changed USmartObjectSlotValidationFilter to have 2 sets of validation parameters to allow exits to have looser validation
- Changed the API for setting params from Actor in FSmartObjectSlotEntranceLocationRequest (still meh)

#jira UE-174418
#preflight 642173f8a86ae7cbcc25ab0b

[CL 24801238 by mikko mononen in ue5-main branch]
2023-03-27 08:22:19 -04:00

73 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "SmartObjectTypes.h"
#include "SmartObjectAnnotation.generated.h"
struct FSmartObjectVisualizationContext;
class FGameplayDebuggerCategory;
struct FSmartObjectSlotView;
class USmartObjectDefinition;
struct FSmartObjectAnnotationGameplayDebugContext;
/**
* Base class for Smart Object Slot annotations. Annotation is a specific type of slot definition data that has methods to visualize it.
*/
USTRUCT(meta=(Hidden))
struct SMARTOBJECTSMODULE_API FSmartObjectSlotAnnotation : public FSmartObjectSlotDefinitionData
{
GENERATED_BODY()
virtual ~FSmartObjectSlotAnnotation() override {}
#if WITH_EDITOR
// @todo: Try to find a way to add visualization without requiring virtual functions.
/** Methods to override to draw 3D visualization of the annotation. */
virtual void DrawVisualization(FSmartObjectVisualizationContext& VisContext) const {}
/** Methods to override to draw canvas visualization of the annotation. */
virtual void DrawVisualizationHUD(FSmartObjectVisualizationContext& VisContext) const {}
/**
* Called in editor to adjust the transform of the annotation.
* @param SlotTransform World space transform of the slot.
* @param DeltaTranslation World space delta translation to apply.
* @param DeltaRotation World space delta rotation to apply.
**/
virtual void AdjustWorldTransform(const FTransform& SlotTransform, const FVector& DeltaTranslation, const FRotator& DeltaRotation) {}
#endif // WITH_EDITOR
/**
* Returns the world space transform of the annotation.
* @param SlotTransform World space transform of the slot.
* @return world transform of the annotation, or empty if annotation does not have transform.
*/
virtual TOptional<FTransform> GetWorldTransform(const FTransform& SlotTransform) const { return TOptional<FTransform>(); }
#if WITH_GAMEPLAY_DEBUGGER
virtual void CollectDataForGameplayDebugger(FSmartObjectAnnotationGameplayDebugContext& DebugContext) const {}
#endif // WITH_GAMEPLAY_DEBUGGER
};
/**
* Context passed to CollectDataForGameplayDebugger to show gameplay debugger information.
*/
struct SMARTOBJECTSMODULE_API FSmartObjectAnnotationGameplayDebugContext
{
explicit FSmartObjectAnnotationGameplayDebugContext(FGameplayDebuggerCategory& InCategory, const USmartObjectDefinition& InDefinition)
: Category(InCategory)
, Definition(InDefinition)
{
}
FGameplayDebuggerCategory& Category;
const USmartObjectDefinition& Definition;
const AActor* SmartObjectOwnerActor = nullptr;
const AActor* DebugActor = nullptr;
FTransform SlotTransform;
FVector ViewLocation;
FVector ViewDirection;
};