Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

102 lines
3.8 KiB
C++

// 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<FChaosVDMultiSolverDebugShapeDataContainer> MultiSolverData = InGameFrameData.GetCustomDataHandler().GetData<FChaosVDMultiSolverDebugShapeDataContainer>())
{
TSharedPtr<FChaosVDDebugShapeDataContainer>* SolverData = MultiSolverData->DataBySolverID.Find(SolverID);
CurrentGameFrameDebugDrawData = SolverData ? *SolverData : nullptr;
}
else
{
CurrentGameFrameDebugDrawData = nullptr;
}
}
void UChaosVDGenericDebugDrawDataComponent::UpdateFromSolverFrameData(const FChaosVDSolverFrameData& InSolverFrameData)
{
CurrentSolverFrameDebugDrawData = InSolverFrameData.GetCustomData().GetData<FChaosVDDebugShapeDataContainer>();
}
void UChaosVDGenericDebugDrawDataComponent::UpdateFromNewSolverStageData(const FChaosVDSolverFrameData& InSolverFrameData, const FChaosVDFrameStageData& InSolverFrameStageData)
{
CurrentSolverFrameDebugDrawData = InSolverFrameStageData.GetCustomDataHandler().GetData<FChaosVDDebugShapeDataContainer>();
}
void UChaosVDGenericDebugDrawDataComponent::ClearData()
{
CurrentSolverStageDebugDrawData.Reset();
CurrentSolverFrameDebugDrawData.Reset();
CurrentGameFrameDebugDrawData.Reset();
}
TConstArrayView<TSharedPtr<FChaosVDDebugDrawBoxDataWrapper>> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawBoxesDataView(EChaosVDDrawDataContainerSource Source) const
{
if (TSharedPtr<FChaosVDDebugShapeDataContainer> DataContainer = GetShapeDataContainer(Source))
{
return DataContainer->RecordedDebugDrawBoxes;
}
return TConstArrayView<TSharedPtr<FChaosVDDebugDrawBoxDataWrapper>>();
}
TConstArrayView<TSharedPtr<FChaosVDDebugDrawLineDataWrapper>> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawLinesDataView( EChaosVDDrawDataContainerSource Source) const
{
if (TSharedPtr<FChaosVDDebugShapeDataContainer> DataContainer = GetShapeDataContainer(Source))
{
return DataContainer->RecordedDebugDrawLines;
}
return TConstArrayView<TSharedPtr<FChaosVDDebugDrawLineDataWrapper>>();
}
TConstArrayView<TSharedPtr<FChaosVDDebugDrawSphereDataWrapper>> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawSpheresDataView( EChaosVDDrawDataContainerSource Source) const
{
if (TSharedPtr<FChaosVDDebugShapeDataContainer> DataContainer = GetShapeDataContainer(Source))
{
return DataContainer->RecordedDebugDrawSpheres;
}
return TConstArrayView<TSharedPtr<FChaosVDDebugDrawSphereDataWrapper>>();
}
TConstArrayView<TSharedPtr<FChaosVDDebugDrawImplicitObjectDataWrapper>> UChaosVDGenericDebugDrawDataComponent::GetDebugDrawImplicitObjectsDataView( EChaosVDDrawDataContainerSource Source) const
{
if (TSharedPtr<FChaosVDDebugShapeDataContainer> DataContainer = GetShapeDataContainer(Source))
{
return DataContainer->RecordedDebugDrawImplicitObjects;
}
return TConstArrayView<TSharedPtr<FChaosVDDebugDrawImplicitObjectDataWrapper>>();
}
TSharedPtr<FChaosVDDebugShapeDataContainer> 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;
}
}