protected virtual void SelfChange() { if (controller != null) { VFXView view = GetFirstAncestorOfType <VFXView>(); var newInput = view.GetDataAnchorByController(controller.input); if (base.input != newInput) { if (base.input != null) { base.input.Disconnect(this); } base.input = newInput; base.input.Connect(this); } var newOutput = view.GetDataAnchorByController(controller.output); if (base.output != newOutput) { if (base.output != null) { base.output.Disconnect(this); } base.output = newOutput; base.output.Connect(this); } UpdateEdgeControl(); } }
void AlignNodeToLinkedPort(VFXView view, VFXDataAnchorController port, VFXNodeController nodeController) { var portNode = view.GetDataAnchorByController(port); var connectorElement = portNode.Q <VisualElement>("connector"); var newNode = view.GetNodeByController(nodeController); var offset = newNode.worldBound.position - connectorElement.worldBound.position + portPositionOffset; nodeController.model.position += offset / view.scale; }