HelperClasses.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #region File Description
  2. //-----------------------------------------------------------------------------
  3. // HelperClasses.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;
  12. using System.Collections.Generic;
  13. using Microsoft.Xna.Framework;
  14. #endregion
  15. namespace ShatterEffectProcessor
  16. {
  17. /// <summary>
  18. /// Enumerates each element 3 times, once for each vertex in a triangle
  19. /// </summary>
  20. internal class ReplicateTriangleDataToEachVertex <T> : IEnumerable<T>
  21. {
  22. private IEnumerable<T> perTriangleData;
  23. public ReplicateTriangleDataToEachVertex (IEnumerable<T> perTriangleData)
  24. {
  25. this.perTriangleData = perTriangleData;
  26. }
  27. public IEnumerator<T> GetEnumerator()
  28. {
  29. foreach (T item in perTriangleData)
  30. {
  31. for (int i = 0; i < 3; i++)
  32. {
  33. // Return the same center value for every 3 vertices.
  34. yield return item;
  35. }
  36. }
  37. }
  38. IEnumerator IEnumerable.GetEnumerator()
  39. {
  40. return GetEnumerator();
  41. }
  42. }
  43. /// <summary>
  44. /// Enumerates a set of random vectors such that each element of those vectors
  45. /// are in the range [-1,1]
  46. /// </summary>
  47. internal class RandomVectorEnumerable : IEnumerable<Vector3>
  48. {
  49. private Random random = new Random();
  50. private int count;
  51. public RandomVectorEnumerable(int count)
  52. {
  53. this.count = count;
  54. }
  55. public IEnumerator<Vector3> GetEnumerator()
  56. {
  57. for (int i = 0; i < count; i++)
  58. {
  59. Vector3 vector = new Vector3((float)random.NextDouble(),
  60. (float)random.NextDouble(), (float)random.NextDouble());
  61. vector *= 2;
  62. vector -= Vector3.One;
  63. yield return vector;
  64. }
  65. }
  66. IEnumerator IEnumerable.GetEnumerator()
  67. {
  68. return GetEnumerator();
  69. }
  70. }
  71. }