CollideRay.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #region File Description
  2. //-----------------------------------------------------------------------------
  3. // CollideRay.cs
  4. //
  5. // Microsoft XNA Community Game Platform
  6. // Copyright (C) Microsoft Corporation. All rights reserved.
  7. //-----------------------------------------------------------------------------
  8. #endregion
  9. #region Using Statements
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Text;
  13. using Microsoft.Xna.Framework;
  14. using Microsoft.Xna.Framework.Graphics;
  15. #endregion
  16. namespace RobotGameData.Collision
  17. {
  18. /// <summary>
  19. /// It's a collision ray.
  20. /// </summary>
  21. public class CollideRay : CollideElement
  22. {
  23. #region Fields
  24. /// <summary>
  25. /// local position of the bounding ray
  26. /// </summary>
  27. protected Vector3 localPosition = Vector3.Zero;
  28. /// <summary>
  29. /// local direction of the bounding ray
  30. /// </summary>
  31. protected Vector3 localDirection = Vector3.Zero;
  32. /// <summary>
  33. /// Bounding ray
  34. /// </summary>
  35. protected Ray ray;
  36. #endregion
  37. #region Properties
  38. public Ray Ray
  39. {
  40. get { return ray; }
  41. }
  42. #endregion
  43. /// <summary>
  44. /// Constructor.
  45. /// </summary>
  46. /// <param name="position">position of the ray</param>
  47. /// <param name="direction">direction of the ray</param>
  48. public CollideRay(Vector3 position, Vector3 direction)
  49. : base()
  50. {
  51. localPosition = position;
  52. localDirection = direction;
  53. ray = new Ray(localPosition, localDirection);
  54. }
  55. /// <summary>
  56. /// Set to new transform matrix.
  57. /// </summary>
  58. public override void Transform(Matrix matrix)
  59. {
  60. ray.Position = Vector3.Transform(localPosition, matrix);
  61. ray.Direction = Vector3.Transform(localDirection, matrix);
  62. ray.Direction.Normalize();
  63. base.Transform(matrix);
  64. }
  65. }
  66. }