internal void FirePhaser(Target t) { LaserDrawer BD1 = t.LaserDrawer1; LineRenderer LR1 = t.LineRenderer1; LaserDrawer BD2 = t.LaserDrawer2; LineRenderer LR2 = t.LineRenderer2; LaserDrawer BD3 = t.LaserDrawer3; LineRenderer LR3 = t.LineRenderer3; if (!t.PhaserSound.audio.enabled) { t.soundPitch = Mathf.Lerp(0.09f, 1f, t.PhaserYield / 500); t.PhaserSound.audio.pitch = t.soundPitch; } t.ship.GoOffRails(); Vessel Parent = FlightGlobals.ActiveVessel; Vector3 parentPosition_current = Parent.transform.localPosition; Vector3 childPosition_current = t.ship.transform.localPosition; float width = 0; // RENDER THE Phaser BEAM Vector3 PhaserBeamVector = parentPosition_current - childPosition_current; LR1 = BD1.render(PhaserBeamVector, Color.red); width = 1F; LR1.SetWidth(0.2F, width); LR1.SetPosition(0, parentPosition_current); LR1.SetPosition(1, childPosition_current); LR2 = BD2.render(PhaserBeamVector, Color.magenta); width = 0.3F; LR2.SetWidth(0.1F, width); LR2.SetPosition(0, parentPosition_current); LR2.SetPosition(1, childPosition_current); /* * Color fc = new Color(0.469F, 0.484F, 0.371F, 0.8F); * LR3 = BD3.render(PhaserBeamVector, fc,7); * LR3 = BD3.render(PhaserBeamVector, Color.magenta); * LR3.SetWidth(0.1F, 0.4F); * LR3.SetPosition(0, parentPosition_current); * for (int i = 1; i <= 5; i++) * { * var pos = Vector3.Lerp(parentPosition_current, childPosition_current, i / 5.0f); * * pos.x += rnd.Next(-4, 4)/10; * pos.y += rnd.Next(-4, 4)/10; * LR3.SetPosition(i, pos); * } * LR3.SetPosition(6, childPosition_current); * // RENDER THE Phaser BEAM */ float dist = Vector3.Distance(FlightGlobals.ActiveVessel.findWorldCenterOfMass(), t.ship.findWorldCenterOfMass()); foreach (var vesselPart in t.ship.parts.Where(p => p.rigidbody != null)) { vesselPart.temperature += t.PhaserYield * 2000 / dist * TimeWarp.deltaTime; } }
private void RemoveTarget(Target t) { t.PhaserSound.audio.Stop(); LaserDrawer BD1 = t.LaserDrawer1; LineRenderer LR1 = t.LineRenderer1; LaserDrawer BD2 = t.LaserDrawer2; LineRenderer LR2 = t.LineRenderer2; LaserDrawer BD3 = t.LaserDrawer3; LineRenderer LR3 = t.LineRenderer3; LR1 = BD1.render(Vector3.zero, Color.blue); LR1.SetWidth(0, 0); LR1.SetPosition(0, Vector3.zero); LR1.SetPosition(1, Vector3.zero); LR2 = BD2.render(Vector3.zero, Color.magenta); LR2.SetWidth(0, 0); LR2.SetPosition(0, Vector3.zero); LR2.SetPosition(1, Vector3.zero); Color fc = new Color(0.469F, 0.484F, 0.371F, 0.8F); LR3 = BD3.render(Vector3.zero, fc); LR3.SetWidth(0, 0); LR3.SetPosition(0, Vector3.zero); LR3.SetPosition(1, Vector3.zero); this.TargetList.Remove(t); this.TargetIDList.Remove(t.targetID); }
private void CreateTarget(Vessel v) { //UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget 1 "); Vessel Parent = FlightGlobals.ActiveVessel; Vector3d parentPosition_current = Parent.transform.localPosition; Vector3d childPosition_current = v.transform.localPosition; float distance = Vector3.Distance(parentPosition_current, childPosition_current); Vector3 newVector = parentPosition_current - childPosition_current; //UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget 2 "); Target nT = new Target(); LaserDrawer LD1 = new LaserDrawer(); LineRenderer LR1 = new LineRenderer(); LaserDrawer LD2 = new LaserDrawer(); LineRenderer LR2 = new LineRenderer(); LaserDrawer LD3 = new LaserDrawer(); LineRenderer LR3 = new LineRenderer(); //UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget 3 "); nT.targetID = v.id.ToString(); nT.ship = v; nT.force = 0.5F; nT.distance = distance; nT.ParentPosition = parentPosition_current; nT.ShipPosition = childPosition_current; nT.Vector = newVector; nT.PhotonTorpedo = new PhotonTorpedo(); nT.LaserDrawer1 = LD1; nT.LineRenderer1 = LR1; nT.LaserDrawer2 = LD2; nT.LineRenderer2 = LR2; nT.LaserDrawer3 = LD3; nT.LineRenderer3 = LR3; nT.PhaserYield = 0.5F; nT.TorpedoYield = 0.5F; UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget 4 "); this.TargetList.Add(nT); this.TargetIDList.Add(nT.targetID); UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget 5 "); UnityEngine.Debug.Log("ImpulseDrive WeaponSystems: CreateTarget PhaserSound "); nT.PhaserSound = new FXGroup("PhaserSound"); GameObject audioObj = new GameObject(); nT.audioObj = audioObj; nT.audioObj.transform.position = FlightGlobals.ActiveVessel.transform.position; nT.audioObj.transform.parent = FlightGlobals.ActiveVessel.transform; // add to parent nT.PhaserSound.audio = audioObj.AddComponent <AudioSource>(); nT.PhaserSound.audio.dopplerLevel = 0f; nT.PhaserSound.audio.Stop(); nT.PhaserSound.audio.clip = GameDatabase.Instance.GetAudioClip(PhaserSoundFile); nT.PhaserSound.audio.loop = true; // Seek to a random position in the sound file so we don't have // harmonic effects when burning at multiple RCS nozzles. nT.PhaserSound.audio.time = UnityEngine.Random.Range(0, nT.PhaserSound.audio.clip.length); nT.PhaserSound.audio.Play(); nT.PhaserSound.audio.enabled = false; nT.soundVolume = GameSettings.SHIP_VOLUME * PhaserSoundVolume; nT.PhaserSound.audio.volume = nT.soundVolume; }