PolyPolygon.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * PolyPolygon.h
  3. * TAU
  4. *
  5. * Created by Ivan Safrin on 3/14/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. // @package BasicTypes
  10. #pragma once
  11. #include "PolyString.h"
  12. #include <math.h>
  13. #include "PolyGlobals.h"
  14. #include "PolyVertex.h"
  15. #include "PolyVector3.h"
  16. #include "PolyVector2.h"
  17. #include "PolyRectangle.h"
  18. #include <vector>
  19. using std::vector;
  20. using std::min;
  21. using std::max;
  22. namespace Polycode {
  23. class _PolyExport Polygon {
  24. public:
  25. Polygon();
  26. ~Polygon();
  27. unsigned int getVertexCount();
  28. Vertex *getVertex(unsigned int index);
  29. Vertex *addVertex(Number x, Number y, Number z);
  30. void removeVertex(int index);
  31. void addTexCoord(Number u, Number v);
  32. void addTexCoord2(Number u, Number v);
  33. Vector2 *getTexCoord(int index);
  34. Vector2 *getTexCoord2(int index);
  35. void addVertex(Vertex *vertex);
  36. Vertex *addVertex(Number x, Number y, Number z, Number u, Number v);
  37. void calculateNormal();
  38. Vector3 getFaceNormal();
  39. Rectangle getBounds2D();
  40. void setNormal(Vector3 normal);
  41. bool useVertexNormals;
  42. void flipUVY();
  43. void setUseFaceUV(bool val);
  44. bool usesFaceUV();
  45. bool hasSecUVs;
  46. private:
  47. bool useFaceUV;
  48. unsigned int vertexCount;
  49. vector<Vertex*> vertices;
  50. vector<Vector2*> texCoords;
  51. vector<Vector2*> texCoords2;
  52. Vector3 *normal;
  53. };
  54. }