include
IUserListEntry.h
설명
stock UMG 리스트 뷰에서 entry 위젯으로 사용할 수 있게 하기 위해 어떤 UUserWidget 클래스를 위해 필요한 인터페이스.
change event와 소유한 리스트에 의해 엔트리가 할당되어 표기된 Object item을 위해 getter 제공
Header
UINTERFACE() // unreal interface 태그
class UMG_API UUserObjectListEntry : public UUserListEntry //U- 어미가 있는 UObject 클래스
{
GENERATED_UINTERFACE_BODY()
};
class UMG_API IUserObjectListEntry : public IUserListEntry{
GENERATED_IINTERFACE_BODY()
public:
// 소유하고 있는 UListView에 있는 이 entry가 현재 표현하는 UObject 아이템 반환
template< typename ItemObjectT = UObject>
ItemObjectT* GetListItem() const{
static_assert(TIsDerivedFrom< ItemObjectT, UObject>::IsDerived, "Item represented by an ObjectListEntry are always expected to be UObjects");
return Cast< ItemObjectT>(GetlistItemObjectInternal();
}
protected:
//UUserWidget에서 NativeOn~ method들 과 같은 같은 패턴을 따름. - super 호출들이 이벤트에서 BP로 순서대로 요청된다.
virtual void NativeOnlistItemObjectSet(UObject* ListItemObject);
//이 entry가 소유한 list view에 의해 새 item 객체를 표현하고자 할당되었을 때 호출된다.
void OnListItemObjectSet(UObject* ListItemObject);
//IUserObjectListEntry의 Implementers는 더 이상 메뉴얼적으로 GetListItemObject 메서드를 시행하지 않는다.
UE_DEPRECATED(4.23, "Implementers of IUserObjectListEntry no longer need to manually implement the GetListItemObject method.")
virtual UObject* GetListItemObject_Implementation() const { return nullptr; }
//NativeListItemObjectSet으로 개명되었다. item 객체를 캐싱하는 것은 더 이상 어려운 요구사항이 아니기 때문
UE_DEPRECATED(4.23, "Renamed to NativeOnListItemObjectSet, as cashing the item object is no longer a hard requirement.")
virtual void SetListItemObjectInternal(UObject* InObject){}
private:
UObject* GetListItemObjectInternal() const;
template< typename> friend class SObjectTableRow;
static void SetListItemObject(UUserWidget& ListEntryWidget, UObject* ListItemObject);
};
// IUserListEntry를 시행하는 위젯들에게 for FREE로 기능을 제공하기 위한 static Library
UCLASS()
class UMG_API UUserObjectLIstEntryLibrary : public UBlueprintFunctionLibrary{
GENERATED_BODY()
public:
// 소유한 list view에서 이 Entry가 할당되어 현재 표현하고자 하는 item을 반환한다.
UFUNCTION(BlueprintPure, Category = UserObjectListEntry, meta = (DefaultToSelf = UserObjectListEntry))
static UObject* GetListItemObject(TScriptInterface< IUserObjectListEntry> UserObjectListEntry);
};
'개발자로 > Unreal' 카테고리의 다른 글
[Unreal4] ListView (0) | 2022.09.30 |
---|---|
[Unreal4] 컨트롤러 (0) | 2022.08.19 |
[Unreal4] 스켈레탈 메시 액터(SkeletalMesh Actor) (0) | 2022.08.19 |
[Unreal4] 캐릭터(Character) (0) | 2022.08.19 |
[Unreal4] 입력(Input) (0) | 2022.08.17 |