public AISubBehaviorData GetCombatAISubBehavior(AIbehaviorData.AiBehaviors pBehavior, int pSubBehaviorIndex = -1)
    {
        AISubBehaviorData oSubBehaviorData = null;


        for (int i = 0; i < AgressiveBehaviors.Count; i++)
        {
            if (AgressiveBehaviors[i].beahviorGroup == pBehavior)
            {
                ///*** Get Sub behavior index , if not already assigned
                if (pSubBehaviorIndex == -1)
                {
                    pSubBehaviorIndex = Random.Range(0, AgressiveBehaviors[i].AISubBehaviors.Count);
                }

                for (int x = 0; x < AgressiveBehaviors[i].AISubBehaviors.Count; x++)
                {
                    oSubBehaviorData = AgressiveBehaviors[i].AISubBehaviors[pSubBehaviorIndex];
                }
            }
        }


        return(oSubBehaviorData);
    }
    public void Attack()
    {
        CancelInvoke();

        isAttacking = true;

        transform.parent.LookAt(GameController.instance.player);

        //*** Disable movment ;
        aiNavigation.canMove = false;

        if (isMeleeEnemy)
        {
            activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Attacking_Melee, 0);
            animations.SetSpecificAnimation(2, meleeAttackAnimation, false);
        }
        else
        {
            activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Attacking_Shooting, 0);
            animations.SetSpecificAnimation(2, ShootingAnimation, false);

            if (laserFirePosition != null)
            {
                Invoke("OnProjectileAttack", 1.01f);
            }
        }


        Invoke("GetPositionTarget", Random.Range(5f, 8f));
    }
    public void Move()
    {
        if (aiNavigation != null)
        {
            CancelInvoke();

            if (isMeleeEnemy)
            {
                aiNavigation.maxSpeed = walkSpeed;

                animations.SetSpecificAnimation(2, walkAnimation, true);
            }
            else
            {
                aiNavigation.maxSpeed = runSpeed;

                animations.SetSpecificAnimation(2, runAnimation, true);
            }


            isMoving = true;

            aiNavigation.canMove = true;

            activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Moving, 0);


            Invoke("GetPositionTarget", Random.Range(10f, 13f));
        }
        else
        {
            Debug.LogWarning("<><>AI Naviagtion  is null !!!!!");
        }
    }
 public void SetSubBehaviorData()
 {
     //*** There is an option for adign a specific sub behavior by supplying the sub behavior index
     activeSubBehavior = AIController.instance.GetCombatAISubBehavior(behaviorGroup);
 }