19 #ifndef GZ_RENDERING_OGRE2_OGRE2BOUNDINGBOXCAMERA_HH_
20 #define GZ_RENDERING_OGRE2_OGRE2BOUNDINGBOXCAMERA_HH_
39 inline namespace GZ_RENDERING_VERSION_NAMESPACE {
42 class Ogre2BoundingBoxCameraPrivate;
56 public:
virtual void Init()
override;
59 public:
virtual void Destroy()
override;
62 public:
virtual void PreRender()
override;
65 public:
virtual void Render()
override;
68 public:
virtual void PostRender()
override;
76 ConnectNewBoundingBoxes(
80 public:
virtual void SetBoundingBoxType(
BoundingBoxType _type)
override;
87 public:
void CreateBoundingBoxTexture();
91 public:
void CreateRenderTexture();
96 public:
void FullBoundingBoxes();
100 public:
void VisibleBoundingBoxes();
103 public:
void BoundingBoxes3D();
115 public:
void MeshMinimalBox(
116 const Ogre::MeshPtr _mesh,
117 const Ogre::Matrix4 &_viewMatrix,
118 const Ogre::Matrix4 &_projMatrix,
119 Ogre::Vector3 &_minVertex,
120 Ogre::Vector3 &_maxVertex,
121 const Ogre::Vector3 &_position,
122 const Ogre::Quaternion &_orientation,
123 const Ogre::Vector3 &_scale
127 public:
virtual void DrawBoundingBox(
unsigned char *_data,
136 public:
void DrawLine(
unsigned char *_data,
143 public:
void ConvertToScreenCoord(Ogre::Vector3 &_minVertex,
144 Ogre::Vector3 &_maxVertex)
const;
148 public:
void MarkVisibleBoxes();
155 private:
void CreateCamera();
158 private:
void MergeMultiLinksModels2D();
161 private:
void MergeMultiLinksModels3D();