Example #1
0
		public static ParticleSystem ImpactEffect()
		{
			var impactEffect = new ParticleSystem();
			var impactEmitterData = new ParticleEmitterData();
			impactEmitterData.ParticleMaterial = GetFallbackMaterial();
			impactEffect.AttachEmitter(new ParticleEmitter(impactEmitterData, Vector3D.Zero));
			return impactEffect;
		}
Example #2
0
		public static ParticleSystem CreepTransformationEffect()
		{
			var transformationEffect = new ParticleSystem();
			var transformationEmitterData = new ParticleEmitterData();
			transformationEmitterData.ParticleMaterial = GetFallbackMaterial();
			transformationEffect.AttachEmitter(new ParticleEmitter(transformationEmitterData,
				Vector3D.Zero));
			return transformationEffect;
		}
Example #3
0
		public static ParticleSystem CreepDeathEffect()
		{
			var deathEffect = new ParticleSystem();
			var emitterData = new ParticleEmitterData();
			emitterData.ParticleMaterial = GetFallbackMaterial();
			emitterData.Size = new RangeGraph<Size>(new Size(1.0f), new Size(1.0f));
			emitterData.LifeTime = 1.0f;
			emitterData.MaximumNumberOfParticles = 1;
			deathEffect.AttachEmitter(new ParticleEmitter(emitterData, Vector3D.Zero));
			return deathEffect;
		}
		private void SetInitialDefaults()
		{
			TemplateListVisibility = Visibility.Hidden;
			SavedEmitterSelectionVisibility = Visibility.Hidden;
			currentEmitterInEffect = 0;
			ParticleSystemName = "MyParticleSystem";
			OverwriteOnSave = true;
			if (LoadEffect())
				return; //ncrunch: no coverage
			currentEffect = new ParticleSystem();
			AddEmitterToSystem();
			CenterViewOnCurrentEffect();
		}
Example #5
0
		public static ParticleSystem ProjectileEffect()
		{
			var projectileEffect = new ParticleSystem();
			var projectileEmitterData = new ParticleEmitterData();
			projectileEmitterData.ParticleMaterial = GetFallbackMaterial();
			projectileEmitterData.SpawnInterval = 0.01f;
			projectileEmitterData.LifeTime = 0;
			projectileEmitterData.MaximumNumberOfParticles = 1;
			projectileEmitterData.Color = new RangeGraph<Color>(Color.Red, Color.Red);
			projectileEmitterData.Size = new RangeGraph<Size>(new Size(0.2f), new Size(0.2f));
			projectileEffect.AttachEmitter(new ParticleEmitter(projectileEmitterData, Vector3D.Zero));
			return projectileEffect;
		}
Example #6
0
		public static ParticleSystem AttackEffect()
		{
			var attackEffect = new ParticleSystem();
			var attackEmitterData = new ParticleEmitterData();
			attackEmitterData.ParticleMaterial = GetFallbackMaterial();
			attackEmitterData.StartVelocity = new RangeGraph<Vector3D>(-Vector3D.UnitY);
			attackEmitterData.SpawnInterval = 0;
			attackEmitterData.MaximumNumberOfParticles = 16;
			attackEmitterData.LifeTime = 0.5f;
			attackEmitterData.Size = new RangeGraph<Size>(new Size(0.2f), new Size(0.4f));
			attackEmitterData.Color = new RangeGraph<Color>(Color.Red, Color.TransparentBlack);
			attackEffect.AttachEmitter(new ParticleEmitter(attackEmitterData, Vector3D.Zero));
			return attackEffect;
		}
Example #7
0
		public static ParticleSystem GetCreepDeathEffect()
		{
			if (deathEffect != null)
				return deathEffect;
			try
			{
				var effectData = ContentLoader.Load<ParticleSystemData>("Creep" + EffectType.Death);
				return deathEffect = new ParticleSystem(effectData);
			}
			catch //ncrunch: no coverage start
			{
				return deathEffect = FallbackEffects.CreepDeathEffect();
			} //ncrunch: no coverage end
		}
Example #8
0
		public EnemyPlane(Vector2D initialPosition)
			: base(ContentLoader.Load<Material>("EnemyPlaneMaterial"), initialPosition)
		{
			Hitpoints = 5;
			verticalDecelerationFactor = 3.0f;
			verticalAccelerationFactor = 1.5f;
			RenderLayer = (int)DefRenderLayer.Player;
			elapsedSinceLastMissile = missileCadenceInverse - 0.2f;
			// ParticleSystemData can very well be loaded by a ContentLoader, unused for simplicity in M5
			//machineGunAndLauncher =
			//	new ParticleSystem(ContentLoader.Load<ParticleSystemData>("MachineGunAndLauncherEnemy"));
			machineGunAndLauncher = new ParticleSystem();

			var machineGunData = new ParticleEmitterData
			{
				ParticleMaterial = ContentLoader.Load<Material>("BulletMaterial"),
				Size = new RangeGraph<Size>(new Size(0.01f, 0.005f), new Size(0.01f, 0.005f)),
				LifeTime = 3.0f,
				StartPosition =
					new RangeGraph<Vector3D>(new Vector3D(0.0f, -0.01f, 0.0f),
						new Vector3D(0.0f, -0.01f, 0.0f)),
				StartRotation =
					new RangeGraph<ValueRange>(new ValueRange(180.0f, 180.0f), new ValueRange(180.0f, 180.0f)),
				StartVelocity = new RangeGraph<Vector3D>(new Vector3D(-0.8f, 0.0f, 0.0f), Vector3D.Zero),
				Acceleration =
					new RangeGraph<Vector3D>(new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f)),
				SpawnInterval = 0,
				MaximumNumberOfParticles = 64
			};
			var launcherData = new ParticleEmitterData
			{
				ParticleMaterial = ContentLoader.Load<Material>("RocketMaterial"),
				Size = new RangeGraph<Size>(new Size(0.03f, 0.007f), new Size(0.03f, 0.007f)),
				LifeTime = 3.0f,
				StartPosition = new RangeGraph<Vector3D>(new Vector3D(0.0f, 0.01f, 0.0f), new Vector3D(0.0f, 0.01f, 0.0f)),
				StartRotation =
					new RangeGraph<ValueRange>(new ValueRange(180.0f, 180.0f), new ValueRange(180.0f, 180.0f)),
				StartVelocity = new RangeGraph<Vector3D>(new Vector3D(-0.5f, 0.0f, 0.0f), Vector3D.Zero),
				Acceleration = new RangeGraph<Vector3D>(new Vector3D[] { new Vector3D(0.0f, -0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, -0.1f, 0.0f) }),
				SpawnInterval = 0,
				MaximumNumberOfParticles = 8
			};

			machineGunAndLauncher.AttachEmitter(new ParticleEmitter(machineGunData, Vector3D.Zero));
			machineGunAndLauncher.AttachEmitter(new ParticleEmitter(launcherData, Vector3D.Zero));

			machineGunAndLauncher.Position = new Vector3D(initialPosition);
			Add(new Velocity2D(new Vector2D(-0.3f, 0), MaximumSpeed));
			Start<EnemyHandler>();
		}
Example #9
0
		public static ParticleSystem GetHitEffect(TowerType attackType)
		{
			if (HitEffects[(int)attackType] != null)
				return HitEffects[(int)attackType];
			try
			{
				var effectData = ContentLoader.Load<ParticleSystemData>(attackType.ToString() + 
					EffectType.Hit);
				return HitEffects[(int)attackType] = new ParticleSystem(effectData);
			}
			catch //ncrunch: no coverage start
			{
				return HitEffects[(int)attackType] = FallbackEffects.AttackEffect();
			} //ncrunch: no coverage end
		}
Example #10
0
        /// <summary>
        /// Special behavior of the player's plane for use in the side-scrolling shoot'em'up.
        /// Can be controlled in its vertical position, fire shots and make the environment move.
        /// (It is so mighty that, when it flies faster, in truth the world turns faster!)
        /// </summary>
        public PlayerPlane(Vector2D initialPosition)
            : base(ContentLoader.Load<Material>("PlayerPlaneMaterial"), initialPosition)
        {
            Hitpoints = 3;
            verticalDecelerationFactor = 3.0f;
            verticalAccelerationFactor = 1.5f;
            mgCadenceInverse = PlayerMgCadenceInverse;
            missileCadenceInverse = PlayerMissileCadenceInverse;
            RenderLayer = (int)DefRenderLayer.Player;
            // ParticleSystemData can very well be loaded by a ContentLoader, unused for simplicity in M5
            //machineGunAndLauncher =
            //	new ParticleSystem(ContentLoader.Load<ParticleSystemData>("MachineGunAndLauncher"));
            machineGunAndLauncher = new ParticleSystem();
            var machineGunData = new ParticleEmitterData
            {
                ParticleMaterial = ContentLoader.Load<Material>("BulletMaterial"),
                Size = new RangeGraph<Size>(new Size(0.01f, 0.005f), new Size(0.01f, 0.005f)),
                LifeTime = 3.0f,
                StartPosition =
                    new RangeGraph<Vector3D>(new Vector3D(0.0f, -0.01f, 0.0f),
                        new Vector3D(0.0f, -0.01f, 0.0f)),
                StartVelocity = new RangeGraph<Vector3D>(new Vector3D(0.8f, 0.0f, 0.0f), Vector3D.Zero),
                Acceleration =
                    new RangeGraph<Vector3D>(new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f)),
                SpawnInterval = 0,
                MaximumNumberOfParticles = 64
            };
            var launcherData = new ParticleEmitterData
            {
                ParticleMaterial = ContentLoader.Load<Material>("RocketMaterial"),
                Size = new RangeGraph<Size>(new Size(0.03f, 0.007f), new Size(0.03f, 0.007f)),
                LifeTime = 3.0f,
                StartPosition = new RangeGraph<Vector3D>(new Vector3D(0.0f, 0.01f, 0.0f), new Vector3D(0.0f, 0.01f, 0.0f)),
                StartVelocity = new RangeGraph<Vector3D>(new Vector3D(0.3f,0.0f,0.0f), Vector3D.Zero),
                Acceleration = new RangeGraph<Vector3D>(new Vector3D[]{new Vector3D(0.0f, -0.1f, 0.0f), new Vector3D(0.0f, 0.1f, 0.0f), new Vector3D(0.0f, -0.1f, 0.0f)}),
                SpawnInterval = 0,
                MaximumNumberOfParticles = 8
            };

            machineGunAndLauncher.AttachEmitter(new ParticleEmitter(machineGunData, Vector3D.Zero));
            machineGunAndLauncher.AttachEmitter(new ParticleEmitter(launcherData, Vector3D.Zero));

            machineGunAndLauncher.Position = new Vector3D(initialPosition);

            Add(new Velocity2D(Vector2D.Zero, MaximumSpeed));
            Start<PlayerMovement>();
            Start<MachineGunFire>();
        }
Example #11
0
		public static ParticleSystem GetProjectileEffect(TowerType towerType, AttackType attackType)
		{
			try
			{
				var effectData = ContentLoader.Load<ParticleSystemData>(towerType + attackType.ToString() +
						EffectType.Projectile);
				var effect = new ParticleSystem(effectData);
				foreach (var emitter in effect.AttachedEmitters)
					emitter.EmitterData.DoParticlesTrackEmitter = true;
				return effect;
			}
			catch //ncrunch: no coverage start
			{
				return FallbackEffects.ProjectileEffect();
			} //ncrunch: no coverage end
		}
Example #12
0
		//ncrunch: no coverage start
		public Projectile(Vector2D startPosition, float angle)
			: base(Rectangle.FromCenter(startPosition, new Size(.02f)))
		{
			Rotation = angle;
			RenderLayer = (int)AsteroidsRenderLayer.Rockets;
			missileAndTrails =
				new ParticleSystem(ContentLoader.Load<ParticleSystemData>("MissileEffect"));
			//Replacing usage of the ContentLoader we could do the following to dynamically create data:
			//missileAndTrails = new ParticleSystem();
			//var rocketData = new ParticleEmitterData
			//{
			//	ParticleMaterial = ContentLoader.Load<Material>("Missile2D"),
			//	Size = new RangeGraph<Size>(new Size(0.025f, 0.025f), new Size(0.025f, 0.025f)),
			//	LifeTime = 0,
			//	SpawnInterval = 0.001f,
			//	MaximumNumberOfParticles = 1
			//};
			//var trailData = new ParticleEmitterData
			//{
			//	ParticleMaterial = ContentLoader.Load<Material>("Projectile2D"),
			//	Size = new RangeGraph<Size>(new Size(0.02f, 0.03f), new Size(0.02f, 0.04f)),
			//	StartPosition =
			//		new RangeGraph<Vector3D>(new Vector3D(0.0f, 0.02f, 0.0f), new Vector3D(0.0f, 0.02f, 0.0f)),
			//	LifeTime = 2.2f,
			//	SpawnInterval = 0.2f,
			//	MaximumNumberOfParticles = 8
			//};
			//missileAndTrails.AttachEmitter(new ParticleEmitter(trailData, Vector3D.Zero));
			//missileAndTrails.AttachEmitter(new ParticleEmitter(rocketData, Vector3D.Zero));
			//missileAndTrails.AttachedEmitters[0].EmitterData.DoParticlesTrackEmitter = true;
			//missileAndTrails.AttachedEmitters[1].EmitterData.DoParticlesTrackEmitter = true;
			//foreach (var emitter in missileAndTrails.AttachedEmitters)
			//	emitter.EmitterData.StartRotation =
			//		new RangeGraph<ValueRange>(new ValueRange(Rotation, Rotation),
			//			new ValueRange(Rotation, Rotation));
			missileAndTrails.Orientation = Quaternion.FromAxisAngle(Vector3D.UnitZ, Rotation);
			var data = new SimplePhysics.Data
			{
				Gravity = Vector2D.Zero,
				Velocity =
					new Vector2D(MathExtensions.Sin(angle) * ProjectileVelocity,
						-MathExtensions.Cos(angle) * ProjectileVelocity)
			};
			Add(data);
			Start<MoveAndDisposeOnBorderCollision>();
		}
		protected override void Preview(string contentName)
		{
			var particleSystemData = ContentLoader.Load<ParticleSystemData>(contentName);
			var system = new ParticleSystem(particleSystemData);
			system.Position = new Vector3D(0.5f, 0.5f, 0);
		}
Example #14
0
		public static ParticleSystem GetAvatarSkillHitEffect(AvatarAttack avatarAttack)
		{
			if (AvatarHitEffects[(int)avatarAttack] != null)
				return AvatarHitEffects[(int)avatarAttack];
			try
			{
				var effectData = ContentLoader.Load<ParticleSystemData>(avatarAttack + "SkillHit");
				return AvatarHitEffects[(int)avatarAttack] = new ParticleSystem(effectData);
			}
			catch //ncrunch: no coverage start
			{
				return AvatarHitEffects[(int)avatarAttack] = new ParticleSystem();
			} //ncrunch: no coverage end
		}
		public bool TryLoadParticleEffect(string effectName)
		{
			if (!ContentLoader.Exists(effectName, ContentType.ParticleSystem))
				return false;
			var effectData = ContentLoader.Load<ParticleSystemData>(effectName);
			DestroyAllEmitters();
			currentEffect = new ParticleSystem(effectData);
			currentEmitterInEffect = 0;
			RefreshAllEffectProperties();
			RaisePropertyChanged("AvailableEmitterIndices");
			CenterViewOnCurrentEffect();
			return true;
		}
		public void ResetDefaultEffect()
		{
			ParticleSystemName = "";
			DestroyAllEmitters();
			currentEffect = new ParticleSystem();
			currentEmitterInEffect = 0;
			CenterViewOnCurrentEffect();
			AddEmitterToSystem();
			RefreshAllEffectProperties();
			RaisePropertyChanged("AvailableEmitterIndices");
			SavedEmitterSelectionVisibility = Visibility.Hidden;
			RaisePropertyChanged("SavedEmitterSelectionVisibility");
			TemplateListVisibility = Visibility.Hidden;
			RaisePropertyChanged("TemplateListVisibility");
		}
Example #17
0
		public static ParticleSystem GetTrailMarkerEffect()
		{
			if (trailMarker != null)
				return trailMarker;
			try
			{
				var effectData = ContentLoader.Load<ParticleSystemData>("DefaultTrail");
				return trailMarker = new ParticleSystem(effectData);
			}
			catch
			{
				return new ParticleSystem();
			}
		}
Example #18
0
		private static void AssertIsValidEffect(ParticleSystem effect)
		{
			Assert.IsNotNull(effect);
			Assert.IsNotEmpty(effect.AttachedEmitters);
		}