BsVertexData.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #include "BsVertexData.h"
  5. #include "BsHardwareBufferManager.h"
  6. #include "BsVertexBuffer.h"
  7. #include "BsVector3.h"
  8. #include "BsException.h"
  9. #include "BsRenderSystem.h"
  10. namespace BansheeEngine
  11. {
  12. VertexData::VertexData()
  13. {
  14. vertexCount = 0;
  15. }
  16. VertexData::~VertexData()
  17. {
  18. }
  19. void VertexData::setBuffer(UINT32 index, VertexBufferPtr buffer)
  20. {
  21. mVertexBuffers[index] = buffer;
  22. recalculateMaxIndex();
  23. }
  24. VertexBufferPtr VertexData::getBuffer(UINT32 index) const
  25. {
  26. auto iterFind = mVertexBuffers.find(index);
  27. if(iterFind != mVertexBuffers.end())
  28. {
  29. return iterFind->second;
  30. }
  31. return nullptr;
  32. }
  33. bool VertexData::isBufferBound(UINT32 index) const
  34. {
  35. auto iterFind = mVertexBuffers.find(index);
  36. if(iterFind != mVertexBuffers.end())
  37. {
  38. if(iterFind->second != nullptr)
  39. return true;
  40. }
  41. return false;
  42. }
  43. void VertexData::recalculateMaxIndex()
  44. {
  45. mMaxBufferIdx = 0;
  46. for (auto& bufferData : mVertexBuffers)
  47. mMaxBufferIdx = std::max(bufferData.first, mMaxBufferIdx);
  48. }
  49. }