GameEntities.PlayerCharacter.WeaponTryFire C# (CSharp) Method

WeaponTryFire() private method

private WeaponTryFire ( bool alternative ) : void
alternative bool
return void
        void WeaponTryFire( bool alternative )
        {
            if( activeWeapon == null )
                return;

            //set real weapon fire direction
            {
                Vec3 seeDir = ( TurnToPosition - Position ).GetNormalize();
                Vec3 lookTo = TurnToPosition;

                for( int iter = 0; iter < 100; iter++ )
                {
                    activeWeapon.SetForceFireRotationLookTo( lookTo );
                    Vec3 fireDir = activeWeapon.GetFireRotation( alternative ).GetForward();
                    Degree angle = MathUtils.GetVectorsAngle( seeDir, fireDir );
                    if( angle < 80 )
                        break;
                    const float step = .3f;
                    lookTo += seeDir * step;
                }

                activeWeapon.SetForceFireRotationLookTo( lookTo );
            }

            bool fired = activeWeapon.TryFire( alternative );

            Gun activeGun = activeWeapon as Gun;
            if( activeGun != null )
            {
                if( fired )
                {
                    int index = GetWeaponIndex( activeWeapon.Type );
                    weapons[ index ].normalBulletCount = activeGun.NormalMode.BulletCount;
                    weapons[ index ].normalMagazineCount = activeGun.NormalMode.BulletMagazineCount;
                    weapons[ index ].alternativeBulletCount = activeGun.AlternativeMode.BulletCount;
                    weapons[ index ].alternativeMagazineCount =
                        activeGun.AlternativeMode.BulletMagazineCount;
                }
            }
        }