void Detonate(Vector3 pos) { BDArmorySetup.numberOfParticleEmitters--; ExplosionFx.CreateExplosion(pos, BlastPhysicsUtils.CalculateExplosiveMass(blastRadius), explModelPath, explSoundPath, true); IEnumerator <KSPParticleEmitter> emitter = pEmitters.AsEnumerable().GetEnumerator(); while (emitter.MoveNext()) { if (emitter.Current == null) { continue; } if (!emitter.Current.useWorldSpace) { continue; } emitter.Current.gameObject.AddComponent <BDAParticleSelfDestruct>(); emitter.Current.transform.parent = null; } emitter.Dispose(); Destroy(gameObject); //destroy rocket on collision }
public void Start() { // extension for feature_engagementenvelope InitializeEngagementRange(0, maxTargetingRange); SetupAudio(); if (HighLogic.LoadedSceneIsFlight) { part.force_activate(); aimerTexture = BDArmorySetup.Instance.greenPointCircleTexture; // GameDatabase.Instance.GetTexture("BDArmory/Textures/grayCircle", false); MakeRocketArray(); UpdateRocketScales(); if (shortName == string.Empty) { shortName = part.partInfo.title; } UpdateAudio(); BDArmorySetup.OnVolumeChange += UpdateAudio; gauge = (BDStagingAreaGauge)part.AddModule("BDStagingAreaGauge"); gauge.AmmoName = rocketType; gauge.AudioSource = sfAudioSource; } if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor) { List <ModuleTurret> .Enumerator turr = part.FindModulesImplementing <ModuleTurret>().GetEnumerator(); while (turr.MoveNext()) { if (turr.Current == null) { continue; } if (turr.Current.turretID != turretID) { continue; } turret = turr.Current; targetInTurretView = false; break; } turr.Dispose(); if (turret) { Events["GuiFire"].guiActive = false; Events["Jettison"].guiActive = false; Actions["AGFire"].active = false; if (HighLogic.LoadedSceneIsFlight) { Events["ToggleTurret"].guiActive = true; } } if (!string.IsNullOrEmpty(deployAnimationName)) { deployAnimState = Misc.Misc.SetUpSingleAnimation(deployAnimationName, part); hasDeployAnimation = true; readyToFire = false; } } blastForce = BlastPhysicsUtils.CalculateExplosiveMass(blastRadius); }