private GameObject GetEmbedBulletHelper(
            MAction a,
            GameObject bullet,
            Callback callback,
            SBulletThenEmbedData data)
        {
            var raycast = bullet.AddComponent <SBulletThenEmbed>();

            raycast.Action = a;
            raycast.Init(data);
            raycast.AddCallback(callback);
            return(bullet);
        }
        private GameObject GetEmbedBullet(MHit hit, Callback callback, GameObject bullet, float speed)
        {
            var renderer = bullet.GetComponent <SpriteRenderer>();

            renderer.sortingOrder = renderer.sortingOrder + 1;
            var a     = hit.Data.Ability.Data.ParentAction;
            var proxy = a.Data.Source.Proxy;
            var data  = new SBulletThenEmbedData();

            data.EmbedSprite = this.GetBulletEmbedSprite(a);
            data.Epsilon     = CombatGUIParams.DEFAULT_EPSILON;
            data.Handle      = bullet;
            data.Speed       = speed;
            var pos = hit.Data.Target.Handle.transform.position;

            if (hit.Data.Source.GameHandle.transform.position.x > pos.x)
            {
                pos.x += CombatGUIParams.X_CORRECTION;
            }
            else
            {
                pos.x -= CombatGUIParams.X_CORRECTION;
            }
            data.Target   = pos;
            data.Offset   = CombatGUIParams.BULLET_OFFSET;
            data.Rotation = CombatGUIParams.MAX_ROTATION;
            if (hit.Data.Target.Current != null &&
                hit.Data.Target.Current.GetType().Equals(typeof(CChar)))
            {
                data.TargetChar = hit.Data.Target.Current as CChar;
            }
            data.TargetableObjects = this.GetEmbedBulletTargets(hit);
            if (a.Data.LWeapon && proxy.GetLWeapon() != null && proxy.GetLWeapon().Embed)
            {
                return(this.GetEmbedBulletHelper(a, bullet, callback, data));
            }
            else if (proxy.GetRWeapon() != null && proxy.GetRWeapon().Embed)
            {
                return(this.GetEmbedBulletHelper(a, bullet, callback, data));
            }
            return(null);
        }