public static ParticleSystem ImpactEffect() { var impactEffect = new ParticleSystem(); var impactEmitterData = new ParticleEmitterData(); impactEmitterData.ParticleMaterial = GetFallbackMaterial(); impactEffect.AttachEmitter(new ParticleEmitter(impactEmitterData, Vector3D.Zero)); return impactEffect; }
public static ParticleSystem CreepTransformationEffect() { var transformationEffect = new ParticleSystem(); var transformationEmitterData = new ParticleEmitterData(); transformationEmitterData.ParticleMaterial = GetFallbackMaterial(); transformationEffect.AttachEmitter(new ParticleEmitter(transformationEmitterData, Vector3D.Zero)); return transformationEffect; }
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(); }
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; }
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; }
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 }
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>(); }
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 }
/// <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>(); }
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 }
//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); }
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"); }
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(); } }
private static void AssertIsValidEffect(ParticleSystem effect) { Assert.IsNotNull(effect); Assert.IsNotEmpty(effect.AttachedEmitters); }