protected override void ReadFromImpl(object obj)
 {
     base.ReadFromImpl(obj);
     ParticleSystem.TrailModule uo = (ParticleSystem.TrailModule)obj;
     enabled                  = uo.enabled;
     mode                     = uo.mode;
     ratio                    = uo.ratio;
     lifetime                 = uo.lifetime;
     lifetimeMultiplier       = uo.lifetimeMultiplier;
     minVertexDistance        = uo.minVertexDistance;
     textureMode              = uo.textureMode;
     worldSpace               = uo.worldSpace;
     dieWithParticles         = uo.dieWithParticles;
     sizeAffectsWidth         = uo.sizeAffectsWidth;
     sizeAffectsLifetime      = uo.sizeAffectsLifetime;
     inheritParticleColor     = uo.inheritParticleColor;
     colorOverLifetime        = uo.colorOverLifetime;
     widthOverTrail           = uo.widthOverTrail;
     widthOverTrailMultiplier = uo.widthOverTrailMultiplier;
     colorOverTrail           = uo.colorOverTrail;
     generateLightingData     = uo.generateLightingData;
     ribbonCount              = uo.ribbonCount;
     shadowBias               = uo.shadowBias;
     splitSubEmitterRibbons   = uo.splitSubEmitterRibbons;
     attachRibbonsToTransform = uo.attachRibbonsToTransform;
 }
 public static void ParticleTrailSettings(this ParticleSystem PS,
                                          bool enabled = true,
                                          ParticleSystemTrailTextureMode TrailMode = ParticleSystemTrailTextureMode.Stretch,
                                          float TailWidth       = 10,
                                          bool SizeAffectsWidth = false,
                                          bool DieWithParticle  = false)
 {
     ParticleSystem.TrailModule trailModule = PS.trails;
     // Trail Settings
     trailModule.enabled          = enabled;
     trailModule.textureMode      = TrailMode;
     trailModule.widthOverTrail   = TailWidth;
     trailModule.sizeAffectsWidth = SizeAffectsWidth;
     trailModule.dieWithParticles = DieWithParticle;
 }