Files
UnrealEngineUWP/Engine/Source/Editor/MeshPaintMode/Private/PaintModeSettingsCustomization.h
Ryan Vance 7c51ff94af Merging //UE4/Dev-Main to Dev-VR (//UE4/Dev-VR)
CL 1 of 8
#rb integration

[CL 4748712 by Ryan Vance in Dev-VR branch]
2019-01-17 18:54:05 -05:00

80 lines
3.3 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "IDetailCustomization.h"
#include "IPropertyTypeCustomization.h"
#include "IDetailRootObjectCustomization.h"
#include "PropertyRestriction.h"
#include "Widgets/SWidget.h"
class UPaintModeSettings;
class FPaintModePainter;
class SHorizontalBox;
struct FVertexPaintSettings;
struct FTexturePaintSettings;
class FPaintModeSettingsCustomization : public IDetailCustomization
{
public:
static TSharedRef<IDetailCustomization> MakeInstance();
/** IDetailCustomization interface */
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
void OnPaintTypeChanged(IDetailLayoutBuilder* LayoutBuilder);
};
class FPaintModeSettingsRootObjectCustomization : public IDetailRootObjectCustomization
{
public:
/** IDetailRootObjectCustomization interface */
virtual TSharedPtr<SWidget> CustomizeObjectHeader(const UObject* InRootObject) override;
virtual bool IsObjectVisible(const UObject* InRootObject) const override { return true; }
virtual bool ShouldDisplayHeader(const UObject* InRootObject) const override { return false; }
};
class FVertexPaintSettingsCustomization : public IPropertyTypeCustomization
{
public:
static TSharedRef<IPropertyTypeCustomization> MakeInstance();
/** IPropertyTypeCustomization interface */
virtual void CustomizeChildren(TSharedRef<IPropertyHandle> PropertyHandle, IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils) override;
virtual void CustomizeHeader(TSharedRef<IPropertyHandle> PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override {};
protected:
/** Checks whether or not vertex painting settings are visible (depends whether or not in color or blend weight painting mode) */
EVisibility ArePropertiesVisible(const int32 VisibleType) const;
/** Callback for when texture weight type changed so we can update restrictions */
void OnTextureWeightTypeChanged(TSharedRef<IPropertyHandle> WeightTypeProperty, TSharedRef<IPropertyHandle> PaintWeightProperty, TSharedRef<IPropertyHandle> EraseWeightProperty);
FReply OnSwapColorsClicked();
protected:
/** Cached instance of vertex paint settings */
FVertexPaintSettings* PaintSettings;
/** Property restriction applied to blend paint enum dropdown box */
TSharedPtr<FPropertyRestriction> BlendPaintEnumRestriction;
/** Static list of property names which require customization */
static TArray<FName> CustomPropertyNames;
};
class FTexturePaintSettingsCustomization : public IPropertyTypeCustomization
{
public:
static TSharedRef<IPropertyTypeCustomization> MakeInstance();
/** IPropertyTypeCustomization interface */
virtual void CustomizeHeader(TSharedRef<IPropertyHandle> PropertyHandle, FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& CustomizationUtils) override {};
virtual void CustomizeChildren(TSharedRef<IPropertyHandle> PropertyHandle, IDetailChildrenBuilder& ChildBuilder, IPropertyTypeCustomizationUtils& CustomizationUtils) override;
protected:
/** Cached instance of the painter */
FPaintModePainter* MeshPainter;
/** Cached instance of the texture painting settings */
FTexturePaintSettings* PaintSettings;
};
/** Creates a widget representing a color channel */
static TSharedRef<SHorizontalBox> CreateColorChannelWidget(TSharedRef<IPropertyHandle> ChannelProperty);