PolyScreenLine.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. setPosition(target1->getPosition()->x, target1->getPosition()->y);
  34. endVertex.x = target2->getPosition()->x-target1->getPosition()->x;
  35. endVertex.y = target2->getPosition()->y-target1->getPosition()->y;
  36. }
  37. void ScreenLine::Render() {
  38. Renderer *renderer = CoreServices::getInstance()->getRenderer();
  39. int rmode = renderer->getRenderMode();
  40. renderer->setRenderMode(Renderer::RENDER_MODE_WIREFRAME);
  41. renderer->setLineSize(lineWidth);
  42. renderer->setTexture(NULL);
  43. // renderer->draw2DVertex(&startVertex);
  44. // renderer->draw2DVertex(&endVertex);
  45. renderer->pushRenderDataArray(vertexDataArray);
  46. renderer->drawArrays(Mesh::TRIFAN_MESH);
  47. renderer->setRenderMode(rmode);
  48. }