HelperClasses.cs 2.1 KB

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