Files
UnrealEngine/Engine/Plugins/Experimental/Mover/Source/MoverCVDEditor/Private/MoverCVDTab.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

63 lines
2.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Templates/SharedPointer.h"
#include "ChaosVDTabSpawnerBase.h"
#include "Widgets/SChaosVDDetailsView.h"
#include "ChaosVDSolverDataSelection.h"
#include "ChaosVDObjectDetailsTab.h"
#include "TEDS/ChaosVDStructTypedElementData.h"
class SOutputLog;
class FOutputLogHistory;
class FName;
struct FMoverSyncState;
struct FMoverInputCmdContext;
struct FMoverCVDSimDataWrapper;
struct FMoverDataCollection;
class UMoverCVDSimDataComponent;
/** This tab is an additional details tab displaying mover info corresponding to the selected particles if they are moved by a Mover component */
class FMoverCVDTab : public FChaosVDObjectDetailsTab
{
public:
FMoverCVDTab(const FName& InTabID, TSharedPtr<FTabManager> InTabManager, TWeakPtr<SChaosVDMainTab> InOwningTabWidget);
virtual ~FMoverCVDTab();
// Implementation of FChaosVDObjectDetailsTab
virtual TSharedRef<SDockTab> HandleTabSpawnRequest(const FSpawnTabArgs& Args) override;
virtual void HandlePostSelectionChange(const UTypedElementSelectionSet* ChangedSelectionSet) override;
virtual void HandleSolverDataSelectionChange(const TSharedPtr<FChaosVDSolverDataSelectionHandle>& SelectionHandle) override;
// Scene callbacks
void HandleSceneUpdated();
private:
void DisplaySingleParticleInfo(int32 SelectedSolverID, int32 SelectedParticleID);
void DisplayMoverInfoForSelectedElements(const TArray<FTypedElementHandle>& SelectedElementHandles);
// This function retrieves and caches all the mover data components for all solvers, populating SolverToSimDataComponentMap
void RetrieveAllSolversMoverDataComponents();
TWeakObjectPtr<UMoverCVDSimDataComponent>* FindMoverDataComponentForSolver(int32 SolverID);
TWeakPtr<FChaosVDScene> SceneWeakPtr;
TMap<int32, TWeakObjectPtr<UMoverCVDSimDataComponent>> SolverToSimDataComponentMap;
int32 CurrentlyDisplayedParticleID = INDEX_NONE;
int32 CurrentlyDisplayedSolverID = INDEX_NONE;
FChaosVDSelectionMultipleView MultiViewWrapper;
TSharedPtr<FMoverCVDSimDataWrapper> MoverSimDataWrapper;
TSharedPtr<FMoverSyncState> MoverSyncState;
TSharedPtr<FMoverInputCmdContext> MoverInputCmd;
TSharedPtr<FMoverDataCollection> MoverLocalSimData;
};