TexturModel.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include "TexturModel.h"
  2. #include "DXBuffer.h"
  3. #include "Globals.h"
  4. #include "GraphicsApi.h"
  5. #include "Model3DList.h"
  6. #include "Textur.h"
  7. #include "TexturList.h"
  8. using namespace Framework;
  9. // Inhalt der TexturModel Klasse
  10. // Konstruktor
  11. TexturModel::TexturModel(GraphicsApi* zApi)
  12. : TexturModel(zApi, Standart3DTypes::texturModel)
  13. {}
  14. Framework::TexturModel::TexturModel(GraphicsApi* zApi, const char* uniqueName)
  15. {
  16. if (zApi->hasModel(uniqueName))
  17. model = zApi->getModel(uniqueName);
  18. else
  19. {
  20. model = zApi->createModel(uniqueName);
  21. Vertex3D* vertecies = new Vertex3D[4];
  22. for (int i = 0; i < 4; i++)
  23. vertecies[i].knochenId = 0;
  24. vertecies[0].pos = Vec3<float>(-50, 50, 0.f);
  25. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  26. vertecies[1].pos = Vec3<float>(50, 50, 0.f);
  27. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  28. vertecies[2].pos = Vec3<float>(-50, -50, 0.f);
  29. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  30. vertecies[3].pos = Vec3<float>(50, -50, 0.f);
  31. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  32. model->setVertecies(vertecies, 4);
  33. Polygon3D* p = new Polygon3D();
  34. p->indexAnz = 6;
  35. p->indexList = new int[p->indexAnz];
  36. p->indexList[0] = 0;
  37. p->indexList[1] = 3;
  38. p->indexList[2] = 2;
  39. p->indexList[3] = 0;
  40. p->indexList[4] = 1;
  41. p->indexList[5] = 3;
  42. model->addPolygon(p);
  43. model->calculateNormals();
  44. }
  45. textur = new Model3DTextur();
  46. }
  47. // Setzt die Textur die angezeigt werden soll
  48. // t: Die Textur
  49. void TexturModel::setTextur(Textur* t)
  50. {
  51. if (!t) return;
  52. this->textur->setPolygonTextur(0, t);
  53. rend = 1;
  54. }
  55. // Setzt die Größe, in der Die Textur angezeigt wird
  56. // gr: Ein Vektor, der für x und y die breite und höhe beinhaltet
  57. void TexturModel::setSize(Vec2<float> gr)
  58. {
  59. gr /= 2;
  60. Vertex3D* vertecies = new Vertex3D[4];
  61. for (int i = 0; i < 4; i++)
  62. vertecies[i].knochenId = 0;
  63. vertecies[0].pos = Vec3<float>(-gr.x, gr.y, 0.f);
  64. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  65. vertecies[1].pos = Vec3<float>(gr.x, gr.y, 0.f);
  66. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  67. vertecies[2].pos = Vec3<float>(-gr.x, -gr.y, 0.f);
  68. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  69. vertecies[3].pos = Vec3<float>(gr.x, -gr.y, 0.f);
  70. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  71. model->setVertecies(vertecies, 4);
  72. }
  73. // Setzt die Größe, in der die Textur angezeigt wird
  74. // b: Die Breite, in der die Textur angezeigt wird
  75. // h: Die Höhe, in der die Textur angezeigt wird
  76. void TexturModel::setSize(float b, float h)
  77. {
  78. b /= 2;
  79. h /= 2;
  80. Vertex3D* vertecies = new Vertex3D[4];
  81. for (int i = 0; i < 4; i++)
  82. vertecies[i].knochenId = 0;
  83. vertecies[0].pos = Vec3<float>(-b, h, 0.f);
  84. vertecies[0].tPos = Vec2<float>(0.f, 0.f);
  85. vertecies[1].pos = Vec3<float>(b, h, 0.f);
  86. vertecies[1].tPos = Vec2<float>(1.f, 0.f);
  87. vertecies[2].pos = Vec3<float>(-b, -h, 0.f);
  88. vertecies[2].tPos = Vec2<float>(0.f, 1.f);
  89. vertecies[3].pos = Vec3<float>(b, -h, 0.f);
  90. vertecies[3].tPos = Vec2<float>(1.f, 1.f);
  91. model->setVertecies(vertecies, 4);
  92. }