public override void OnBodyGUI() { if (_dataSelectorNode == null) { _dataSelectorNode = (DataSelectorNode)target; } serializedObject.Update(); if (_dataSelectorNode.SerializableInfos.Count > 0) { string[] choices = _dataSelectorNode.SerializableInfos.Select(info => info.Name).ToArray(); //BUG-fred ArgumentException: Getting control 2's position in a group with only 2 controls when doing mouseUp _dataSelectorNode.ChoiceIndex = EditorGUILayout.Popup(_dataSelectorNode.ChoiceIndex, choices); _dataSelectorNode.SelectedSerializableInfo = _dataSelectorNode.SerializableInfos.ElementAt(_dataSelectorNode.ChoiceIndex); NodePort dataPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Data)); NodeEditorGUILayout.AddPortField(dataPort); NodePort nodePort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Output)); nodePort.ValueType = _dataSelectorNode.SelectedSerializableInfo.Type; NodeEditorGUILayout.AddPortField(nodePort); } else { NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_dataSelectorNode.Data))); } serializedObject.ApplyModifiedProperties(); }
public override void OnBodyGUI() { if (_dataSelectorNode == null) { _dataSelectorNode = (DataSelectorNode)target; } serializedObject.Update(); if (_dataSelectorNode.SerializableInfos.Count > 0) { string[] choices = _dataSelectorNode.SerializableInfos.Select(info => info.Name).ToArray(); int choiceIndex = EditorGUILayout.Popup(_dataSelectorNode.ChoiceIndex, choices); if (choiceIndex != _dataSelectorNode.ChoiceIndex) { UpdateChoice(choiceIndex); } _dataSelectorNode.SelectedSerializableInfo = _dataSelectorNode.SerializableInfos.ElementAt(_dataSelectorNode.ChoiceIndex); NodePort dataPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Data)); NodeEditorGUILayout.AddPortField(dataPort); NodePort outputPort = _dataSelectorNode.GetPort(nameof(_dataSelectorNode.Output)); outputPort.ValueType = _dataSelectorNode.SelectedSerializableInfo.Type; NodeEditorGUILayout.AddPortField(outputPort); } else { NodeEditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(_dataSelectorNode.Data))); } serializedObject.ApplyModifiedProperties(); }