You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Also fixed assert+crash when user tried to use FStringClassReference, without specifying "MetaClass" in UPROPERTY macro. UHT allowed it, but the editor was crashing. Now when it's missing it is assumed it is UClass. #codereview Robert.Manuszewski [CL 2385157 by Jaroslaw Palczynski in Main branch]
34 lines
1.3 KiB
C++
34 lines
1.3 KiB
C++
// Copyright 1998-2015 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
/**
|
|
* Customizes a string class reference to look like a UClass property
|
|
*/
|
|
class FStringClassReferenceCustomization : public IPropertyTypeCustomization
|
|
{
|
|
public:
|
|
static TSharedRef<IPropertyTypeCustomization> MakeInstance()
|
|
{
|
|
return MakeShareable(new FStringClassReferenceCustomization);
|
|
}
|
|
|
|
/** IPropertyTypeCustomization interface */
|
|
virtual void CustomizeHeader(TSharedRef<class IPropertyHandle> InPropertyHandle, class FDetailWidgetRow& HeaderRow, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override;
|
|
virtual void CustomizeChildren(TSharedRef<class IPropertyHandle> InPropertyHandle, class IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils) override;
|
|
|
|
private:
|
|
/** @return The class currently set on this reference */
|
|
const UClass* OnGetClass() const;
|
|
/** Set the class used by this reference */
|
|
void OnSetClass(const UClass* NewClass);
|
|
|
|
/** Find or load the class associated with the given string */
|
|
static const UClass* StringToClass(const FString& ClassName);
|
|
|
|
/** Handle to the property being customized */
|
|
TSharedPtr<IPropertyHandle> PropertyHandle;
|
|
/** A cache of the currently resolved value for the class name */
|
|
mutable TWeakObjectPtr<UClass> CachedClassPtr;
|
|
};
|