public override void Fire(WeaponSpawner spawner, WeaponFiringParameters firingParameters)
 {
     this.spawner = spawner;
     this.firingParameters = firingParameters;
     spawner.SpawnMuzzleFlash(firingParameters.hardpointTransform);
     transform.position = transform.position + (transform.forward * spawnOffset);
     float accuracy = ((spreadFactor + (spreadFactor * (1 - firingParameters.accuracy))) / spreadFactor) * spreadFactor;
     transform.rotation *= Quaternion.Euler(UnityEngine.Random.insideUnitSphere * accuracy);
     rigidbody.velocity = transform.forward * speed;
     rigidbody.angularVelocity = Vector3.zero;
     origin = transform.position;
     collider.enabled = false;
     elapsedTime = 0f;
 }
 public override void Fire(WeaponSpawner spawner, WeaponFiringParameters firingParameters)
 {
     this.spawner = spawner;
     this.firingParameters = firingParameters;
     this.distanceTravelled = 0f;
     transform.position = firingParameters.hardpointTransform.position;
     transform.rotation = firingParameters.hardpointTransform.rotation;
     if (spreadFactor != 0) {
         float accuracy = ((spreadFactor + (spreadFactor * (1 - firingParameters.accuracy))) / spreadFactor) * spreadFactor;
         transform.rotation *= Quaternion.Euler(UnityEngine.Random.insideUnitSphere * accuracy);
     }
     forward = transform.forward;
     spawner.SpawnMuzzleFlash(firingParameters.hardpointTransform);
     transform.position = transform.position + (forward * spawnOffset);
 }