/// <summary> /// Fire a projectile from ship with given type and velocity /// </summary> public void FireProjectile(ProjectileType projectile, float velocity) { switch (projectile) { case ProjectileType.Blaster: { // fire left blaster Matrix m = shipEntities.GetTransform("blaster_left") * bobbing * transform; Projectile p = gameManager.AddProjectile(projectile, playerIndex, m, velocity, 0.1f, RenderTechnique.ViewMapping); p.SetExplosion(AnimSpriteType.Blaster, 30, 30, DrawMode.AdditiveAndGlow, 0, 0, null); // fire right blaster m = shipEntities.GetTransform("blaster_right") * bobbing * transform; p = gameManager.AddProjectile(projectile, playerIndex, m, velocity, 0.1f, RenderTechnique.ViewMapping); p.SetExplosion(AnimSpriteType.Blaster, 30, 30, DrawMode.AdditiveAndGlow, 0, 0, null); // play blaster fire sound gameManager.PlaySound("fire_primary"); } break; case ProjectileType.Missile: { // fire missile Matrix m = shipEntities.GetTransform("missile") * bobbing * transform; Projectile p = gameManager.AddProjectile(projectile, playerIndex, m, velocity, 0.1f, RenderTechnique.NormalMapping); p.SetExplosion(AnimSpriteType.Missile, 90, 30, DrawMode.AdditiveAndGlow, 0.5f, 500, "missile_explode"); // set missile trail ParticleSystem Trail = gameManager.AddParticleSystem( ParticleSystemType.MissileTrail, Matrix.Identity); p.SetTrail(Trail, Matrix.CreateTranslation(GameOptions.MissileTrailOffset)); // play missile fire sound gameManager.PlaySound("fire_secondary"); } break; } }
ChaseCamera chaseCamera; // chase camera object /// <summary> /// Create a new player ship /// </summary> public PlayerShip( GameManager game, // game manager int player, // player id Model model, // model for player ship EntityList entities, // entity list for ship model float radius) // collision box radius { if (game == null) { throw new ArgumentNullException("game"); } if (entities == null) { throw new ArgumentNullException("entities"); } // save parameters gameManager = game; shipModel = model; shipEntities = entities; playerIndex = player; // create movement controller movement = new PlayerMovement(); movement.maxVelocity = GameOptions.MovementVelocity; // enable collision sound collisionSound = true; // create engine particle system with infinite life time particleBoost = gameManager.AddParticleSystem( ParticleSystemType.ShipTrail, transform); particleBoost.SetTotalTime(1e10f); boostTransform = shipEntities.GetTransform("engine"); // create the ship collision box box = new CollisionBox(-radius, radius); // random bobbing offset random = new Random(player); bobbingTime = (float)random.NextDouble(); // setup 3rd person camera parameters camera3rdPerson = false; chaseCamera = new ChaseCamera(); chaseCamera.DesiredPositionOffset = GameOptions.CameraOffset; chaseCamera.LookAtOffset = GameOptions.CameraTargetOffset; chaseCamera.Stiffness = GameOptions.CameraStiffness; chaseCamera.Damping = GameOptions.CameraDamping; chaseCamera.Mass = GameOptions.CameraMass; }
// collision box radius /// <summary> /// Create a new player ship /// </summary> public PlayerShip( GameManager game, // game manager int player, // player id Model model, // model for player ship EntityList entities, // entity list for ship model float radius) { if (game == null) { throw new ArgumentNullException("game"); } if (entities == null) { throw new ArgumentNullException("entities"); } // save parameters gameManager = game; shipModel = model; shipEntities = entities; playerIndex = player; // create movement controller movement = new PlayerMovement(); movement.maxVelocity = GameOptions.MovementVelocity; // enable collision sound collisionSound = true; // create engine particle system with infinite life time particleBoost = gameManager.AddParticleSystem( ParticleSystemType.ShipTrail, transform); particleBoost.SetTotalTime(1e10f); boostTransform = shipEntities.GetTransform("engine"); // create the ship collision box box = new CollisionBox(-radius, radius); // random bobbing offset random = new Random(player); bobbingTime = (float)random.NextDouble(); // setup 3rd person camera parameters camera3rdPerson = false; chaseCamera = new ChaseCamera(); chaseCamera.DesiredPositionOffset = GameOptions.CameraOffset; chaseCamera.LookAtOffset = GameOptions.CameraTargetOffset; chaseCamera.Stiffness = GameOptions.CameraStiffness; chaseCamera.Damping = GameOptions.CameraDamping; chaseCamera.Mass = GameOptions.CameraMass; }