*** empty log message ***

This commit is contained in:
David Rose 2001-07-18 02:46:06 +00:00
parent dc1fe04b92
commit aacd1fe81a
3 changed files with 49 additions and 16 deletions

View File

@ -428,22 +428,24 @@ ls(ostream &out, int indent_level) const {
////////////////////////////////////////////////////////////////////
INLINE void NodePath::
ls_transitions() const {
ls_transitions(nout);
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::ls_transitions
// Access: Published
// Description: Lists all the nodes at and below the current path
// hierarchically, along with all the transitions on the
// arcs between them.
////////////////////////////////////////////////////////////////////
INLINE void NodePath::
ls_transitions(ostream &out, int indent_level) const {
nassertv(verify_connectivity());
nassertv(!is_empty());
r_list_transitions(out, indent_level);
r_list_transitions(nout, 0);
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::ls_transforms
// Access: Published
// Description: Lists only the nodes at and below this path that have
// transform matrices set, and the matrices they have.
////////////////////////////////////////////////////////////////////
INLINE void NodePath::
ls_transforms() const {
nassertv(verify_connectivity());
nassertv(!is_empty());
r_list_transforms(nout, 0);
}
////////////////////////////////////////////////////////////////////

View File

@ -392,9 +392,13 @@ find_singular_transform() const {
nassertr(!is_empty(), NodePath::fail());
if (has_mat()) {
LMatrix4f mat;
if (!mat.invert_from(get_mat())) {
LMatrix4f mat = get_mat();
LMatrix4f inv_mat;
bool ok = inv_mat.invert_from(mat);
if (!ok) {
// Here's a singular matrix!
sgmanip_cat.info()
<< "Singular transform at: " << *this << "\n";
return *this;
}
}
@ -3132,6 +3136,32 @@ r_list_transitions(ostream &out, int indent_level) const {
}
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::r_list_transforms
// Access: Private
// Description: The recursive implementation of ls_transforms().
////////////////////////////////////////////////////////////////////
void NodePath::
r_list_transforms(ostream &out, int indent_level) const {
if (has_mat()) {
indent(out, indent_level) << *this << ":\n";
get_mat().write(out, indent_level + 2);
indent_level += 4;
}
Node *bottom_node = node();
nassertv(bottom_node != (Node *)NULL);
int num_children = bottom_node->get_num_children(_graph_type);
for (int i = 0; i < num_children; i++) {
NodeRelation *child_arc = bottom_node->get_child(_graph_type, i);
NodePath next(*this);
next.extend_by(child_arc);
next.r_list_transforms(out, indent_level);
}
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::r_adjust_all_priorities
// Access: Private

View File

@ -248,7 +248,7 @@ PUBLISHED:
INLINE void ls() const;
INLINE void ls(ostream &out, int indent_level = 0) const;
INLINE void ls_transitions() const;
INLINE void ls_transitions(ostream &out, int indent_level = 0) const;
INLINE void ls_transforms() const;
void analyze() const;
int flatten_light();
@ -541,6 +541,7 @@ private:
void r_list_descendants(ostream &out, int indent_level) const;
void r_list_transitions(ostream &out, int indent_level) const;
void r_list_transforms(ostream &out, int indent_level) const;
void r_adjust_all_priorities(NodeRelation *arc, int adjustment);
void r_clear_wrt_cache(NodeRelation *arc);