void OnEnable()
        {
            if (!EffectParams.IsNull())
            {
                effectObj = EffectParams.Create(transform);
            }

            effectObj.PlayAndDestroy();
        }
        private void Explode()
        {
            if (!factory.ExplodeEffect.IsNull())
            {
                explodeEffObj = factory.ExplodeEffect.Create(xform.position);
                explodeEffObj.PlayAndDestroy();
            }

            if (!factory.GroundEffect.IsNull())
            {
                Vector3 groundPoint = ExplosionParamSettings.Params.Agent.GetGroundEffectPosition(xform.position);

                if (xform.position.y - groundPoint.y <= factory.MaxHeightToShowGroundEffect)
                {
                    groundEffObj = factory.GroundEffect.Create(groundPoint);
                    groundEffObj.PlayAndDestroy();
                }
            }

            if (factory.EnergyOutput != null)
            {
                factory.EnergyOutput.Send(Sender, this, xform.position, OnOutputComplete);
            }
        }