0504 겹치는UI에대해서
1. 겹치는 UI는 최대한 만들지 않는다.
// ============================================= //
밑에 있는 m_popup_list는 끔찍한 생각이다.
test/0511/(중요) 팝업GUI - 해답 - UILayer의 구현.txt 을 참고하자.
UILayer에 대한 구현이 필요하다.
++ 그리고 애초에 InnerWindow안의
호버링되고 있는 오브젝트를 케어할 필요가 없던 게
애초에 InnerWindow는 포커싱을 잡고 있지 않다!!!!!!!!않아야 한다!!!!!!
-> 밑의 버튼들은 그냥 자식으로만 달려있을 뿐이고,
InnerWindow가 움직이면 종속적으로 움직인다.
// ============================================ //
2. Inner-Window 처럼 팝업의 경우,
무조건 겹치는 부분이 생기는데,
나중에 추가할 때
"업데이트는 먼저되고, 렌더링은 나중에 된다."
-> IControl에서 add_child에
만약 추가하려는 자식이 popup이면
m_popup_list에 넣기
아니면 원래함수호출.
(단, IObject에 InnerWindow를 자식으로 추가하는 것은 금지)
(무조건 IControl딴에서 걸러져야 함.)
그리고 m_popup_list 만 따로
먼저업데이트하고
나중에렌더링하고
즉
1. Inner-Window는 다른 오브젝트들보다 먼저 업데이트된다.
2. Inner-Window는 다른 오브젝트들이 모두 그려진 후, 위에 그려진다.
3. Inner-Window에서 hovering되고 있는 UI들을 처리하기 위해서
IViewport에다가 m_current_hovering_object를 추가하고
모든 UI에 대해 그걸 고려하게 한다.
(Idle -> Hover로 전환할 때 get_current_hovering_object()가 nullptr이라는 제약 추가)
(Inner-Window가 여러 겹일 수 있는가도 생각해야 함.)
2-1. 또는 뇌절이긴 한데
-> 팝업을 모두 IApp으로 만들어서
진짜 새로운 윈도우를 띄우도록...
3. 고도에 프로젝트 설정같은 에디터 팝업 메뉴들 생각하면
"UI Layer"개념을 도입해도 괜찮을 듯 하다