From e508c077655f8aa0afda298e39e8125cb368f391 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 1 Apr 2011 12:24:08 +0000 Subject: [PATCH] Add almost completely useless flip() method --- panda/src/collide/collisionPlane.I | 10 ++++++++++ panda/src/collide/collisionPlane.h | 2 ++ panda/src/mathutil/plane_src.I | 16 +++++++++++++++- panda/src/mathutil/plane_src.h | 4 ++-- 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/panda/src/collide/collisionPlane.I b/panda/src/collide/collisionPlane.I index 9085294176..1efd76d7c2 100644 --- a/panda/src/collide/collisionPlane.I +++ b/panda/src/collide/collisionPlane.I @@ -99,3 +99,13 @@ INLINE const Planef &CollisionPlane:: get_plane() const { return _plane; } + +//////////////////////////////////////////////////////////////////// +// Function: CollisionPlane::flip +// Access: Published +// Description: Convenience method to flip the plane in-place. +//////////////////////////////////////////////////////////////////// +INLINE void CollisionPlane:: +flip() { + _plane.flip(); +} diff --git a/panda/src/collide/collisionPlane.h b/panda/src/collide/collisionPlane.h index 68490e8f03..1d3d8b5eb6 100644 --- a/panda/src/collide/collisionPlane.h +++ b/panda/src/collide/collisionPlane.h @@ -55,6 +55,8 @@ PUBLISHED: INLINE void set_plane(const Planef &plane); INLINE const Planef &get_plane() const; + INLINE void flip(); + protected: virtual PT(BoundingVolume) compute_internal_bounds() const; diff --git a/panda/src/mathutil/plane_src.I b/panda/src/mathutil/plane_src.I index 579761d89b..ad96464568 100644 --- a/panda/src/mathutil/plane_src.I +++ b/panda/src/mathutil/plane_src.I @@ -66,7 +66,7 @@ FLOATNAME(Plane)(const FLOATNAME(LPoint3) &a, const FLOATNAME(LPoint3) &b, // a point within the plane. //////////////////////////////////////////////////////////////////// INLINE_MATHUTIL FLOATNAME(Plane):: -FLOATNAME(Plane)(const FLOATNAME(LVector3) &normal, +FLOATNAME(Plane)(const FLOATNAME(LVector3) &normal, const FLOATNAME(LPoint3) &point) { FLOATNAME(LVector3) p = ::normalize(normal); @@ -177,6 +177,20 @@ project(const FLOATNAME(LPoint3) &point) const { return point - get_normal() * dist_to_plane(point); } +//////////////////////////////////////////////////////////////////// +// Function: Plane::flip +// Access: Published +// Description: Convenience method that flips the plane in-place. +// This is done by simply flipping the normal vector. +//////////////////////////////////////////////////////////////////// +INLINE_MATHUTIL void FLOATNAME(Plane):: +flip() { + _v.v._0 = -_v.v._0; + _v.v._1 = -_v.v._1; + _v.v._2 = -_v.v._2; + // We don't flip D, that would make the plane flip over the origin. +} + //////////////////////////////////////////////////////////////////// // Function: Plane::intersects_line // Access: Published diff --git a/panda/src/mathutil/plane_src.h b/panda/src/mathutil/plane_src.h index 05fc8bf533..25aeec6341 100644 --- a/panda/src/mathutil/plane_src.h +++ b/panda/src/mathutil/plane_src.h @@ -21,7 +21,7 @@ class EXPCL_PANDA_MATHUTIL FLOATNAME(Plane) : public FLOATNAME(LVecBase4) { PUBLISHED: INLINE_MATHUTIL FLOATNAME(Plane)(); INLINE_MATHUTIL FLOATNAME(Plane)(const FLOATNAME(LVecBase4) ©); - INLINE_MATHUTIL FLOATNAME(Plane)(const FLOATNAME(LPoint3) &a, + INLINE_MATHUTIL FLOATNAME(Plane)(const FLOATNAME(LPoint3) &a, const FLOATNAME(LPoint3) &b, const FLOATNAME(LPoint3) &c); INLINE_MATHUTIL FLOATNAME(Plane)(const FLOATNAME(LVector3) &normal, @@ -42,7 +42,7 @@ PUBLISHED: INLINE_MATHUTIL FLOATTYPE dist_to_plane(const FLOATNAME(LPoint3) &point) const; INLINE_MATHUTIL FLOATNAME(LPoint3) project(const FLOATNAME(LPoint3) &point) const; - + INLINE_MATHUTIL void flip(); INLINE_MATHUTIL bool intersects_line(FLOATNAME(LPoint3) &intersection_point, const FLOATNAME(LPoint3) &p1,