/// <summary>
        /// Adds a node into the scene
        /// </summary>
        public void AddNode(NodeInfo nodeInfo)
        {
            MDSNode newNode = m_WPNodePrefab;

            MDSNodeType nodeType = (MDSNodeType)nodeInfo.nodeType;

            if (nodeType == MDSNodeType.WAYPOINT)
            {
                newNode = Instantiate(m_WPNodePrefab);
            }
            else
            {
                newNode = Instantiate(m_EPNodePrefab);

                m_TargetNode = newNode;
            }

            newNode.NodeInfo           = nodeInfo;
            newNode.transform.position = new Vector3(nodeInfo.px, nodeInfo.py, nodeInfo.pz);

            if (newNode.nameInputBehaviour != null)
            {
                if (MainController.Instance._mode == Mode.EDITOR_MODE)
                {
                    newNode.nameInputBehaviour.SetInputText(nodeInfo.name);
                }
                else
                {
                    newNode.nameInputBehaviour.gameObject.SetActive(false);
                }
            }

            if (newNode.answerInputBehaviour != null)
            {
                if (MainController.Instance._mode == Mode.EDITOR_MODE)
                {
                    newNode.answerInputBehaviour.SetInputText(nodeInfo.answer);
                }
                else
                {
                    newNode.answerInputBehaviour.gameObject.SetActive(false);
                }
            }

            m_NodeObjList.Add(newNode);

            if (nodeType == MDSNodeType.ENDPOINT)
            {
                m_TargetNodeObjList.Add(newNode);

                // Add one to number of puzzles
                if (MainController.Instance._mode == Mode.PLAY_MODE)
                {
                    MainController.Instance.GetGUIController().puzzlePanel.NumOfPuzzles += 1;
                }
            }
        }
        /// <summary>
        /// Adds a deactivated node into the scene
        public void AddDeactiveNode(NodeInfo nodeInfo)
        {
            MDSNode newNode = m_WPNodePrefab;

            MDSNodeType nodeType = (MDSNodeType)nodeInfo.nodeType;  // Cast stored node type from int to MDSNodeType

            if (nodeType == MDSNodeType.WAYPOINT)
            {
                newNode = Instantiate(m_WPNodePrefab);
            }
            else
            {
                newNode = Instantiate(m_EPNodePrefab);

                m_TargetNode = newNode;
            }

            newNode.Deactivate();

            newNode.NodeInfo           = nodeInfo;
            newNode.transform.position = new Vector3(nodeInfo.px, nodeInfo.py, nodeInfo.pz);

            if (newNode.nameInputBehaviour != null)
            {
                newNode.nameInputBehaviour.SetInputText(nodeInfo.name);
            }

            if (newNode.answerInputBehaviour != null)
            {
                newNode.answerInputBehaviour.SetInputText(nodeInfo.answer.ToString());
            }

            m_NodeObjList.Add(newNode);

            if (nodeType == MDSNodeType.ENDPOINT)
            {
                m_TargetNodeObjList.Add(newNode);
            }
        }
 /// <summary>
 /// Helper function that changes the selected node type using its raw value - int
 /// </summary>
 public void ChangeSelectedNodeType(int value)
 {
     _selectedNodeType = (MDSNodeType)value;
 }
 /// <summary>
 /// Helper function that changes the selected node type for node placement
 /// </summary>
 public void ChangeSelectedNodeType(MDSNodeType nodeType)
 {
     _selectedNodeType = nodeType;
 }