0418 인터페이스 시스템0

- Scissor는 저장하고-설정하고-그리고-되돌려 놓기
- Separator 구현 찾아보기.
- 그리지 않아도 되는 물체는 그리지 않기
    -> 상위 노드에서 판별해서 선택적으로 그리기
- 겹치는 콜리젼은 "하이라키 콜리젼 합성"으로 판단.
    -> 모든 부모 노드의 기본 RotRect 콜리젼은 물론이요,
        자신의 RotRect 콜리젼도 통과해야
        그제서야 콜리젼 디텍션 true.
- 펼치거나 접는거 구현하기.
    -> 그냥 사이즈만 줄이면 될듯.
- 최종적 엔진의 가장 바깥쪽에는 VContainer가 있고,
    윈도우 사이즈가 변하면
      뷰포트가 변하고, 해당 VContainer를 
        Resize해준다.
- Control 노드의 구성
    - vec2 size
    - vec2 min_size
- Container의 구성
    - ...컨트롤 노드의 멤버.....
    - enum class ContainType { Fill, Wrap } m_contain_type;
    - Margin m_margin
- VContainer의 구성
    - .....Container의 멤버.....
    - float m_y_separation = 0.0f;
- Control노드는 add_child를 override해서
    자식이 추가되었을 때,
    그 자식이 Control이라면
    vec<Control*> m_contents{}; 에 추가해서
    사이즈 바뀔 때마다 m_contents를 업데이트해준다.
- Control노드는 update_hierarchy 가 있어서
    update와는 별개로, 강제로 업데이트 시킬수도 있다.
- Control노드는 position이 topleft이고, size가 bottomright로 늘어난다.