저번 시간까지는 함수, 변수, 레퍼런스가 모두 들어간 도표를 사용했어.
하지만 이제 UMesh가 완벽한 대칭 연결(연결되는 두 대상이 같은 지위로 서로에게 접근할 수 있음)을 지원하고, 완벽하게 자동으로 Null처리를 해주기 때문에 - 즉 UMesh가 두 오브젝트간의 연결을 능동적으로 관리하게 때문에 더이상 서로가 무엇을 가지고 있는지 신경쓸 필요가 없어졌어.
그래서 앞으로의 도표는 이전처럼 요소 중심이 아닌 기능 중심으로 간소화하여 만들어질 거야.
먼저 새 도표를 이용해서 개선된 UMesh에 대해 설명할께.
개선된 UMesh는 채널에 따라 외부 연결 시나리오와 연결 해제 시나리오를 가져.
외부 연결 시나리오는 "밖에서 이 채널로 누가 연결을 시도하면 이렇게 하세요"를 정해둔 거고, 연결 해제 시나리오는 "이 채널에 있는 얘를 연결 해제할 때 이렇게 하세요"를 정해둔 거야.
예를 들어 위 GLinear의 'node_0'채널의 경우, 밖에서 '_node_0' 이라는 녀석이 연결을 시도하면 this.node_0에 _node_0을 저장하는 작업을 수행하고, 반대로 이 채널의 연결을 끊으면 this.node_0 참조를 null로 만들어.
이렇게 하면 변수 할당과 null처리를 일일히 신경쓰지 않아도 자동으로 해 주니까 코딩에 더 집중할 수 있지.
개선된 UMesh의 장점은 바로 대칭 연결이야. 좀더 구체적으로 말하자만, 연결하는 두 객체가 같은 지위로 연결되기 때문에 서로가 서로에 대한 정보를 가져올 수 있을 뿐만 아니라 두 객체 중 어느 쪽에서든 연결을 해제할 수 있어.
예를 들어 A에서 B를 연결하는 것과 B에서 A를 연결하는 것이 같은 작용을 , A에서 B를 해제하는 것과 B에서 A를 해제하는 것이 같은 작용을 해.
이로서 연결 절차에 대해 보다 자유로울 수 있고, 객체 해제 시 null처리를 신경쓰지 않을 수 있어.
그럼 실제로 연결할 때 어떻게 대칭 연결이 이루어지는지 설명할께.
아래 코드의 Connect부분이 들어온 node_0 인자를 아까 만든 채널 node_0에 연결하는 역할을 하는 부분이야.
보다시피 채널을 만들 때 시나리오를 이미 정해두었기 때문에, 인자를 연결할 내 채널과, 나를 연결할 타겟의 채널을 입력하기만 하면 연결이 끝나.
이렇게 하면 내 채널의 연결 시나리오가 실행되고, 상대도 나에 대한 채널의 시나리오가 실행돼.
연결 해제도 연결할 때의 방식과 똑같이 진행돼.
조금 다른 점이 있다면 상대의 채널을 입력하지 않아도 된다는 건데, 이는 이미 연결할 때 상대방의 어느 채널에 연결할지 결정했으므로 그 데이터를 그대로 사용하면 되기에 굳이 입력할 필요가 없는 거야.
이렇게 개선된 UMesh의 관계 관리에 대해 알아봤어.
아래부터는 개선된 도표를 이용해서 GNode, GFunc, GMesh의 관계를 설명할께.
각 세 요소의 관계 지도야.
GNode를 수정할 때, GFunc와 GMesh가 바뀌는 과정이야.
GMesh가 삭제될 때, 하위 계층은 자동으로 삭제돼.
오늘은 이렇게 요소 중심이 아니라 기능 중심으로 프로그램을 설명해 봤는데, 이전보다 전달하고자 하는 것들을 보다 쉽게 전달할 수 있게 된 것 같아.
다음 시간에는 베지어 커브와 GMesh의 셰이더에 대해 설명할께. 안녕!
선생님 지리십니다 - dc App