SceneRendererForward.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "Base.h"
  2. #include "SceneRendererForward.h"
  3. #include "Terrain.h"
  4. #include "Model.h"
  5. #include "ParticleEmitter.h"
  6. #include "Form.h"
  7. namespace gameplay
  8. {
  9. SceneRendererForward::SceneRendererForward()
  10. : SceneRenderer()
  11. {
  12. }
  13. SceneRendererForward::SceneRendererForward(const SceneRendererForward& copy)
  14. {
  15. }
  16. SceneRendererForward::~SceneRendererForward()
  17. {
  18. }
  19. SceneRendererForward* SceneRendererForward::create()
  20. {
  21. return new SceneRendererForward();
  22. }
  23. unsigned int SceneRendererForward::render(VisibleSet* set)
  24. {
  25. set->reset();
  26. unsigned int drawCalls = 0;
  27. Node* next = set->getNext();
  28. do
  29. {
  30. drawCalls += drawNode(next);
  31. next = set->getNext();
  32. } while ( next != NULL);
  33. return drawCalls;
  34. }
  35. unsigned int SceneRendererForward::drawNode(Node* node)
  36. {
  37. unsigned int drawCalls = 0;
  38. // Draw Terrain
  39. Terrain* terrain = node->getTerrain();
  40. if (terrain)
  41. drawCalls += terrain->draw(isWireframe());
  42. // Draw Models (Shadows) TODO:
  43. // Draw Modes
  44. Model* model = node->getModel();
  45. if (model)
  46. drawCalls += model->draw(isWireframe());
  47. // Draw particles
  48. ParticleEmitter* emitter = node->getParticleEmitter();
  49. if (emitter)
  50. drawCalls += emitter->draw();
  51. // Draw forms
  52. Form* form = node->getForm();
  53. if (form)
  54. drawCalls += form->draw();
  55. return drawCalls;
  56. }
  57. }