/// <summary>
 /// finds the closest target and turns toward it 
 /// fails if it cant find a target
 /// </summary>
 /// <param name="agent"></param>
 /// <param name="_range"></param>
 /// <param name="ArriveRadius"></param>
 /// <param name="_type"></param>
 public Node_AlignToTarget(UnityEngine.AI.NavMeshAgent agent, float _range, float ArriveRadius, AItype _type = AItype.none, float TurnSpeed = 3)
 {
     m_child1 = new Node_FindClosestTarget(_range, _type);
     m_child2 = new Node_Align(TurnSpeed);
 }
 /// <summary>
 /// finds a target of specific type 
 /// then it moves toward it until it is close enought
 /// fails if no units in detection range
 /// </summary>
 /// <param name="agent"></param>
 /// <param name="_range"></param>
 /// <param name="ArriveRadius"></param>
 /// <param name="_type"></param>
 public Node_Seek_Modular(IMoveToNode MoveNode, float _range, float ArriveRadius, AItype _type = AItype.none)
 {
     m_range = _range;
     m_child1 = MoveNode;
     m_child2 = new Node_FindClosestTarget(m_range, _type);
     m_child1.SetArriveRadius(ArriveRadius);
 }
 /// <summary>
 /// finds a target of specific type 
 /// then it moves toward it until it is close enought
 /// fails if no units in detection range
 /// </summary>
 /// <param name="agent"></param>
 /// <param name="_range"></param>
 /// <param name="ArriveRadius"></param>
 /// <param name="_type"></param>
 public Node_Seek(UnityEngine.AI.NavMeshAgent agent, float _range, float ArriveRadius, AItype _type = AItype.none)
 {
     m_range = _range;
     m_child1 = new Node_MoveTo_With_Avoid(agent);
     m_child2 = new Node_FindClosestTarget(m_range, _type);
     m_child1.SetArriveRadius(ArriveRadius);
 }