// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Components/ChaosVDSolverDataComponent.h" #include "Components/ActorComponent.h" #include "DataWrappers/ChaosVDDebugShapeDataWrapper.h" #include "ChaosVDGenericDebugDrawDataComponent.generated.h" class UChaosVDGenericDebugDrawDataComponent; struct FChaosVDGameFrameData; enum class EChaosVDDrawDataContainerSource : uint8 { SolverFrame, SolverStage, GameFrame }; UCLASS() class UChaosVDGenericDebugDrawDataComponent : public UChaosVDSolverDataComponent { GENERATED_BODY() public: UChaosVDGenericDebugDrawDataComponent(); virtual void UpdateFromNewGameFrameData(const FChaosVDGameFrameData& InGameFrameData) override; virtual void UpdateFromSolverFrameData(const FChaosVDSolverFrameData& InSolverFrameData) override; virtual void UpdateFromNewSolverStageData(const FChaosVDSolverFrameData& InSolverFrameData, const FChaosVDFrameStageData& InSolverFrameStageData) override; virtual void ClearData() override; TConstArrayView> GetDebugDrawBoxesDataView(EChaosVDDrawDataContainerSource Source) const; TConstArrayView> GetDebugDrawLinesDataView(EChaosVDDrawDataContainerSource Source) const; TConstArrayView> GetDebugDrawSpheresDataView(EChaosVDDrawDataContainerSource Source) const; TConstArrayView> GetDebugDrawImplicitObjectsDataView(EChaosVDDrawDataContainerSource Source) const; TSharedPtr GetShapeDataContainer(EChaosVDDrawDataContainerSource Source) const; private: TSharedPtr CurrentSolverStageDebugDrawData; TSharedPtr CurrentSolverFrameDebugDrawData; TSharedPtr CurrentGameFrameDebugDrawData; };