示例#1
0
        void frame_MouseOver(Element sender, MouseEventArgs e)
        {
            var pcur = new Vector2(e.CurrentMouseState.X, e.CurrentMouseState.Y);
            var pold = new Vector2(e.PreviousMouseState.X, e.PreviousMouseState.Y);

            if (mactive)
            {
                PE.AddInstantaneousForceField(new InstantaneousForceField(pcur, rad, DefaultForces.GenerateDirectionalField(400 * (pcur - pold), rad)));
            }
        }
示例#2
0
文件: Charge.cs 项目: preetum/archive
        public void Detonate(float damageConstant)
        {
            if (this.Parent == null)
            {
                return;
            }

            var PE = ((PlayableState)GameEngine.Singleton
                      .FindGameState(x => x is PlayableState))
                     .PhysicsManager;

            var explosion = ParticleSystemFactory.GetDirtyBomb(this.Position, BlastRadius);

            PE.AddParticleSystems(explosion);

            var forcefield = new InstantaneousForceField(this.Position, BlastRadius, DefaultForces.GenerateExplosiveField(BlastRadius, BlastStrength));

            PE.AddInstantaneousForceField(forcefield);

            if (this.Parent is IHealthable)
            {
                ((IHealthable)this.Parent).CurrentHealth = 0.0f;
            }
            this.Parent.Destroy();

            var inRange = PE.QTbodies.Query(Region.FromCircle(this.Position, BlastRadius));

            foreach (Actor actor in inRange)
            {
                if (actor is IHealthable)
                {
                    var damage = forcefield.GetForce(actor.Position - forcefield.SourcePos).Length();
                    ((IHealthable)actor).Hurt(damage * damageConstant);
                }
            }
        }
示例#3
0
        void Astroid_Collided(IRigidBody impactB)
        {
            if ((impactB is Player || impactB is Astroid) && isRoid)
            {
                var PE = ((GameStates.IPlayable)GameEngine.Singleton
                          .FindGameState(x => x is GameStates.IPlayable))
                         .PhysicsManager;

                this.Destroy();

                var brad      = this.Radius * 1.2f;
                var explosion = ParticleSystemFactory.GetDirtyBomb(this.Position, brad);
                PE.AddParticleSystems(explosion);
                PE.AddInstantaneousForceField(new InstantaneousForceField(this.Position, brad, DefaultForces.GenerateExplosiveField(brad, 1)));
            }
        }
示例#4
0
 void frame_MouseClick(Element sender, MouseEventArgs e)
 {
     if (e.isClicked(MouseButtons.Left))
     {
         var rad = 25;
         PhysicsManager.AddParticleSystems(ParticleSystemFactory.GetDirtyBomb(e.CurrentPosition, rad));
         PhysicsManager.AddInstantaneousForceField(new InstantaneousForceField(e.CurrentPosition, rad, DefaultForces.GenerateExplosiveField(rad, 1)));
     }
     if (e.isClicked(MouseButtons.Right))
     {
     }
     if (e.isClicked(MouseButtons.Middle))
     {
     }
 }