assert not nan

This commit is contained in:
David Rose 2005-02-07 04:09:44 +00:00
parent a24337f7b0
commit c71fd12dc7
3 changed files with 20 additions and 3 deletions

View File

@ -262,6 +262,7 @@ make_invalid() {
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
make_pos_hpr_scale_shear(const LVecBase3f &pos, const LVecBase3f &hpr, make_pos_hpr_scale_shear(const LVecBase3f &pos, const LVecBase3f &hpr,
const LVecBase3f &scale, const LVecBase3f &shear) { const LVecBase3f &scale, const LVecBase3f &shear) {
nassertr(!(pos.is_nan() || hpr.is_nan() || scale.is_nan() || shear.is_nan()) , make_invalid());
// Make a special-case check for the identity transform. // Make a special-case check for the identity transform.
if (pos == LVecBase3f(0.0f, 0.0f, 0.0f) && if (pos == LVecBase3f(0.0f, 0.0f, 0.0f) &&
hpr == LVecBase3f(0.0f, 0.0f, 0.0f) && hpr == LVecBase3f(0.0f, 0.0f, 0.0f) &&
@ -289,6 +290,7 @@ make_pos_hpr_scale_shear(const LVecBase3f &pos, const LVecBase3f &hpr,
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
make_pos_quat_scale_shear(const LVecBase3f &pos, const LQuaternionf &quat, make_pos_quat_scale_shear(const LVecBase3f &pos, const LQuaternionf &quat,
const LVecBase3f &scale, const LVecBase3f &shear) { const LVecBase3f &scale, const LVecBase3f &shear) {
nassertr(!(pos.is_nan() || quat.is_nan() || scale.is_nan() || shear.is_nan()) , make_invalid());
// Make a special-case check for the identity transform. // Make a special-case check for the identity transform.
if (pos == LVecBase3f(0.0f, 0.0f, 0.0f) && if (pos == LVecBase3f(0.0f, 0.0f, 0.0f) &&
quat == LQuaternionf::ident_quat() && quat == LQuaternionf::ident_quat() &&
@ -315,6 +317,7 @@ make_pos_quat_scale_shear(const LVecBase3f &pos, const LQuaternionf &quat,
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
make_mat(const LMatrix4f &mat) { make_mat(const LMatrix4f &mat) {
nassertr(!mat.is_nan(), make_invalid());
// Make a special-case check for the identity matrix. // Make a special-case check for the identity matrix.
if (mat == LMatrix4f::ident_mat()) { if (mat == LMatrix4f::ident_mat()) {
return make_identity(); return make_identity();
@ -335,6 +338,7 @@ make_mat(const LMatrix4f &mat) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
set_pos(const LVecBase3f &pos) const { set_pos(const LVecBase3f &pos) const {
nassertr(!pos.is_nan(), this);
nassertr(!is_invalid(), this); nassertr(!is_invalid(), this);
if (is_identity() || components_given()) { if (is_identity() || components_given()) {
// If we started with a componentwise transform, we keep it that // If we started with a componentwise transform, we keep it that
@ -362,6 +366,7 @@ set_pos(const LVecBase3f &pos) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
set_hpr(const LVecBase3f &hpr) const { set_hpr(const LVecBase3f &hpr) const {
nassertr(!hpr.is_nan(), this);
nassertr(!is_invalid(), this); nassertr(!is_invalid(), this);
// nassertr(has_components(), this); // nassertr(has_components(), this);
return make_pos_hpr_scale_shear(get_pos(), hpr, get_scale(), get_shear()); return make_pos_hpr_scale_shear(get_pos(), hpr, get_scale(), get_shear());
@ -376,6 +381,7 @@ set_hpr(const LVecBase3f &hpr) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
set_quat(const LQuaternionf &quat) const { set_quat(const LQuaternionf &quat) const {
nassertr(!quat.is_nan(), this);
nassertr(!is_invalid(), this); nassertr(!is_invalid(), this);
// nassertr(has_components(), this); // nassertr(has_components(), this);
return make_pos_quat_scale_shear(get_pos(), quat, get_scale(), get_shear()); return make_pos_quat_scale_shear(get_pos(), quat, get_scale(), get_shear());
@ -390,6 +396,7 @@ set_quat(const LQuaternionf &quat) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
set_scale(const LVecBase3f &scale) const { set_scale(const LVecBase3f &scale) const {
nassertr(!scale.is_nan(), this);
nassertr(!is_invalid(), this); nassertr(!is_invalid(), this);
// nassertr(has_components(), this); // nassertr(has_components(), this);
if (quat_given()) { if (quat_given()) {
@ -408,6 +415,7 @@ set_scale(const LVecBase3f &scale) const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
CPT(TransformState) TransformState:: CPT(TransformState) TransformState::
set_shear(const LVecBase3f &shear) const { set_shear(const LVecBase3f &shear) const {
nassertr(!shear.is_nan(), this);
nassertr(!is_invalid(), this); nassertr(!is_invalid(), this);
// nassertr(has_components(), this); // nassertr(has_components(), this);
if (quat_given()) { if (quat_given()) {

View File

@ -32,7 +32,8 @@ set_mass(float m) {
// Description : Vector position assignment // Description : Vector position assignment
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_position(const LPoint3f& pos) { set_position(const LPoint3f &pos) {
nassertv(!pos.is_nan());
_position = pos; _position = pos;
} }
@ -43,6 +44,7 @@ set_position(const LPoint3f& pos) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_position(float x, float y, float z) { set_position(float x, float y, float z) {
nassertv(!LPoint3f(x, y, z).is_nan());
_position.set(x, y, z); _position.set(x, y, z);
} }
@ -55,6 +57,7 @@ set_position(float x, float y, float z) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
reset_position(const LPoint3f &pos) { reset_position(const LPoint3f &pos) {
nassertv(!pos.is_nan());
_position = pos; _position = pos;
_last_position = pos; _last_position = pos;
_velocity.set(0.0f, 0.0f, 0.0f); _velocity.set(0.0f, 0.0f, 0.0f);
@ -68,6 +71,7 @@ reset_position(const LPoint3f &pos) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
reset_orientation(const LOrientationf &orientation) { reset_orientation(const LOrientationf &orientation) {
nassertv(!orientation.is_nan());
_orientation = orientation; _orientation = orientation;
_rotation.set(0.0f, 0.0f, 0.0f); _rotation.set(0.0f, 0.0f, 0.0f);
} }
@ -78,7 +82,7 @@ reset_orientation(const LOrientationf &orientation) {
// Description : Last position assignment // Description : Last position assignment
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_last_position(const LPoint3f& pos) { set_last_position(const LPoint3f &pos) {
_last_position = pos; _last_position = pos;
} }
@ -88,7 +92,8 @@ set_last_position(const LPoint3f& pos) {
// Description : Vector velocity assignment // Description : Vector velocity assignment
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_velocity(const LVector3f& vel) { set_velocity(const LVector3f &vel) {
nassertv(!vel.is_nan());
_velocity = vel; _velocity = vel;
} }
@ -99,6 +104,7 @@ set_velocity(const LVector3f& vel) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_velocity(float x, float y, float z) { set_velocity(float x, float y, float z) {
nassertv(!LVector3f(x, y, z).is_nan());
_velocity.set(x, y, z); _velocity.set(x, y, z);
} }
@ -213,6 +219,7 @@ get_terminal_velocity() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_orientation(const LOrientationf &orientation) { set_orientation(const LOrientationf &orientation) {
nassertv(!orientation.is_nan());
_orientation = orientation; _orientation = orientation;
} }
@ -223,6 +230,7 @@ set_orientation(const LOrientationf &orientation) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void PhysicsObject:: INLINE void PhysicsObject::
set_rotation(const LVector3f &rotation) { set_rotation(const LVector3f &rotation) {
nassertv(!rotation.is_nan());
_rotation = rotation; _rotation = rotation;
} }

View File

@ -103,6 +103,7 @@ get_lcs() const {
if (_oriented) { if (_oriented) {
m=m*_orientation; m=m*_orientation;
} }
nassertr(!m.is_nan(), m);
return m; return m;
} }