// Copyright Epic Games, Inc. All Rights Reserved. #include "ChaosVDGenericDebugDrawDataComponent.h" #include "ChaosVDRecording.h" #include UE_INLINE_GENERATED_CPP_BY_NAME(ChaosVDGenericDebugDrawDataComponent) UChaosVDGenericDebugDrawDataComponent::UChaosVDGenericDebugDrawDataComponent() { SetCanEverAffectNavigation(false); bNavigationRelevant = false; PrimaryComponentTick.bCanEverTick = false; } void UChaosVDGenericDebugDrawDataComponent::UpdateFromNewGameFrameData(const FChaosVDGameFrameData& InGameFrameData) { Super::UpdateFromNewGameFrameData(InGameFrameData); if (TSharedPtr MultiSolverData = InGameFrameData.GetCustomDataHandler().GetData()) { TSharedPtr* SolverData = MultiSolverData->DataBySolverID.Find(SolverID); CurrentGameFrameDebugDrawData = SolverData ? *SolverData : nullptr; } else { CurrentGameFrameDebugDrawData = nullptr; } } void UChaosVDGenericDebugDrawDataComponent::UpdateFromSolverFrameData(const FChaosVDSolverFrameData& InSolverFrameData) { CurrentSolverFrameDebugDrawData = InSolverFrameData.GetCustomData().GetData(); } void UChaosVDGenericDebugDrawDataComponent::UpdateFromNewSolverStageData(const FChaosVDSolverFrameData& InSolverFrameData, const FChaosVDFrameStageData& InSolverFrameStageData) { CurrentSolverFrameDebugDrawData = InSolverFrameStageData.GetCustomDataHandler().GetData(); } void UChaosVDGenericDebugDrawDataComponent::ClearData() { CurrentSolverStageDebugDrawData.Reset(); CurrentSolverFrameDebugDrawData.Reset(); CurrentGameFrameDebugDrawData.Reset(); } TConstArrayView> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawBoxesDataView(EChaosVDDrawDataContainerSource Source) const { if (TSharedPtr DataContainer = GetShapeDataContainer(Source)) { return DataContainer->RecordedDebugDrawBoxes; } return TConstArrayView>(); } TConstArrayView> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawLinesDataView( EChaosVDDrawDataContainerSource Source) const { if (TSharedPtr DataContainer = GetShapeDataContainer(Source)) { return DataContainer->RecordedDebugDrawLines; } return TConstArrayView>(); } TConstArrayView> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawSpheresDataView( EChaosVDDrawDataContainerSource Source) const { if (TSharedPtr DataContainer = GetShapeDataContainer(Source)) { return DataContainer->RecordedDebugDrawSpheres; } return TConstArrayView>(); } TConstArrayView> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawImplicitObjectsDataView( EChaosVDDrawDataContainerSource Source) const { if (TSharedPtr DataContainer = GetShapeDataContainer(Source)) { return DataContainer->RecordedDebugDrawImplicitObjects; } return TConstArrayView>(); } TSharedPtr UChaosVDGenericDebugDrawDataComponent::GetShapeDataContainer(EChaosVDDrawDataContainerSource Source) const { switch (Source) { case EChaosVDDrawDataContainerSource::SolverFrame: return CurrentSolverFrameDebugDrawData; case EChaosVDDrawDataContainerSource::SolverStage: return CurrentSolverStageDebugDrawData; case EChaosVDDrawDataContainerSource::GameFrame: return CurrentGameFrameDebugDrawData; default: return nullptr; } }