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))); } }
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); } } }
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))); } }
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)) { } }