Simplify code

This commit is contained in:
Benau 2016-09-24 10:05:15 +08:00
parent 111fc297d5
commit 123e667ab4
3 changed files with 19 additions and 21 deletions

View File

@ -31,10 +31,8 @@ class ArenaNode3D : public ArenaNode,
public: public:
ArenaNode3D(const Vec3 &p0, const Vec3 &p1, const Vec3 &p2, const Vec3 &p3, ArenaNode3D(const Vec3 &p0, const Vec3 &p1, const Vec3 &p2, const Vec3 &p3,
const Vec3 &normal, unsigned int node_index) const Vec3 &normal, unsigned int node_index)
: ArenaNode(p0, p1, p2, p3, normal, node_index) : ArenaNode(p0, p1, p2, p3, normal, node_index),
{ BoundingBox3D(p0, p1, p2, p3, normal) {}
BoundingBox3D::init(p0, p1, p2, p3, normal);
}
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
virtual bool pointInside(const Vec3& p, virtual bool pointInside(const Vec3& p,
bool ignore_vertical = false) const OVERRIDE bool ignore_vertical = false) const OVERRIDE

View File

@ -33,21 +33,8 @@ private:
public: public:
// ------------------------------------------------------------------------ // ------------------------------------------------------------------------
bool pointInside(const Vec3& p) const BoundingBox3D(const Vec3& p0, const Vec3& p1, const Vec3& p2,
{ const Vec3& p3, const Vec3& normal)
float side = p.sideofPlane(m_box_faces[0][0], m_box_faces[0][1],
m_box_faces[0][2]);
for (int i = 1; i < 6; i++)
{
if (side * p.sideofPlane(m_box_faces[i][0], m_box_faces[i][1],
m_box_faces[i][2]) < 0)
return false;
}
return true;
}
// ------------------------------------------------------------------------
void init(const Vec3& p0, const Vec3& p1, const Vec3& p2, const Vec3& p3,
const Vec3& normal)
{ {
// Compute the node bounding box used by pointInside // Compute the node bounding box used by pointInside
Vec3 box_corners[8]; Vec3 box_corners[8];
@ -78,6 +65,20 @@ public:
m_box_faces[i][j] = box_faces[i][j]; m_box_faces[i][j] = box_faces[i][j];
} }
} }
// ------------------------------------------------------------------------
bool pointInside(const Vec3& p, bool ignore_vertical = false) const
{
float side = p.sideofPlane(m_box_faces[0][0], m_box_faces[0][1],
m_box_faces[0][2]);
for (int i = 1; i < 6; i++)
{
if (side * p.sideofPlane(m_box_faces[i][0], m_box_faces[i][1],
m_box_faces[i][2]) < 0)
return false;
}
return true;
}
}; };
#endif #endif

View File

@ -24,9 +24,8 @@ DriveNode3D::DriveNode3D(const Vec3 &p0, const Vec3 &p1, const Vec3 &p2,
unsigned int node_index, bool invisible, unsigned int node_index, bool invisible,
bool ai_ignore) bool ai_ignore)
: DriveNode(p0, p1, p2, p3, normal, node_index, invisible, : DriveNode(p0, p1, p2, p3, normal, node_index, invisible,
ai_ignore) ai_ignore), BoundingBox3D(p0, p1, p2, p3, normal)
{ {
BoundingBox3D::init(p0, p1, p2, p3, normal);
m_line = core::line3df(m_lower_center.toIrrVector(), m_line = core::line3df(m_lower_center.toIrrVector(),
m_upper_center.toIrrVector()); m_upper_center.toIrrVector());
} // DriveNode3D } // DriveNode3D