Пример #1
0
        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
        }
Пример #2
0
        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);
        }