Example #1
0
        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);
        }
Example #2
0
        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();
        }
Example #3
0
        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;
        }
Example #4
0
 void Awake()
 {
     pEmitter = gameObject.GetComponent <KSPParticleEmitter>();
     EffectBehaviour.AddParticleEmitter(pEmitter);
     gpe = gameObject.GetComponent <BDAGaplessParticleEmitter>();
 }
Example #5
0
 void Awake()
 {
     pEmitter = gameObject.GetComponent <KSPParticleEmitter>();
     gpe      = gameObject.GetComponent <BDAGaplessParticleEmitter>();
 }
 void Awake()
 {
     pEmitter = gameObject.GetComponent<KSPParticleEmitter>();
     gpe = gameObject.GetComponent<BDAGaplessParticleEmitter>();
 }
Example #7
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;
		}