void frame_MouseClick(Element sender, MouseEventArgs e) { var player = (Player)ActiveMap.Player; var mdir = Vector2.Normalize(e.CurrentPosition - player.Position); var launchPort = player.Position + mdir * (player.Radius + 5); //launch stuff from slightly in front of player float launchVel = 300f + player.Velocity.Length(); var carrier = new DeviceTransporter(launchPort, 15); carrier.Velocity = launchVel * mdir; SpawnObject <Actor>(carrier); if (e.isClicked(MouseButtons.Left)) { var c = new Charge(50, 15); ActiveMap.AddObject(c); carrier.AddDevice(c); } if (e.isClicked(MouseButtons.Right)) { var s = new Sensor(60f); ActiveMap.AddObject(s); carrier.AddDevice(s); } }
public virtual void SpawnObject <T>(T obj) { ActiveMap.AddObject(obj as WorldObject); if (obj is IRigidBody) { PhysicsManager.ActiveBodies.Add(obj as IRigidBody); } }
void frame_KeyPressDown(Element sender, KeyEventArgs e) { switch (e.InterestingKeys[0]) { case Keys.G: gactive = !gactive; if (gactive) { PhysicsManager.AddUniversalForce(DefaultForces.Gravity); } else { PhysicsManager.RemoveUniversalForce(DefaultForces.Gravity); } break; case Keys.X: var br = new BombRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), winSize.Height), 25); br.Mass = 100; br.Velocity = -1000 * Vector2.UnitY; br.FuseTime = .1f; ActiveMap.AddObject(br); PhysicsManager.ActiveBodies.Add(br); break; case Keys.C: var gr = new InertRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), winSize.Height), 25); gr.Mass = 100; gr.Velocity = -1000 * Vector2.UnitY; ActiveMap.AddObject(gr); PhysicsManager.ActiveBodies.Add(gr); break; case Keys.OemPeriod: draw = !draw; break; case Keys.Space: break; } }
void frame_MouseOver(Element sender, MouseEventArgs e) { ((IRigidBody)ActiveMap.Player).Rotation = MathUtils.GetAngle(e.CurrentPosition - ((IRigidBody)ActiveMap.Player).Position); if (e.isDown(MouseButtons.Right)) { var rad = PhysicsManager.QTbodies.Query(Region.FromCircle(e.CurrentPosition, 10)); foreach (var gr in rad) { if (gr is InertRoid) { KillObject((Actor)gr); var gra = (InertRoid)gr; var br = new BombRoid(gra.Position, gra.Radius); ActiveMap.AddObject(br); PhysicsManager.ActiveBodies.Add(br); } } } }
public override void Update(GameTime time) { if (!UIManager.Update(time)) { base.Exit(); } ActiveMap.UpdateDynamicObjects(time); PhysicsManager.Update(time.ElapsedGameTime.Milliseconds / 1000f); if (!time.IsRunningSlowly) { dint -= time.ElapsedGameTime.Milliseconds / 1000f; if (dint <= 0.0f) { dynamic obj; if (MathUtils.Rand.Next(0, 2) == 0) { obj = new BombRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), (float)MathUtils.Rand.Next(60, (int)winSize.Height - 60)), MathUtils.Rand.Next(2, 10)); } else { obj = new InertRoid(new Vector2((float)MathUtils.Rand.Next(60, (int)winSize.Width - 60), (float)MathUtils.Rand.Next(60, (int)winSize.Height - 60)), MathUtils.Rand.Next(2, 10)); } obj.Velocity = 1000 * (float)MathUtils.Rand.NextDouble() * MathUtils.RandDirection(); PhysicsManager.ActiveBodies.Add(obj); ActiveMap.AddObject(obj); Console.WriteLine(PhysicsManager.ActiveBodies.Count.ToString() + " bodies"); dint = delay; } } else { Console.Write(PhysicsManager.ActiveBodies.Count.ToString() + " bodies "); Console.WriteLine("SLOW - HIT PERIOD TO DISABLE GRFX"); dint = 0.0f; } }