EntityDirection.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <OgreHardwareBufferManager.h>
  2. #include "core/EntityDirection.h"
  3. EntityDirection::EntityDirection()
  4. {
  5. mRenderOp.vertexData = new Ogre::VertexData();
  6. mRenderOp.indexData = 0;
  7. mRenderOp.vertexData->vertexCount = 2;
  8. mRenderOp.vertexData->vertexStart = 0;
  9. mRenderOp.operationType = Ogre::RenderOperation::OT_LINE_LIST;
  10. mRenderOp.useIndexes = false;
  11. Ogre::VertexDeclaration* decl = mRenderOp.vertexData->vertexDeclaration;
  12. Ogre::VertexBufferBinding* bind = mRenderOp.vertexData->vertexBufferBinding;
  13. decl->addElement(0, 0, Ogre::VET_FLOAT3, Ogre::VES_POSITION);
  14. Ogre::HardwareVertexBufferSharedPtr vbuf0 = Ogre::HardwareBufferManager::getSingleton().createVertexBuffer(
  15. decl->getVertexSize(0),
  16. mRenderOp.vertexData->vertexCount,
  17. Ogre::HardwareBuffer::HBU_STATIC_WRITE_ONLY);
  18. bind->setBinding(0, vbuf0);
  19. float* pPos = static_cast<float*>(vbuf0->lock(Ogre::HardwareBuffer::HBL_DISCARD));
  20. *pPos++ = 0.0f; *pPos++ = 0.0f; *pPos++ = 0.0f;
  21. *pPos++ = 0.0f; *pPos++ = -1.0f; *pPos++ = 0.0f;
  22. vbuf0->unlock();
  23. Ogre::AxisAlignedBox aabb;
  24. aabb.setInfinite();
  25. setBoundingBox(aabb);
  26. }
  27. EntityDirection::~EntityDirection()
  28. {
  29. delete mRenderOp.vertexData;
  30. }
  31. Ogre::Real
  32. EntityDirection::getSquaredViewDepth(const Ogre::Camera* cam) const
  33. {
  34. return 0.0f;
  35. }
  36. Ogre::Real
  37. EntityDirection::getBoundingRadius() const
  38. {
  39. return 0.0f;
  40. }