2020. 5. 30. 01:32ㆍ프로그래밍/TIL
TIL 인데 드문드문 글이 작성되어 아쉽긴 하지만, 분량채우기로 간략하게만 타이틀만 적기엔 의미가 부족해 보여서 고민이다.
지금보다는 더 자주 기록하는 습관을 가져야 할 것 같다.
디테일 레이아웃을 커스텀하며 알게된 정보들을 의식의 흐름대로 정리 !
1. Layout 의 구성요소들은, PropertyHandle 단위로 접근한다.
구성요소는 class, struct 들의 멤버변수들이라고 생각하면 된다.
PropertyHandle 이 텍스트파일의 fp 로 문자들에 접근하는 느낌이다.
-
IPropertyHandle 이 Base Interface 이다.
-
구성요소 타입에 따라 Handle Interface 는 다형성을 가진다.
-
IPropertyHandleArray
-
IPropertyHandleSet
-
IPropertyHandleMap
-
...
-
-
구성요소 타입에 따라 Handle 구현부들이 정의된다. ( pimpl )
-
FPropertyHandleBool
-
FPropertyHandleInt
-
FPropertyHandleArray
-
FPropertyHandleSet
-
...
-
2. 한 가지 특이했던 점은, UPROPERTY() 메타지정자로 지정한 Category 도 PropertyHandle 이 생성된다.
Category 도 커스텀 할 수 있기 때문인 듯. ( Category 명을 바꾼다거나 등 )
대신, 실제 멤버변수가 아니기 때문에 PropertyHandle 이 물고있는 PropertyNode 는 없다.
3. 구성요소 ( PropertyHandle ) 들은, 선언된 순서 (멤버변수) 에 따라 Tree 구조를 이루고 있다.
4. UPROPERTY 메타지정자로 언리얼 에디터에 노출하지 않은 멤버변수는 PropertyHandle 이 생성되지 않는다.
5. PropertyHandle 은 PropertyNode 의 Proxy 역할을 한다.
PropertyNode 가, 실제 멤버변수를 물고있는 매개체이다.
6. 최상위 PropertyHandle 은 디테일 레이아웃 에 나타내고자 했던 최상위 class, struct 자체이다.
7. 실제 Property 가 아닌 경우 ( Category, 최상위 객체 같은 ) PropertyHandle 은 존재하지만, Property 본체는 없다.
8. Skeleton 의 본을 다루는 것은 FAnimNode_ModifyBone 이 좋은 참고가 되었다.
FBoneReference 구조체를 커스텀 한 것을 보면, SBoneSelectionWidget 를 이용해서 현재 스켈레톤의 특정 본을 드랍다운으로 선택 할 수 있게 해놨다.
9. 디테일 커스텀 관련 모듈 - FDetailCustomizationsModule
10. 디테일 커스텀 등록 함수
- void RegisterCustomPropertyTypeLayout()
- void RegisterCustomClassLayout()
'프로그래밍 > TIL' 카테고리의 다른 글
200325 UE4 애니메이션 에셋 브라우저 Column 추가 (0) | 2020.03.26 |
---|---|
200324 UE4 ( 애니메이션 에디터 커스텀 삽질 등 ) (0) | 2020.03.25 |