PolyScreenLine.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * PolyScreenLine.cpp
  3. * Poly
  4. *
  5. * Created by Ivan Safrin on 5/8/08.
  6. * Copyright 2008 __MyCompanyName__. All rights reserved.
  7. *
  8. */
  9. #include "PolyScreenLine.h"
  10. using namespace Polycode;
  11. ScreenLine::ScreenLine(Vector2* start, Vector2* end) {
  12. target1 = NULL;
  13. startVertex.x = start->x;
  14. startVertex.y = start->y;
  15. endVertex.x = end->x;
  16. endVertex.y = end->y;
  17. vertexDataArray = CoreServices::getInstance()->getRenderer()->createRenderDataArray(RenderDataArray::VERTEX_DATA_ARRAY);
  18. }
  19. ScreenLine::ScreenLine(ScreenEntity* target1, ScreenEntity* target2) : ScreenEntity() {
  20. this->target1 = target1;
  21. this->target2 = target2;
  22. lineWidth = 1.0f;
  23. vertexDataArray = CoreServices::getInstance()->getRenderer()->createRenderDataArray(RenderDataArray::VERTEX_DATA_ARRAY);
  24. }
  25. ScreenLine::~ScreenLine() {
  26. }
  27. void ScreenLine::setLineWidth(Number width) {
  28. lineWidth = width;
  29. }
  30. void ScreenLine::Update() {
  31. if(!target1)
  32. return;
  33. Vector3 pos1 = target1->getPosition();
  34. Vector3 pos2 = target2->getPosition();
  35. setPosition(pos1.x, pos1.y);
  36. endVertex.x = pos2.x-pos1.x;
  37. endVertex.y = pos2.y-pos1.y;
  38. }
  39. void ScreenLine::Render() {
  40. Renderer *renderer = CoreServices::getInstance()->getRenderer();
  41. int rmode = renderer->getRenderMode();
  42. renderer->setRenderMode(Renderer::RENDER_MODE_WIREFRAME);
  43. renderer->setLineSize(lineWidth);
  44. renderer->setTexture(NULL);
  45. // renderer->draw2DVertex(&startVertex);
  46. // renderer->draw2DVertex(&endVertex);
  47. renderer->pushRenderDataArray(vertexDataArray);
  48. renderer->drawArrays(Mesh::TRIFAN_MESH);
  49. renderer->setRenderMode(rmode);
  50. }