31 if (max_node != NULL) {
32 const TCHAR *max_name = max_node->GetName();
36 wcstombs(name_mb, max_name, 1023);
43 _max_node = (INode *)NULL;
47 _joint_type = JT_none;
52 _parent->_children.push_back(
this);
72 if (_max_node == (INode *)NULL) {
83 Control *c = max_node->GetTMController();
84 if (_max_node->GetBoneNodeOnOff() ||
86 ((c->ClassID() == BIPSLAVE_CONTROL_CLASS_ID) ||
87 (c->ClassID() == BIPBODY_CONTROL_CLASS_ID) ||
88 (c->ClassID() == FOOTPRINT_CLASS_ID)))) {
91 _joint_type = JT_node_joint;
93 _parent->mark_joint_parent();
107 return (_max_node != (INode *)NULL);
119 nassertr(_max_node != (INode *)NULL, _max_node);
125 set_joint(
bool onoff) {
127 _joint_type = JT_joint;
129 _joint_type = JT_none;
140 return _joint_type == JT_joint || _joint_type == JT_pseudo_joint;
151 return _joint_type == JT_joint_parent;
162 return _joint_type == JT_node_joint;
177 Children::const_iterator ci;
178 for (ci = _children.begin(); ci != _children.end(); ++ci) {
191 mark_joint_parent() {
192 if (_joint_type == JT_none) {
193 _joint_type = JT_joint_parent;
195 _parent->mark_joint_parent();
209 check_pseudo_joints(
bool joint_above) {
210 if (_joint_type == JT_joint_parent && joint_above) {
214 _joint_type = JT_pseudo_joint;
217 if (_joint_type == JT_joint) {
225 if (_joint_type != JT_none) {
226 Children::const_iterator ci;
227 for (ci = _children.begin(); ci != _children.end(); ++ci) {
229 child->check_pseudo_joints(joint_above);
bool is_joint() const
Returns true if the node should be treated as a joint by the converter.
bool is_node_joint() const
Returns true if the node is the parent or ancestor of a joint.
void from_INode(INode *max_node)
Indicates an associated between the MaxNodeDesc and some Max Node instance.
The main glue of the egg hierarchy, this corresponds to the <Group>, <Instance>, and <Joint> type nod...
bool is_joint_parent() const
Returns true if the node is the parent or ancestor of a joint.
This corresponds to an <Xfm$Anim_S$> entry, which is a collection of up to nine <S$Anim> entries that...
Describes a single instance of a node in the Max scene graph, relating it to the corresponding egg st...
MaxNodeDesc(MaxNodeDesc *parent=NULL, INode *max_node=NULL)
Creates a MaxNodeDesc.
INode * get_max_node() const
Returns the INode associated with this node.
bool has_max_node() const
Returns true if a Max INode has been associated with this node, false otherwise.
TypeHandle is the identifier used to differentiate C++ class types.