Simple game engine with complete export to scripting language
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

54 lignes
1.2 KiB

  1. #include "RenderQueue.h"
  2. namespace BlueCore
  3. {
  4. void RenderQueue::addOpaqueItem(RenderItem *item, const Vector3& position,
  5. const Quaternion& orientation)
  6. {
  7. _OpaqueItems.push_back(QueueItem(item, position, orientation));
  8. }
  9. void RenderQueue::addTransparentItem(RenderItem *item, const Vector3& position,
  10. const Quaternion& orientation)
  11. {
  12. _TransparentItems.push_back(QueueItem(item, position, orientation));
  13. }
  14. const std::list<RenderQueue::QueueItem>& RenderQueue::getOpaqueItems()
  15. {
  16. return _OpaqueItems;
  17. }
  18. const std::list<RenderQueue::QueueItem>& RenderQueue::getTransparentItems()
  19. {
  20. return _TransparentItems;
  21. }
  22. void RenderQueue::clear()
  23. {
  24. _OpaqueItems.clear();
  25. _TransparentItems.clear();
  26. }
  27. void RenderQueue::render(RenderDevice *device) const
  28. {
  29. std::list<QueueItem>::const_iterator i;
  30. for (i = _OpaqueItems.begin(); i != _OpaqueItems.end(); i++)
  31. {
  32. device->pushTransformation((*i).position, (*i).orientation);
  33. (*i).item->render(device);
  34. device->popTransformation();
  35. }
  36. for (i = _TransparentItems.begin(); i != _TransparentItems.end(); i++)
  37. {
  38. device->pushTransformation((*i).position, (*i).orientation);
  39. (*i).item->render(device);
  40. device->popTransformation();
  41. }
  42. }
  43. }