public void OnGUI()
        {
            NodeWindow = GUILayout.Window(WindowID, NodeWindow, DrawNode, "");

            //Draw the connections
            foreach (NodeConnection connection in nodeConnections.Where(x => x != null))
            {
                if (connection.Destination != null)
                {
                    NodeConnection.DrawConnected(connection.Source, connection.Destination.NodeWindow, NodeWindow);
                }
                else
                {
                    NodeConnection.DrawConnected(connection.Source, new Rect(Event.current.mousePosition.x, Event.current.mousePosition.y, 1, 1), NodeWindow);
                }
            }
        }
        /// <summary>
        /// Setup for the Node itself
        /// </summary>
        /// <param name="id"></param>
        public void DrawNode(int id)
        {
            if (Event.current.type == EventType.MouseDown)
            {
                if (_ACTIVENODE != null && _ACTIVENODE != this)
                {
                    //connection logic
                    _ACTIVENODE.nodeConnections[_ANSWERNUMBER].Destination = this;
                    _ACTIVENODE.ConPart.Next[_ANSWERNUMBER] = ConPart.PartID;
                    _ACTIVENODE = null;
                }
                else
                {
                    ClearConnection();
                }
            }

            EditorGUILayout.BeginVertical();

            EditorGUILayout.BeginHorizontal();
            //ModelArea
            EditorGUILayout.LabelField("Expression: ");
            GUILayout.FlexibleSpace();
            selected           = EditorGUILayout.Popup(selected, options, GUILayout.MinWidth(60f));
            ConPart.Expression = (Expressions)selected;
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.LabelField("Main Text: ");
            ConPart.Text = EditorGUILayout.TextArea(ConPart.Text, GUILayout.MinHeight(60f));

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Add Answer", EditorStyles.miniButtonLeft))
            {
                ConPart.Choices.Add("");
                ConPart.Next.Add(-1);
                nodeConnections.Add(null);
            }
            if (GUILayout.Button("Remove Answer", EditorStyles.miniButtonRight))
            {
                if (ConPart.Choices.Count > 0)
                {
                    ConPart.Choices.RemoveAt(ConPart.Choices.Count - 1);
                    ConPart.Next.RemoveAt(ConPart.Next.Count - 1);

                    nodeConnections.RemoveAt(nodeConnections.Count - 1);
                }
            }
            EditorGUILayout.EndHorizontal();


            for (int i = 0; i < ConPart.Choices.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                ConPart.Choices[i] = EditorGUILayout.TextField(ConPart.Choices[i]);
                Rect tempRect = new Rect(GUILayoutUtility.GetLastRect().position.x + GUILayoutUtility.GetLastRect().width + 21, GUILayoutUtility.GetLastRect().position.y + 8, 16, 16);

                //connection from
                if (GUILayout.Button("", EditorStyles.radioButton, GUILayout.Width(16), GUILayout.Height(16)))
                {
                    _ACTIVENODE   = this;
                    _ANSWERNUMBER = i;
                    if (nodeConnections[i] != null)
                    {
                        nodeConnections[i].Source      = tempRect;
                        nodeConnections[i].Destination = null;
                    }
                    else
                    {
                        nodeConnections[i] = new NodeConnection(tempRect, null);
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();

            GUI.DragWindow();
        }