Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "CoreMinimal.h"
- #include "IDetailCustomization.h"
- #include "DetailLayoutBuilder.h"
- template<typename CustomizedType, typename DetailsClass>
- class FGenericDetails : public IDetailCustomization
- {
- public:
- static TSharedRef<IDetailCustomization> MakeInstance();
- virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
- virtual void LayoutCustomDetails(IDetailLayoutBuilder& DetailBuilder)
- {
- };
- protected:
- TWeakObjectPtr<CustomizedType> Selected;
- };
- template <typename CustomizedType, typename DetailsClass>
- void FGenericDetails<CustomizedType, DetailsClass>::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder)
- {
- const TArray< TWeakObjectPtr<UObject> >& SelectedObjects = DetailBuilder.GetSelectedObjects();
- for( int32 ObjectIndex = 0; !Selected.IsValid() && ObjectIndex < SelectedObjects.Num(); ++ObjectIndex )
- {
- const TWeakObjectPtr<UObject>& CurrentObject = SelectedObjects[ObjectIndex];
- if ( CurrentObject.IsValid() )
- {
- Selected = Cast<CustomizedType>(CurrentObject.Get());
- }
- }
- if(Selected.IsValid())
- {
- LayoutCustomDetails(DetailBuilder);
- }
- }
- template <typename CustomizedType, typename DetailsClass>
- TSharedRef<IDetailCustomization> FGenericDetails<CustomizedType, DetailsClass>::MakeInstance()
- {
- return MakeShareable(new DetailsClass);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement