Advertisement
Guest User

Untitled

a guest
May 25th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "CoreMinimal.h"
  4. #include "IDetailCustomization.h"
  5. #include "DetailLayoutBuilder.h"
  6.  
  7. template<typename CustomizedType, typename DetailsClass>
  8. class FGenericDetails : public IDetailCustomization
  9. {
  10. public:
  11. static TSharedRef<IDetailCustomization> MakeInstance();
  12.  
  13. virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
  14.  
  15. virtual void LayoutCustomDetails(IDetailLayoutBuilder& DetailBuilder)
  16. {
  17. };
  18.  
  19. protected:
  20.  
  21. TWeakObjectPtr<CustomizedType> Selected;
  22. };
  23.  
  24. template <typename CustomizedType, typename DetailsClass>
  25. void FGenericDetails<CustomizedType, DetailsClass>::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder)
  26. {
  27. const TArray< TWeakObjectPtr<UObject> >& SelectedObjects = DetailBuilder.GetSelectedObjects();
  28. for( int32 ObjectIndex = 0; !Selected.IsValid() && ObjectIndex < SelectedObjects.Num(); ++ObjectIndex )
  29. {
  30. const TWeakObjectPtr<UObject>& CurrentObject = SelectedObjects[ObjectIndex];
  31. if ( CurrentObject.IsValid() )
  32. {
  33. Selected = Cast<CustomizedType>(CurrentObject.Get());
  34. }
  35. }
  36.  
  37. if(Selected.IsValid())
  38. {
  39. LayoutCustomDetails(DetailBuilder);
  40. }
  41. }
  42.  
  43. template <typename CustomizedType, typename DetailsClass>
  44. TSharedRef<IDetailCustomization> FGenericDetails<CustomizedType, DetailsClass>::MakeInstance()
  45. {
  46. return MakeShareable(new DetailsClass);
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement