public void ExactLaunch(ThingDef effectMote, int moteFrequencyTicks, bool shouldSpin, List <Vector3> travelPath, Thing launcher, Vector3 origin, LocalTargetInfo targ, Thing flyingThing, int flyingSpeed, float _impactRadius, NaniteDispersal dispersal, NaniteActions action)
 {
     this.naniteAction    = action;
     this.dispersalMethod = dispersal;
     this.moteFrequency   = moteFrequencyTicks;
     this.moteDef         = effectMote;
     this.impactRadius    = _impactRadius;
     this.spinning        = shouldSpin;
     this.speed           = flyingSpeed;
     this.curvePoints     = travelPath;
     this.curveVariance   = 1;
     this.Launch(launcher, origin, targ, flyingThing, null);
 }
 public void AdvancedLaunch(Thing launcher, ThingDef effectMote, int moteFrequencyTicks, float curveAmount, bool shouldSpin, Vector3 origin, LocalTargetInfo targ, Thing flyingThing, int flyingSpeed, bool isExplosion, int _impactDamage, float _impactRadius, NaniteDispersal dispersal, NaniteActions action, DamageDef damageType, DamageInfo?newDamageInfo = null)
 {
     this.naniteAction     = action;
     this.dispersalMethod  = dispersal;
     this.explosionDamage  = _impactDamage;
     this.isExplosive      = isExplosion;
     this.impactRadius     = _impactRadius;
     this.impactDamageType = damageType;
     this.moteFrequency    = moteFrequencyTicks;
     this.moteDef          = effectMote;
     this.curveVariance    = curveAmount;
     this.spinning         = shouldSpin;
     this.speed            = flyingSpeed;
     this.curvePoints      = new List <Vector3>();
     this.curvePoints.Clear();
     this.Launch(launcher, origin, targ, flyingThing, newDamageInfo);
 }