*** empty log message ***

This commit is contained in:
David Rose 2001-02-03 00:23:55 +00:00
parent 0f0b9ec6c6
commit 67873faecb
3 changed files with 14 additions and 5 deletions

View File

@ -45,7 +45,7 @@ operator = (const CollisionHandlerEvent::SortEntries &) {
// %fn - the name of the "from" object's node
// %in - the name of the "into" object's node
// %ft - 't' if "from" is tangible, 'i' if intangible
// %ft - 't' if "into" is tangible, 'i' if intangible
// %it - 't' if "into" is tangible, 'i' if intangible
//
// The event name will be based on the in_pattern
// string specified here, with all occurrences of the
@ -82,7 +82,7 @@ get_in_pattern() const {
// Description: Sets the pattern string that indicates how the event
// names are generated when a collision between two
// particular nodes is *still* detected. This event is
// each consecutive time a collision between two
// thrown each consecutive time a collision between two
// particular nodes is detected, starting with the
// second time.
//

View File

@ -17,6 +17,11 @@ class ProjectionNode;
// Description : A finite line segment, with two specific endpoints
// but no thickness. It's similar to a CollisionRay,
// except it does not continue to infinity.
//
// It does have an ordering, from point A to point B.
// If more than a single point of the segment is
// intersecting a solid, the reported intersection point
// is generally the closest on the segment to point A.
////////////////////////////////////////////////////////////////////
class EXPCL_PANDA CollisionSegment : public CollisionSolid {
PUBLISHED:

View File

@ -186,7 +186,7 @@ test_intersection_from_segment(CollisionHandler *record,
DCAST_INTO_R(segment, entry.get_from(), 0);
LPoint3f from_a = segment->get_point_a() * entry.get_wrt_space();
LVector3f from_b = segment->get_point_b() * entry.get_wrt_space();
LPoint3f from_b = segment->get_point_b() * entry.get_wrt_space();
LVector3f from_direction = from_b - from_a;
double t1, t2;
@ -210,9 +210,13 @@ test_intersection_from_segment(CollisionHandler *record,
LPoint3f into_intersection_point;
if (t1 < 0.0) {
into_intersection_point = from_a + t2 * from_direction;
// Point a is within the sphere. The first intersection point is
// point a itself.
into_intersection_point = from_a;
} else {
into_intersection_point = from_b + t1 * from_direction;
// Point a is outside the sphere, and point b is either inside the
// sphere or beyond it. The first intersection point is at t1.
into_intersection_point = from_a + t1 * from_direction;
}
new_entry->set_into_intersection_point(into_intersection_point);