File CollisionDataEditorToolkit.h
File List > CollisionEditor > Public > CollisionDataEditorToolkit.h
Go to the documentation of this file
#pragma once
#include "CoreMinimal.h"
#include "Toolkits/AssetEditorToolkit.h"
#include "Toolkits/IToolkitHost.h"
#include "Widgets/Docking/SDockTab.h"
#include "Widgets/Layout/SBorder.h"
#include "Widgets/Text/STextBlock.h"
#include "PropertyCustomizationHelpers.h"
#include "Data/CollisionData.h"
class APlayerObject;
class FCollisionAnimationPreviewScene;
class SCollisionAnimationViewport;
class SCelAssetTree;
//These aren't used yet
enum ESceneInteractionMode
{
Interaction_CameraMove,
Interaction_EditCollisionBoxes
};
enum EBoxEditMode
{
EditMode_None,
EditMode_Add,
EditMode_Move,
EditMode_Delete
};
class FCollisionDataEditorToolkit : public FAssetEditorToolkit
{
public:
FCollisionDataEditorToolkit();
virtual ~FCollisionDataEditorToolkit() override;
// Move some of these to private
// Initializes the editor with the asset to be edited
void Initialize(UCollisionData* InCollisionData, const EToolkitMode::Type Mode,
const TSharedPtr<IToolkitHost>& InitToolkitHost);
// FAssetEditorToolkit interface
virtual FName GetToolkitFName() const override; // Unique name for this toolkit type
virtual FText GetBaseToolkitName() const override; // Display name for the toolkit
virtual FText GetToolkitName() const override;
virtual FString GetWorldCentricTabPrefix() const override; // Prefix for tabs in world-centric mode
virtual FLinearColor GetWorldCentricTabColorScale() const override;
// Tab management
virtual void RegisterTabSpawners(const TSharedRef<FTabManager>& InTabManager) override;
virtual void UnregisterTabSpawners(const TSharedRef<FTabManager>& InTabManager) override;
TSharedRef<SDockTab> SpawnTab_CollisionDataDetails(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_PlayerObjectSelector(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_ViewportTab(const FSpawnTabArgs& Args);
// Do I need to initialize a scene?
void InitializePreviewScene();
// Accessors
// Get current animation name
FText GetSelectedState() const;
private:
TSharedPtr<IDetailsView> DetailsView;
TSharedPtr<SClassPropertyEntryBox> PlayerObjectBPPicker;
TSharedPtr<FCollisionAnimationPreviewScene> PreviewScene;
TSharedPtr<SCollisionAnimationViewport> PreviewViewportWidget;
UCollisionData* CollisionData{};
TSharedPtr<SCelAssetTree> CelAssetTree;
FGameplayTag SelectedCel;
UClass* PlayerObjectClass = nullptr;
APlayerObject* PlayerObject{};
void InitializeCelAssetTree();
void OnCelSelected(int32 CelIndex);
void OnCollisionFramesChanged();
void OnPlayerObjectBPSelected(const UClass* Class);
void InitializePlayerObjectBPPicker();
FGameplayTag GetCurrentCelName() const;
void UpdateAnimationPlayback(int32 frame);
protected:
virtual void OnClose() override;
};