public static EmmitorGroup CreateAsteroidExplosionEmmitors(SceneMgr mgr, Vector position) { ParticleEmmitor smokeEmmitor = CreateFireParticleEmmitor(mgr, position, Color.FromArgb(135, 0, 0, 0)); smokeEmmitor.EmitingTime = 0.5f; smokeEmmitor.Amount = 20; smokeEmmitor.MinLife = 1.0f; smokeEmmitor.MaxLife = 1.2f; smokeEmmitor.MinSize = 5; smokeEmmitor.MaxSize = 6f; smokeEmmitor.MinForce = 3; smokeEmmitor.MaxForce = 4; smokeEmmitor.FireAll = true; ParticleEmmitor fireEmmitor = CreateFireParticleEmmitor(mgr, position, Color.FromArgb(120, 255, 120, 0)); fireEmmitor.EmitingTime = 0.5f; fireEmmitor.Amount = 20; fireEmmitor.MinLife = 0.8f; fireEmmitor.MaxLife = 1.0f; fireEmmitor.MinSize = 5; fireEmmitor.MaxSize = 6f; fireEmmitor.MinForce = 3; fireEmmitor.MaxForce = 4; fireEmmitor.FireAll = true; EmmitorGroup g = new EmmitorGroup(); g.Position = position; g.Add(smokeEmmitor); g.Add(fireEmmitor); return(g); }
public static EmmitorGroup CreateBaseExplosionEmmitors(Base baze, Vector collision, Vector direction) { ParticleEmmitor f = CreateFlashParticleEmmitor(baze.SceneMgr, collision, Color.FromRgb(250, 250, 150)); f.MinSize = 2; f.MaxSize = 3; ParticleEmmitor d = CreateBaseDebrisEmmitor(baze.SceneMgr, collision, direction, baze.Color); EmmitorGroup g = new EmmitorGroup(); g.Add(f); g.Add(d); return(g); }
public static EmmitorGroup CreateFireEmmitors(SceneMgr mgr, Vector position) { ParticleEmmitor smokeEmmitor = CreateFireParticleEmmitor(mgr, position, Color.FromArgb(80, 0, 0, 0)); smokeEmmitor.Amount = 60; smokeEmmitor.MinLife = 4f; smokeEmmitor.MaxLife = 5f; smokeEmmitor.MinSize = 0.7f; smokeEmmitor.MaxSize = 1.2f; smokeEmmitor.MinForce = 2; smokeEmmitor.MaxForce = 3; smokeEmmitor.Direction = new Vector(0, -1); smokeEmmitor.MinAngle = (float)-Math.PI / 30; smokeEmmitor.MaxAngle = (float)Math.PI / 30; smokeEmmitor.Infinite = true; ParticleEmmitor fireEmmitor = CreateFireParticleEmmitor(mgr, position, Color.FromArgb(120, 255, 155, 0)); fireEmmitor.Amount = 50; fireEmmitor.MinLife = 0.5f; fireEmmitor.MaxLife = 1.2f; fireEmmitor.MinSize = 1f; fireEmmitor.MaxSize = 1.5f; fireEmmitor.MinForce = 5; fireEmmitor.MaxForce = 6; fireEmmitor.Direction = new Vector(0, -1); fireEmmitor.MinAngle = (float)-Math.PI / 20; fireEmmitor.MaxAngle = (float)Math.PI / 20; fireEmmitor.Infinite = true; EmmitorGroup g = new EmmitorGroup(); g.Position = position; g.Add(smokeEmmitor); g.Add(fireEmmitor); return(g); }
public static EmmitorGroup CreateBulletImplosionEmmitor(SceneMgr mgr, Vector position, Color color) { ParticleEmmitor e1 = CreateShockWaveParticleEmmitor(mgr, position, color); e1.SizeMultiplier = 20; e1.MinLife = 0.25f; e1.MaxLife = 0.25f; e1.MinSize = 0.2f; e1.MaxSize = 0.2f; EmmitorGroup g = new EmmitorGroup(); g.Add(e1); return(g); }
private void CreateSpark() { ParticleNode node = new ParticleNode(me.SceneMgr, IdMgr.GetNewId(me.SceneMgr.GetCurrentPlayer().GetId())); // TODO spawn in a whole volume bool left = me.SceneMgr.GetRandomGenerator().Next(2) == 0 ? false : true; if (left) { Vector position = (meNode.Center - (meNode.Direction.Rotate(Math.PI / 4) * (asteroid.Radius))); position += meNode.Direction * (asteroid.Radius * 1.5); node.Position = position; node.Direction = meNode.Direction.Rotate(FastMath.DegToRad(-10)); } else { Vector position = (meNode.Center - (meNode.Direction.Rotate(-Math.PI / 4) * (asteroid.Radius))); position += meNode.Direction * (asteroid.Radius * 1.5); node.Position = position; node.Direction = meNode.Direction.Rotate(FastMath.DegToRad(10)); } float minSize = (float)FastMath.LinearInterpolate(0.2, 0.5, me.SceneMgr.GetRandomGenerator().NextDouble()); float maxSize = minSize * 1.2f; ParticleEmmitor smokeEmmitor = ParticleEmmitorFactory.CreateBasicFire(me.SceneMgr, Color.FromArgb(80, 0, 0, 0)); smokeEmmitor.Amount = 20; smokeEmmitor.MinLife = 0.3f; smokeEmmitor.MaxLife = 0.4f; smokeEmmitor.MinSize = minSize * 1.3f; smokeEmmitor.MaxSize = maxSize * 1.3f; smokeEmmitor.SpawnRadius = 4f; smokeEmmitor.Infinite = true; ParticleEmmitor fireEmmitor = ParticleEmmitorFactory.CreateBasicFire(me.SceneMgr, Color.FromArgb(150, 255, 100, 0)); fireEmmitor.Amount = 20; fireEmmitor.MinLife = 0.1f; fireEmmitor.MaxLife = 0.2f; fireEmmitor.MinSize = minSize * 1.1f; fireEmmitor.MaxSize = maxSize * 1.1f; fireEmmitor.Infinite = true; ParticleEmmitor fireEmmitor2 = ParticleEmmitorFactory.CreateBasicFire(me.SceneMgr, Color.FromArgb(200, 255, 200, 0)); fireEmmitor2.Amount = 20; fireEmmitor2.MinLife = 0.1f; fireEmmitor2.MaxLife = 0.1f; fireEmmitor2.MinSize = minSize; fireEmmitor2.MaxSize = maxSize; fireEmmitor2.Infinite = true; EmmitorGroup grp = new EmmitorGroup(); grp.Add(smokeEmmitor); grp.Add(fireEmmitor); grp.Add(fireEmmitor2); node.AddEmmitorGroup(grp, new Vector(), false); NewtonianMovementControl nmc = new NewtonianMovementControl(); nmc.Speed = (asteroid.GetControlOfType <IMovementControl>().RealSpeed / tpf) * 0.75f; node.AddControl(nmc); node.AddControl(new LimitedLifeControl((float)FastMath.LinearInterpolate(0.5, 2, me.SceneMgr.GetRandomGenerator().NextDouble()))); me.SceneMgr.DelayedAttachToScene(node); }