0504 에디터 올리는거 정리
1. 뷰포트는 2개가 있다.
- WorldViewerViewport : IViewport
-> get_world_viewer_texture() 를 통해서
월드 뷰어의 현재 텍스쳐를 가져옴.
-> 밑에 특별한 UVClippedTextureRect의 world기준 rect에 따라서
리사이징 / 마우스위치 register 됨.
- EditorViewport : IFinalViewport
-> 여기 매우 깊숙히 특별한 UVClippedTextureRect는
get_owner().find_viewport("WorldViewer")
.as<WorldViewerViewport>().get_world_viewer_texture()
를 텍스쳐로 가짐.
= 이 UVClippedTextureRect가 리사이징되면, 위의 뷰포트도
동시에 리사이징되기 때문에, aspect ratio 유지라던가 필요없음.
단, GL텍스쳐 재할당 피하기 위해서
텍스쳐 특정부분만 그리기(UV 기준 클리핑).
2. 저 두 뷰포트 중
WorldViewerViewport가 먼저 그려지고,
EditorViewport는 나중에 그려진다.
3. EditorViewport에서 꼭 해야 할 건,
루트노드 트리가 모두 구성된 후에
setup()같은 함수에서
깊숙히 있는 UVClippedTextureRect의 텍스쳐를 지정해줘야 한다는 것이다.
(대충 그 클래스에서 알아서 잘라 그리기)
4. WorldViewerViewport에서 꼭 해야 할 건,
"만약 에디터 기준으로 커서가 월드 뷰어 안에 들어와 있는지"
검사한 후에?
들어와 있지 않다면
뷰포트 기준으로 전체 씬이 "입력이 들어오지 않음 플래그"
를 새로 만들어서, 처리하기.