예제 #1
0
        private void InitSmokeEmitter(Vector4 color)
        {
            attachments.Clear();

            if (!smokeEnabled)
            {
                return;
            }

            SharedSmokeSource smokeSource = new SharedSmokeSource(InGame.inGame.ParticleSystemManager);

            smokeSource.Position = Movement.Position;
            smokeSource.ResetPreviousPosition();
            smokeSource.LinearEmission = true;
            smokeSource.Active         = true;
            smokeSource.Emitting       = false;
            smokeSource.Color          = color;
            smokeSource.PositionJitter = 0.03f;
            smokeSource.StartRadius    = 0.1f;
            smokeSource.EndRadius      = 1.0f;
            smokeSource.StartAlpha     = 0.4f;
            smokeSource.MinLifetime    = .5f;
            smokeSource.MaxLifetime    = 1.5f;
            smokeSource.InitFlash(2.4f, 0.5f);
            smokeSource.MaxRotationRate = 3.0f;
            smokeSource.EmissionRate    = 5.0f;
            smokeSource.Velocity        = Vector3.Zero;
            smokeSource.Acceleration    = new Vector3(0.0f, 0.0f, 0.2f); // Have smoke float up a bit.
            smokeSource.Usage           = BaseEmitter.Use.Regular;

            AddEmitter(smokeSource, Vector3.Zero);

            // And the optional heat wash versions
            if (Fx.DistortionManager.PartyEnabled)
            {
                smokeSource          = new SharedSmokeSource(InGame.inGame.ParticleSystemManager);
                smokeSource.Position = Movement.Position;
                smokeSource.ResetPreviousPosition();
                smokeSource.LinearEmission  = true;
                smokeSource.Active          = true;
                smokeSource.Emitting        = false;
                smokeSource.Color           = new Vector4(0.85f, 0.85f, 0.95f, 1.0f);
                smokeSource.PositionJitter  = 0.03f;
                smokeSource.StartRadius     = 0.2f;
                smokeSource.EndRadius       = 1.0f;
                smokeSource.StartAlpha      = 0.9f;
                smokeSource.MinLifetime     = 0.25f;
                smokeSource.MaxLifetime     = 0.5f;
                smokeSource.MaxRotationRate = 3.0f;
                smokeSource.EmissionRate    = 2.0f;
                smokeSource.Velocity        = Vector3.Zero;
                smokeSource.Acceleration    = new Vector3(0.0f, 0.0f, 0.2f); // Have smoke float up a bit.
                smokeSource.Usage           = BaseEmitter.Use.Distort;

                AddEmitter(smokeSource, new Vector3(-1.0f, 0.0f, 0.0f));
            }
        }   // end of CruiseMissile InitSmokeEmitter()
예제 #2
0
        }   // end of CruiseMissile InitSmokeEmitter()

        public override void SetColor(Classification.Colors color)
        {
            // Set the body color.
            base.SetColor(color);

            // Also change the smoke color.
            if (smokeEnabled)
            {
                OffsetEmitter     oe  = attachments[0] as OffsetEmitter;
                SharedSmokeSource sss = oe.Emitter as SharedSmokeSource;
                sss.Color = Classification.ColorVector4(color);
            }
        }   // end of SetColor()