public static ActionFX MakeActionFX(ref ActionRequestData data, ClientCharacterVisualization parent)
        {
            ActionLogic logic = GameDataSource.Instance.ActionDataByType[data.ActionTypeEnum].Logic;

            switch (logic)
            {
            case ActionLogic.Melee: return(new MeleeActionFX(ref data, parent));

            case ActionLogic.RangedFXTargeted: return(new FXProjectileTargetedActionFX(ref data, parent));

            case ActionLogic.Trample: return(new TrampleActionFX(ref data, parent));

            case ActionLogic.AoE: return(new AoeActionFX(ref data, parent));

            case ActionLogic.Stunned: return(new AnimationOnlyActionFX(ref data, parent));

            case ActionLogic.Target: return(new TargetActionFX(ref data, parent));

            case ActionLogic.ChargedShield:
            case ActionLogic.ChargedLaunchProjectile: return(new ChargedActionFX(ref data, parent));

            case ActionLogic.StealthMode: return(new StealthModeActionFX(ref data, parent));

            default: throw new System.NotImplementedException();
            }
        }
 public ActionFX(ref ActionRequestData data, ClientCharacterVisualization parent) : base(ref data)
 {
     m_Parent = parent;
 }