From 114dd9bee96233003b640647db0c34af742238a4 Mon Sep 17 00:00:00 2001 From: Darren Ranalli Date: Fri, 29 Jun 2007 20:47:44 +0000 Subject: [PATCH] added handle_wrt_reparent --- direct/src/deadrec/smoothMover.cxx | 18 ++++++++++++++++++ direct/src/deadrec/smoothMover.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/direct/src/deadrec/smoothMover.cxx b/direct/src/deadrec/smoothMover.cxx index 23feb67f4f..8bdef43d54 100644 --- a/direct/src/deadrec/smoothMover.cxx +++ b/direct/src/deadrec/smoothMover.cxx @@ -743,3 +743,21 @@ record_timestamp_delay(double timestamp) { _last_heard_from = now; } + +//////////////////////////////////////////////////////////////////// +// Function: SmoothMover::handle_wrt_reparent +// Access: Private +// Description: Node is being wrtReparented, update recorded +// sample positions to reflect new parent +//////////////////////////////////////////////////////////////////// +void SmoothMover:: +handle_wrt_reparent(NodePath &old_parent, NodePath &new_parent) { + Points::iterator pi; + CPT(TransformState) transform = old_parent.get_transform(new_parent); + const LPoint3f &old_to_new_pos = transform->get_pos(); + const LVecBase3f &old_to_new_hpr = transform->get_hpr(); + for (pi = _points.begin(); pi != _points.end(); pi++) { + (*pi)._pos += old_to_new_pos; + (*pi)._hpr += old_to_new_hpr; + } +} diff --git a/direct/src/deadrec/smoothMover.h b/direct/src/deadrec/smoothMover.h index 432750f5de..d50c188afb 100644 --- a/direct/src/deadrec/smoothMover.h +++ b/direct/src/deadrec/smoothMover.h @@ -111,6 +111,8 @@ PUBLISHED: INLINE float get_smooth_rotational_velocity() const; INLINE const LVecBase3f &get_forward_axis() const; + void handle_wrt_reparent(NodePath &old_parent, NodePath &new_parent); + enum SmoothMode { SM_off, SM_on,