private void Fire()
    {
        //Debug.Log("Firing " + Name  );
        // instantiate projectile
        ProjectileController t = Instantiate(Projectile);

        t.transform.position = FirePoint.position;
        t.transform.rotation = RotationPoint.rotation;
        ProjectileController projectile = t.GetComponent <ProjectileController>();


        // at the moment no friendly fire, bullets will only hit enemies
        projectile.LayerMask = (transform.gameObject.layer == GameManager.PLAYER_LAYER ? 1 << GameManager.ENEMY_LAYER : 1 << GameManager.PLAYER_LAYER);
        projectile.Damage    = BaseDamage;
        projectile.Range     = GetRange();
        projectile.SetSpeed(ProjectileSpeed);


        MeshRenderer[] renderers = projectile.GetComponentsInChildren <MeshRenderer>();

        foreach (MeshRenderer renderer in renderers)
        {
            renderer.material.SetColor("_TintColor", _laserColor);
        }

        _timeSinceLastShot -= TimeBetweenShots;
        _shotCharged        = false;

        MuzzleFlareParticleSystem.Play();
    }