Example #1
0
        public override void OnStart(PartModule.StartState state)
        {
            if (HighLogic.LoadedSceneIsFlight)
            {
                part.force_activate();

                aimerTexture = BDArmorySettings.Instance.greenPointCircleTexture;                // GameDatabase.Instance.GetTexture("BDArmory/Textures/grayCircle", false);

                sfAudioSource              = gameObject.AddComponent <AudioSource>();
                sfAudioSource.minDistance  = 1;
                sfAudioSource.maxDistance  = 2000;
                sfAudioSource.dopplerLevel = 0;
                sfAudioSource.priority     = 230;
                sfAudioSource.spatialBlend = 1;

                MakeRocketArray();
                UpdateRocketScales();

                if (shortName == string.Empty)
                {
                    shortName = part.partInfo.title;
                }

                UpdateAudio();
                BDArmorySettings.OnVolumeChange += UpdateAudio;
            }

            if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
            {
                foreach (var turr in part.FindModulesImplementing <ModuleTurret>())
                {
                    if (turr.turretID == turretID)
                    {
                        turret             = turr;
                        targetInTurretView = false;
                        break;
                    }
                }

                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.SetUpSingleAnimation(deployAnimationName, part);
                    hasDeployAnimation = true;

                    readyToFire = false;
                }
            }
        }
Example #2
0
        public override void OnStart(PartModule.StartState state)
        {
            // extension for feature_engagementenvelope
            InitializeEngagementRange(0, maxTargetingRange);

            if (HighLogic.LoadedSceneIsFlight)
            {
                part.force_activate();

                aimerTexture = BDArmorySettings.Instance.greenPointCircleTexture;
                // GameDatabase.Instance.GetTexture("BDArmory/Textures/grayCircle", false);


                MakeRocketArray();
                UpdateRocketScales();

                if (shortName == string.Empty)
                {
                    shortName = part.partInfo.title;
                }

                UpdateAudio();
                BDArmorySettings.OnVolumeChange += UpdateAudio;
            }

            if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneIsEditor)
            {
                foreach (var turr in part.FindModulesImplementing <ModuleTurret>())
                {
                    if (turr.turretID == turretID)
                    {
                        turret             = turr;
                        targetInTurretView = false;
                        break;
                    }
                }

                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.SetUpSingleAnimation(deployAnimationName, part);
                    hasDeployAnimation = true;

                    readyToFire = false;
                }
            }
            SetupAudio();
        }
Example #3
0
        public override void OnStart(StartState state)
        {
            base.OnStart(state);

            part.force_activate();

            //setup anim
            if (!string.IsNullOrEmpty(deployAnimationName))
            {
                hasDeployAnimation = true;
                deployAnimState    = Misc.SetUpSingleAnimation(deployAnimationName, part);
                if (state == StartState.Editor)
                {
                    Events["EditorToggleAnimation"].guiActiveEditor = true;
                }
            }

            if (HighLogic.LoadedSceneIsFlight)
            {
                foreach (var tur in part.FindModulesImplementing <ModuleTurret>())
                {
                    if (tur.turretID == turretID)
                    {
                        turret = tur;
                        break;
                    }
                }

                attachedRadar = part.FindModuleImplementing <ModuleRadar>();
                if (attachedRadar)
                {
                    hasAttachedRadar = true;
                }

                finalTransform = part.FindModelTransform(finalTransformName);

                UpdateMissileChildren();

                if (!autoReturn)
                {
                    Events["ReturnTurret"].guiActive = true;
                }
            }
        }
Example #4
0
		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;
		}