public override IEnumerator Stop(float delay, ParticleSystemStopAction stopAction)
    {
        yield return(new WaitForSeconds(delay));

        switch (stopAction)
        {
        case ParticleSystemStopAction.Destroy:
            Destroy(this.gameObject);
            break;

        case ParticleSystemStopAction.Disable:

            break;
        }
    }
 protected override void ReadFromImpl(object obj)
 {
     base.ReadFromImpl(obj);
     ParticleSystem.MainModule uo = (ParticleSystem.MainModule)obj;
     duration                  = uo.duration;
     loop                      = uo.loop;
     prewarm                   = uo.prewarm;
     startDelay                = uo.startDelay;
     startDelayMultiplier      = uo.startDelayMultiplier;
     startLifetime             = uo.startLifetime;
     startLifetimeMultiplier   = uo.startLifetimeMultiplier;
     startSpeed                = uo.startSpeed;
     startSpeedMultiplier      = uo.startSpeedMultiplier;
     startSize3D               = uo.startSize3D;
     startSize                 = uo.startSize;
     startSizeMultiplier       = uo.startSizeMultiplier;
     startSizeX                = uo.startSizeX;
     startSizeXMultiplier      = uo.startSizeXMultiplier;
     startSizeY                = uo.startSizeY;
     startSizeYMultiplier      = uo.startSizeYMultiplier;
     startSizeZ                = uo.startSizeZ;
     startSizeZMultiplier      = uo.startSizeZMultiplier;
     startRotation3D           = uo.startRotation3D;
     startRotation             = uo.startRotation;
     startRotationMultiplier   = uo.startRotationMultiplier;
     startRotationX            = uo.startRotationX;
     startRotationXMultiplier  = uo.startRotationXMultiplier;
     startRotationY            = uo.startRotationY;
     startRotationYMultiplier  = uo.startRotationYMultiplier;
     startRotationZ            = uo.startRotationZ;
     startRotationZMultiplier  = uo.startRotationZMultiplier;
     flipRotation              = uo.flipRotation;
     startColor                = uo.startColor;
     gravityModifier           = uo.gravityModifier;
     gravityModifierMultiplier = uo.gravityModifierMultiplier;
     simulationSpace           = uo.simulationSpace;
     customSimulationSpace     = ToID(uo.customSimulationSpace);
     simulationSpeed           = uo.simulationSpeed;
     useUnscaledTime           = uo.useUnscaledTime;
     scalingMode               = uo.scalingMode;
     playOnAwake               = uo.playOnAwake;
     maxParticles              = uo.maxParticles;
     emitterVelocityMode       = uo.emitterVelocityMode;
     stopAction                = uo.stopAction;
     cullingMode               = uo.cullingMode;
     ringBufferMode            = uo.ringBufferMode;
     ringBufferLoopRange       = uo.ringBufferLoopRange;
 }
    public override IEnumerator Stop(float delay, ParticleSystemStopAction stopAction)
    {
        yield return(new WaitForSeconds(delay));

        GetComponent <ParticleSystem>().Stop(true, stopBehavior);
    }
 public abstract IEnumerator Stop(float delay, ParticleSystemStopAction stopAction);