배열을 지원하는 Multiple self 와 그렇지 않은 경우를 구분해야 할까?
엔진 버전 5.4를 기준으로 할 때
MultipleSelfs
는UK2Node
의virtual bool AllowMultipleSelfs(bool bInputAsArray)
에 의해 결정된다.- 실제로 사용되는 곳은
UK2Node_CallFunction::AllowMultipleSelfs
밖에 없다. - 파라메터
bInputAsArray
가 배열을 입력으로 했을 때 여부를 전달하고 있는데, 이 파라메터는 현재 함수 내부에서 사용되지 않는다.
- 실제로 사용되는 곳은
UK2Node_CallFunction::AllowMultipleSelfs
의 내용은 아래와 같다.
따라서, 현재 MultipleSelfs
를 지원하는 핀은 배열과 2개 이상의 싱글 핀을 모두 함께 지원한다. 어느 한 쪽만 지원하는 경우는 존재하지 않는다. 즉, 다음의 경우는 현재 존재하지 않는다.
- “배열은 지원하지만 2개 이상의 싱글 핀은 지원하지 않는” MultipleSelf 핀
- “2개 이상의 싱글 핀은 지원하지만 배열은 지원하지 않는” MultipleSelf 핀
이런 경우가 존재할 가능성이 있다면, 이에 대한 대응도 해야 할 것이라고 생각했다. 아마 아래와 같은 작업이 될 것이다.
- MultipleSelf 의 케이스를 다루는 Enum 에
MultipleSelfSupportArrayOnly
와MultipleSelfSupportManySinglePinsOnly
를 추가한다. - 이에 따라, 반대편에 존재 가능한 핀의 경우의 수를 다루는 case 문을 추가한다.
- 이걸 구분해서 UI에 표시해준다.
1과 2는 괜찮다. 하지만 3을 하는 것은 정말 고통스러운 일이다. 안 그래도 표시할 정보가 많아서 공간이 부족하다. 사용자가 느낄 혼란을 가능한한 줄이고 싶기도 하다.
하지만 현재 그런 코드는 존재하지 않는다.
참고로 저 CanFunctionSupportMultipleTargets
는 스태틱 함수로, 내용은 아래와 같다.
예상할 수 있는 범위를 넘어서는 내용은 보이지 않는다. 이 내용까지 고려할 때, MultipleSelfSupportArrayOnly
나 MultipleSelfSupportManySinglePinsOnly
같은 케이스는 존재할 가능성이 거의 없다고 생각된다.
어딘가에 존재할지도 모르는 내가 알지 못하는 사용 사례가 있을 수 있다는 것이 걱정되지만, 이 부분은 그런 경우를 만나게 되면 다시 고민하기로 했다.
여전히 마음에 걸리지만.