public void Initialize()
    {
        bulletPool = null;
        impactPool = null;
        onPutAway  = new UnityEvent();
        onTakeOut  = new TakeOutEvent();
        animator   = GetComponent <Animator>();
        listener   = GetComponentInChildren <GunHandlerListener>();
        if (listener)
        {
            listener.Initialize(gun);
        }

        if (gun.muzzleFlash == null)
        {
            return;
        }
        muzzleFlash = GameObject.Instantiate(gun.muzzleFlash, bulletSpawn.transform).transform;
        TransformHelper.ResetLocalTransform(muzzleFlash);
        muzzleFlash.gameObject.SetActive(false);
    }