Files
UnrealEngineUWP/Engine/Source/Runtime/Experimental/GeometryCollectionEngine/Public/GeometryCollection/GeometryCollectionDebugDrawActor.h
Ben Marsh 7598af0532 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

[CL 4662404 by Ben Marsh in Main branch]
2018-12-14 13:41:00 -05:00

164 lines
4.2 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "GameFramework/Actor.h"
#include "GeometryCollectionDebugDrawActor.generated.h"
class FGeometryCollection;
/**
* AGeometryCollectionDebugDrawActor
* An actor representing the collection of data necessary to
* visualize geometry collections' debug informations.
* Only one actor is to be used in the world, and should be
* automatically spawned by the GeometryDebugDrawComponent.
*/
UCLASS()
class GEOMETRYCOLLECTIONENGINE_API AGeometryCollectionDebugDrawActor : public AActor
{
GENERATED_UCLASS_BODY()
public:
/**
* Thickness of points when visualizing vertices.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0"))
float PointThickness;
/**
* Thickness of lines when visualizing faces, normals, ...etc.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0"))
float LineThickness;
/**
* Draw text shadows when visualizing indices.
*/
UPROPERTY(EditAnywhere, Category = "Settings")
bool bTextShadow;
/**
* Scale of font used in visualizing indices.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0.0001"))
float TextScale;
/**
* Scale factor used for visualizing normals.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0.0001"))
float NormalScale;
/**
* Scale factor used for visualizing transforms.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0.0001"))
float TransformScale;
/**
* Size of arrows used for visualizing normals, breaking information, ...etc.
*/
UPROPERTY(EditAnywhere, Category = "Settings", meta = (ClampMin="0.0001"))
float ArrowScale;
/**
* Game tick callback. This tick function is required to clean up the persistent debug lines.
*/
virtual void Tick(float DeltaSeconds) override;
/**
* Actor destruction callback. Used here to clear up the command callbacks.
*/
virtual void BeginDestroy() override;
#if WITH_EDITOR
/**
* Property changed callback. Required to synchronize the command variables to this Actor's properties.
*/
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
/**
* Draw vertices.
*/
void DrawVertices(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw vertex indices.
*/
void DrawVertexIndices(FGeometryCollection* Collection, AActor* Actor, const FColor& Color);
/**
* Draw vertex normals.
*/
void DrawVertexNormals(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw faces.
*/
void DrawFaces(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw face indices.
*/
void DrawFaceIndices(FGeometryCollection* Collection, AActor* Actor, const FColor& Color);
/**
* Draw face normals.
*/
void DrawFaceNormals(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw single face.
*/
void DrawSingleFace(FGeometryCollection* Collection, const AActor* Actor, const int32 FaceIndex, const FColor& Color);
/**
* Draw transforms.
*/
void DrawTransforms(FGeometryCollection* Collection, const AActor* Actor);
/**
* Draw transform indices.
*/
void DrawTransformIndices(FGeometryCollection* Collection, AActor* Actor, const FColor& Color);
/**
* Draw bounding boxes.
*/
void DrawBoundingBoxes(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw proximity.
*/
void DrawProximity(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw breaking faces.
*/
void DrawBreakingFaces(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Draw breaking region data.
*/
void DrawBreakingRegionData(FGeometryCollection* Collection, const AActor* Actor, const FColor& Color);
/**
* Clear all persistent strings and debug lines.
*/
void Flush();
private:
/**
* Console variable float callback. Allows float console variables to update this actor's float properties.
*/
void OnFloatPropertyChange(IConsoleVariable* CVar);
/**
* Console variable bool callback. Allows int console variables to update this actor's bool properties.
*/
void OnBoolPropertyChange(IConsoleVariable* CVar);
};