visualElement의 width, height를 적용했는데도 보이지 않음 : style.position = Position.Absolute;을 적용해야 됐다. 기본값은 relative라 부모 크기가 0이면 자식도 보이지 않음.
load한 후에 바로 안 보이고 노드를 움직여야 보임
RegisterCallbackOnce<GeometryChangedEvent>(_ => LayoutBody());를 edge를 load할 때 설정함노드 클릭했을 때 가끔씩만 Edge가 확정됨 : Edge가 클릭 영역을 갖게 되니 MouseClickEvent를 가로챈 뒤 background로 올려보내버림. 명시적으로 PickingMode.Ignore을 설정하여 해결.
엣지 클릭했을 때 커서에 가림 : createEdge할 때 cursor를 안 보이게 함
엣지 클릭 영역이 너무 작음 : 실제 클릭영역을 따로 만들기. event를 달기 위해 만들기는 Init()에서 미리 만들어놓고, confirmEdge()나 Constructor for loaded edge에서 pickingMode 활성화. 원랜 클릭 가로챌까봐 pickingmode.ignore로 해놓으려고 했는데, 이전과는 다르게 멀쩡하게 confirmEdge() event가 잘 호출되길래 그대로 둠.
엣지 클릭 영역이 화살표 한 쪽으로 치우쳐져 있음 : clickArea.style.translate = new Translate(0, -clickThickness * .5f); 추가.
edge를 클릭했을 때 property field에 condition을 binding하여 조회하고 편집할 수 있게 하려고 했음.
ScriptableObject 같은 SerializedObject 형식이 필요하다길래 변환용 임시 SO를 선언하고 바꾸긴 했는데, 데이터 관리 문제가 추가로 발생함.
textNodeData가 Node에만 있고, edgeElement에는 fromNode와 toNode만 있다보니 edge를 클릭했을 때 textNodeData 안에 있는 condition data를 조회하기가 힘듬.
fromNode로 가서 toNode가 맞는 걸 골라서 억지로 조회하면 향후 확장성에도 문제가 생길 수 있을 뿐더러 로직이 복잡해짐
edge에 별도로 condition data를 저장한다면, 나중에 JSON 파일로 저장할 때 현재처럼 nodeElement만 순회하는게 아니라 EdgeElement들도 다 순회하면서, 복잡하게 field를 따로 지정해준 다음 저장해야 함. 저장 로직이 복잡해진다는 뜻.
생각해보니 굳이 그럴 것도 없이 edge의 fromNode에 들어있는 condition data를 참조로 갖고 있으면 됨. edge를 지울 때 참조로 갖고 있던 condition data 역시 textNodeData에서 지워주기만 하면, 문제 없을듯? editor에서 undo같은거 했을 때가 좀 tricky하긴 한데, undo를 막거나, undo 했을 때 binding된 data도 같이 되돌려주면 될듯. edge는 node에 종속적이라는 관계도 주석으로 달아놔야 할듯.
DisplayStyle.None과 Visibility.Hidden의 차이 : DisplayStyle.None는 그 요소가 차지하던 공간까지 제거됨
width px, % 설정 : 기본은 px. % 단위로 설정하려면 style.width = new Length(100, LengthUnit.Percent)