diff --git a/source/Irrlicht/CBillboardSceneNode.cpp b/source/Irrlicht/CBillboardSceneNode.cpp index da90c3a1..c1776d4d 100644 --- a/source/Irrlicht/CBillboardSceneNode.cpp +++ b/source/Irrlicht/CBillboardSceneNode.cpp @@ -141,7 +141,7 @@ void CBillboardSceneNode::updateMesh(const irr::scene::ICameraSceneNode* camera) //! returns the axis aligned bounding box of this node const core::aabbox3d& CBillboardSceneNode::getBoundingBox() const { - // Really wrong when scaled. + // Really wrong when scaled (as the node does not scale it's vertices - maybe it should?) return BBoxSafe; } @@ -162,9 +162,9 @@ void CBillboardSceneNode::setSize(const core::dimension2d& size) if (core::equals(Size.Height, 0.0f)) Size.Height = 1.0f; - const f32 avg = (Size.Width + Size.Height)/6; - BBoxSafe.MinEdge.set(-avg,-avg,-avg); - BBoxSafe.MaxEdge.set(avg,avg,avg); + const f32 extent = 0.5f*sqrt(Size.Width*Size.Width + Size.Height*Size.Height); + BBoxSafe.MinEdge.set(-extent,-extent,-extent); + BBoxSafe.MaxEdge.set(extent,extent,extent); } @@ -182,9 +182,9 @@ void CBillboardSceneNode::setSize(f32 height, f32 bottomEdgeWidth, f32 topEdgeWi TopEdgeWidth = 1.0f; } - const f32 avg = (core::max_(Size.Width,TopEdgeWidth) + Size.Height)/6; - BBoxSafe.MinEdge.set(-avg,-avg,-avg); - BBoxSafe.MaxEdge.set(avg,avg,avg); + const f32 extent = 0.5f*sqrt(Size.Width*Size.Width + Size.Height*Size.Height); + BBoxSafe.MinEdge.set(-extent,-extent,-extent); + BBoxSafe.MaxEdge.set(extent,extent,extent); }