void Start() { BDArmorySettings.numberOfParticleEmitters++; rb = gameObject.AddComponent <Rigidbody>(); pEmitters = gameObject.GetComponentsInChildren <KSPParticleEmitter>(); foreach (var pe in pEmitters) { if (FlightGlobals.getStaticPressure(transform.position) == 0 && pe.useWorldSpace) { pe.emit = false; } else if (pe.useWorldSpace) { BDAGaplessParticleEmitter gpe = pe.gameObject.AddComponent <BDAGaplessParticleEmitter>(); gpe.rb = rb; gpe.emit = true; } } prevPosition = transform.position; currPosition = transform.position; startTime = Time.time; rb.mass = mass; rb.isKinematic = true; //rigidbody.velocity = startVelocity; if (!FlightGlobals.RefFrameIsRotating) { rb.useGravity = false; } audioSource = gameObject.AddComponent <AudioSource>(); audioSource.loop = true; audioSource.minDistance = 1; audioSource.maxDistance = 2000; audioSource.dopplerLevel = 0.5f; audioSource.volume = 0.9f * BDArmorySettings.BDARMORY_WEAPONS_VOLUME; audioSource.pitch = 1.4f; audioSource.clip = GameDatabase.Instance.GetAudioClip("BDArmory/Sounds/rocketLoop"); rb.useGravity = false; randThrustSeed = UnityEngine.Random.Range(0f, 100f); }
void Start() { BDArmorySettings.numberOfParticleEmitters++; rb = gameObject.AddComponent <Rigidbody>(); pEmitters = gameObject.GetComponentsInChildren <KSPParticleEmitter>(); foreach (var pe in pEmitters) { if (FlightGlobals.getStaticPressure(transform.position) == 0 && pe.useWorldSpace) { pe.emit = false; } else if (pe.useWorldSpace) { BDAGaplessParticleEmitter gpe = pe.gameObject.AddComponent <BDAGaplessParticleEmitter>(); gpe.rb = rb; gpe.emit = true; } else { EffectBehaviour.AddParticleEmitter(pe); } } prevPosition = transform.position; currPosition = transform.position; startTime = Time.time; rb.mass = mass; rb.isKinematic = true; //rigidbody.velocity = startVelocity; if (!FlightGlobals.RefFrameIsRotating) { rb.useGravity = false; } rb.useGravity = false; randThrustSeed = UnityEngine.Random.Range(0f, 100f); SetupAudio(); }
void OnEnable() { thermal = BDArmorySettings.FLARE_THERMAL * UnityEngine.Random.Range(0.45f, 1.25f); minThermal = thermal * 0.35f; if (gaplessEmitters == null || pEmitters == null) { gaplessEmitters = new List <BDAGaplessParticleEmitter>(); pEmitters = new List <KSPParticleEmitter>(); foreach (var pe in gameObject.GetComponentsInChildren <KSPParticleEmitter>()) { if (pe.useWorldSpace) { BDAGaplessParticleEmitter gpe = pe.gameObject.AddComponent <BDAGaplessParticleEmitter>(); gaplessEmitters.Add(gpe); gpe.emit = true; } else { EffectBehaviour.AddParticleEmitter(pe); pEmitters.Add(pe); pe.emit = true; } } } foreach (var emitter in gaplessEmitters) { emitter.emit = true; } foreach (var emitter in pEmitters) { emitter.emit = true; } BDArmorySettings.numberOfParticleEmitters++; if (lights == null) { lights = gameObject.GetComponentsInChildren <Light>(); } foreach (var lgt in lights) { lgt.enabled = true; } startTime = Time.time; //ksp force applier //gameObject.AddComponent<KSPForceApplier>().drag = 0.4f; BDArmorySettings.Flares.Add(this); if (sourceVessel != null) { relativePos = transform.position - sourceVessel.transform.position; } upDirection = VectorUtils.GetUpDirection(transform.position); velocity = startVelocity; }
void Awake() { pEmitter = gameObject.GetComponent <KSPParticleEmitter>(); EffectBehaviour.AddParticleEmitter(pEmitter); gpe = gameObject.GetComponent <BDAGaplessParticleEmitter>(); }
void Awake() { pEmitter = gameObject.GetComponent <KSPParticleEmitter>(); gpe = gameObject.GetComponent <BDAGaplessParticleEmitter>(); }
void Awake() { pEmitter = gameObject.GetComponent<KSPParticleEmitter>(); gpe = gameObject.GetComponent<BDAGaplessParticleEmitter>(); }
public override void OnStart (StartState state) { base.OnStart (state); ParseWeaponType(); ParseBulletDragType(); bulletBallisticCoefficient = bulletMass / bulletDragArea * 1000; //1000 to convert from tonnes to kilograms if(shortName == string.Empty) { shortName = part.partInfo.title; } foreach(var emitter in part.FindModelComponents<KSPParticleEmitter>()) { emitter.emit = false; } if(airDetonation) { var detRange = (UI_FloatRange)Fields["defaultDetonationRange"].uiControlEditor; detRange.maxValue = maxAirDetonationRange; } else { Fields["defaultDetonationRange"].guiActive = false; Fields["defaultDetonationRange"].guiActiveEditor = false; } if(HighLogic.LoadedSceneIsFlight) { if(eWeaponType != WeaponTypes.Laser) { if(bulletPool == null) { SetupBulletPool(); } if(shellPool == null) { SetupShellPool(); } } //setup transforms fireTransforms = part.FindModelTransforms(fireTransformName); shellEjectTransforms = part.FindModelTransforms(shellEjectTransformName); //setup emitters foreach(var pe in part.FindModelComponents<KSPParticleEmitter>()) { pe.maxSize *= part.rescaleFactor; pe.minSize *= part.rescaleFactor; pe.shape3D *= part.rescaleFactor; pe.shape2D *= part.rescaleFactor; pe.shape1D *= part.rescaleFactor; if(pe.useWorldSpace && !oneShotWorldParticles) { BDAGaplessParticleEmitter gpe = pe.gameObject.AddComponent<BDAGaplessParticleEmitter>(); gpe.part = part; gaplessEmitters.Add(gpe); } } //setup projectile colors projectileColorC = Misc.ParseColor255(projectileColor); startColorC = Misc.ParseColor255(startColor); //init and zero points targetPosition = Vector3.zero; pointingAtPosition = Vector3.zero; bulletPrediction = Vector3.zero; //setup audio SetupAudio(); //laser setup if(eWeaponType == WeaponTypes.Laser) { SetupLaserSpecifics(); } } else if(HighLogic.LoadedSceneIsEditor) { fireTransforms = part.FindModelTransforms(fireTransformName); } //turret setup foreach(var turr in part.FindModulesImplementing<ModuleTurret>()) { if(turr.turretID == turretID) { turret = turr; break; } } if(!turret) { Fields["onlyFireInRange"].guiActive = false; Fields["onlyFireInRange"].guiActiveEditor = false; } //setup animations if(hasDeployAnim) { deployState = Misc.SetUpSingleAnimation(deployAnimName, this.part); deployState.normalizedTime = 0; deployState.speed = 0; deployState.enabled = true; } if(hasFireAnimation) { fireState = Misc.SetUpSingleAnimation (fireAnimName, this.part); fireState.enabled = false; } BDArmorySettings.OnVolumeChange += UpdateVolume; }