protected virtual void fireWeapon()
    {
        if (getAmmoCount() > 0)
        {
            m_ammoCount--;
            // GameObject Tempprojectile = GameObject.Instantiate(projectile, m_gunFireingPoint, this.transform.rotation);
            GameObject Tempprojectile = m_projectilePool.getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.BasicProjectile);
            Tempprojectile.transform.position = m_gunFireingPoint;
            Tempprojectile.transform.rotation = this.transform.rotation;


            Tempprojectile.transform.forward = (m_target.transform.position - m_gunFireingPoint).normalized;

            Tempprojectile.SetActive(true);
            ProjectileBasic projetcileBasic = Tempprojectile.GetComponent <ProjectileBasic>();
            projetcileBasic.speed = 1f;
            projetcileBasic.setFiredFrom(m_ownersFaction);
            projetcileBasic.setTargetTransfrom(m_target.transform);
            if (playerWeapon)
            {
                projetcileBasic.setFollowTarget(true);
            }


            if (this.isActiveAndEnabled)
            {
                StartCoroutine(waitAndRecoil());
            }
        }
        else
        {
            m_audioScource.PlayOneShot(m_soundManager.getEmptyGunSound());
        }
    }