Fixed build when using of double BoundingBox/BoundingSphere

This commit is contained in:
Robert Osfield 2014-04-07 15:04:34 +00:00
parent 391ab02573
commit efc493cfa0
2 changed files with 20 additions and 9 deletions

View File

@ -51,6 +51,12 @@ class BoundingBoxImpl
-FLT_MAX) -FLT_MAX)
{} {}
template<typename BT>
inline BoundingBoxImpl(const BoundingBoxImpl<BT>& bb) :
_min(bb._min),
_max(bb._max)
{}
/** Creates a bounding box initialized to the given extents. */ /** Creates a bounding box initialized to the given extents. */
inline BoundingBoxImpl(value_type xmin, value_type ymin, value_type zmin, inline BoundingBoxImpl(value_type xmin, value_type ymin, value_type zmin,
value_type xmax, value_type ymax, value_type zmax) : value_type xmax, value_type ymax, value_type zmax) :
@ -192,7 +198,8 @@ class BoundingBoxImpl
/** Expands this bounding box to include the given sphere. /** Expands this bounding box to include the given sphere.
* If this box is uninitialized, set it to include sh. */ * If this box is uninitialized, set it to include sh. */
void expandBy(const BoundingSphereImpl<VT>& sh) template<typename BST>
void expandBy(const BoundingSphereImpl<BST>& sh)
{ {
if (!sh.valid()) return; if (!sh.valid()) return;

View File

@ -113,11 +113,13 @@ class BoundingSphereImpl
/** Expands the sphere to encompass the given box. Repositions the /** Expands the sphere to encompass the given box. Repositions the
* sphere center to minimize the radius increase. */ * sphere center to minimize the radius increase. */
void expandBy(const BoundingBoxImpl<VT>& bb); template<typename BBT>
void expandBy(const BoundingBoxImpl<BBT>& bb);
/** Expands the sphere to encompass the given box. Does not /** Expands the sphere to encompass the given box. Does not
* repositions the sphere center. */ * repositions the sphere center. */
void expandRadiusBy(const BoundingBoxImpl<VT>& bb); template<typename BBT>
void expandRadiusBy(const BoundingBoxImpl<BBT>& bb);
/** Returns true if v is within the sphere. */ /** Returns true if v is within the sphere. */
inline bool contains(const vec_type& v) const inline bool contains(const vec_type& v) const
@ -138,12 +140,12 @@ class BoundingSphereImpl
template<typename VT> template<typename VT>
template<typename vector_type> template<typename vector_type>
void BoundingSphereImpl<VT>::expandBy(const vector_type& v) void BoundingSphereImpl<VT>::expandBy(const vector_type& v)
{ {
if (valid()) if (valid())
{ {
vec_type dv = v-_center; vec_type dv = vec_type(v)-_center;
value_type r = dv.length(); value_type r = dv.length();
if (r>_radius) if (r>_radius)
{ {
@ -160,12 +162,12 @@ void BoundingSphereImpl<VT>::expandBy(const vector_type& v)
} }
template<typename VT> template<typename VT>
template<typename vector_type> template<typename vector_type>
void BoundingSphereImpl<VT>::expandRadiusBy(const vector_type& v) void BoundingSphereImpl<VT>::expandRadiusBy(const vector_type& v)
{ {
if (valid()) if (valid())
{ {
value_type r = (v-_center).length(); value_type r = (vec_type(v)-_center).length();
if (r>_radius) _radius = r; if (r>_radius) _radius = r;
// else do nothing as vertex is within sphere. // else do nothing as vertex is within sphere.
} }
@ -247,7 +249,8 @@ void BoundingSphereImpl<VT>::expandRadiusBy(const BoundingSphereImpl& sh)
} }
template<typename VT> template<typename VT>
void BoundingSphereImpl<VT>::expandBy(const BoundingBoxImpl<VT>& bb) template<typename BBT>
void BoundingSphereImpl<VT>::expandBy(const BoundingBoxImpl<BBT>& bb)
{ {
if (bb.valid()) if (bb.valid())
{ {
@ -277,7 +280,8 @@ void BoundingSphereImpl<VT>::expandBy(const BoundingBoxImpl<VT>& bb)
} }
template<typename VT> template<typename VT>
void BoundingSphereImpl<VT>::expandRadiusBy(const BoundingBoxImpl<VT>& bb) template<typename BBT>
void BoundingSphereImpl<VT>::expandRadiusBy(const BoundingBoxImpl<BBT>& bb)
{ {
if (bb.valid()) if (bb.valid())
{ {