PrimitiveTypeExtensions.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using Microsoft.Xna.Framework.Graphics;
  3. namespace MonoGame.Extended.Graphics
  4. {
  5. public static class PrimitiveTypeExtensions
  6. {
  7. internal static int GetPrimitivesCount(this PrimitiveType primitiveType, int verticesCount)
  8. {
  9. switch (primitiveType)
  10. {
  11. case PrimitiveType.LineStrip:
  12. return verticesCount - 1;
  13. case PrimitiveType.LineList:
  14. return verticesCount/2;
  15. case PrimitiveType.TriangleStrip:
  16. return verticesCount - 2;
  17. case PrimitiveType.TriangleList:
  18. return verticesCount/3;
  19. default:
  20. throw new ArgumentException("Invalid primitive type.");
  21. }
  22. }
  23. internal static int GetVerticesCount(this PrimitiveType primitiveType, int primitivesCount)
  24. {
  25. switch (primitiveType)
  26. {
  27. case PrimitiveType.LineStrip:
  28. return primitivesCount + 1;
  29. case PrimitiveType.LineList:
  30. return primitivesCount*2;
  31. case PrimitiveType.TriangleStrip:
  32. return primitivesCount + 2;
  33. case PrimitiveType.TriangleList:
  34. return primitivesCount*3;
  35. default:
  36. throw new ArgumentException("Invalid primitive type.");
  37. }
  38. }
  39. }
  40. }