internal void BulletHit(Collider hitObject, Vector3 bulletForward)
    {
        if (hitObject == null)
        {
            return;
        }

        BodyPart hitBodyPart = hitObject.GetComponent <BodyPart>();

        if (hitBodyPart != null && this.shooter != null)
        {
            bool isPlayerWeapon = this.shooter.CompareTag("Player");
            if (LogicUtils.CanBeHitByBullet(hitBodyPart, isPlayerWeapon))
            {
                hitBodyPart.TakeDamage(-this.damagePerBullet, this);
            }
        }
        else
        {
            BaseEntity hitEntity = hitObject.GetComponent <BaseEntity>();
            if (hitEntity)
            {
                bool isPlayerWeapon = this.shooter.CompareTag("Player");
                if (LogicUtils.CanBeHitByBullet(hitEntity, isPlayerWeapon))
                {
                    hitEntity.ChangeHealth(-this.damagePerBullet, this);
                }
            }
        }
    }