Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }