Files
UnrealEngineUWP/Engine/Source/Runtime/Experimental/GeometryCollectionEngine/Public/GeometryCollection/GeometryCollectionDebugDrawComponent.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

193 lines
5.1 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#ifndef GEOMETRYCOLLECTION_DEBUG_DRAW
#define GEOMETRYCOLLECTION_DEBUG_DRAW !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
#endif
#include "Components/MeshComponent.h"
#include "GeometryCollection/ManagedArray.h"
#include "GeometryCollectionDebugDrawComponent.generated.h"
class AGeometryCollectionRenderLevelSetActor;
class UGeometryCollectionComponent;
class AGeometryCollectionDebugDrawActor;
// class responsible for debug drawing functionality for GeometryCollectionComponents
// @todo: formalize the idea of a "debug draw mode" in some class hierarchy to make it easy
// to implement new types of visualizations
UCLASS(meta = (BlueprintSpawnableComponent))
class GEOMETRYCOLLECTIONENGINE_API UGeometryCollectionDebugDrawComponent : public UMeshComponent
{
GENERATED_UCLASS_BODY()
public:
/**
* Singleton actor, containing the debug draw properties. Automatically populated at play time.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Settings")
AGeometryCollectionDebugDrawActor* GeometryCollectionDebugDrawActor;
/**
* Level Set singleton actor, containing the Render properties. Automatically populated at play time.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Settings")
AGeometryCollectionRenderLevelSetActor* GeometryCollectionRenderLevelSet;
/**
* Enable Level Set visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Level Set")
bool bDebugDrawLevelSet;
/**
* Enable to visualize the selected level sets at the world origin.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Level Set")
bool bRenderLevelSetAtOrigin;
/**
* Transform index of the level set to visualize.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Level Set", meta = (ClampMin="0"))
int LevelSetIndex;
/**
* Enable transform visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Geometry")
bool bDebugDrawTransform;
/**
* Enable transform indices visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Geometry")
bool bDebugDrawTransformIndex;
/**
* Enable bounding boxes visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Geometry")
bool bDebugDrawBoundingBox;
/**
* Color tint used for visualizing all geometry elements.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Geometry")
FLinearColor GeometryColor;
/**
* Enable proximity visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Breaking")
bool bDebugDrawProximity;
/**
* Enable breaking faces visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Breaking")
bool bDebugDrawBreakingFace;
/**
* Enable breaking regions visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Breaking")
bool bDebugDrawBreakingRegionData;
/**
* Color tint for the breaking visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Breaking")
FLinearColor BreakingColor;
/**
* Enable face visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face")
bool bDebugDrawFace;
/**
* Enable face indices visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face")
bool bDebugDrawFaceIndex;
/**
* Enable face normals visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face")
bool bDebugDrawFaceNormal;
/**
* Enable single face visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face")
bool bDebugDrawSingleFace;
/**
* Index of the single face to visualize.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face", meta = (ClampMin="0"))
int32 SingleFaceIdx;
/**
* Color tint used for visualizing all faces elements.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Face")
FLinearColor FaceColor;
/**
* Enable vertex visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Vertex")
bool bDebugDrawVertex;
/**
* Enable vertex indices visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Vertex")
bool bDebugDrawVertexIndex;
/**
* Enable vertex normals visualization.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Vertex")
bool bDebugDrawVertexNormal;
/**
* Color tint used for visualizing all vertex elements.
*/
UPROPERTY(EditAnywhere, Category = "Debug Draw|Vertex")
FLinearColor VertexColor;
UGeometryCollectionComponent* GeometryCollectionComponent; // the component we are debug rendering for, set by the GeometryCollectionActor after creation
virtual void BeginPlay() override;
virtual void EndPlay(EEndPlayReason::Type ReasonEnd) override;
virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
#if WITH_EDITOR
/**
* Property changed callback. Used to clamp the level set and single face index properties.
*/
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif
private:
void DebugDrawLevelSetBeginPlay();
void DebugDrawLevelSetEndPlay();
void DebugDrawLevelSetResetVisiblity();
void DebugDrawLevelSetTick();
void DebugDrawBeginPlay();
void DebugDrawTick();
private:
bool bLevelSetTextureDirty;
int LevelSetTextureTransformIndex;
TSharedPtr<TManagedArray<bool>> BaseVisibilityArray;
};