Panda3D
maxNodeTree.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file maxNodeTree.h
10  * @author crevilla
11  * from mayaNodeTree.h created by: drose (06Jun03)
12  */
13 
14 #ifndef MAXNODETREE_H
15 #define MAXNODETREE_H
16 
17 class EggData;
18 class EggGroupNode;
19 
20 /**
21  * Describes a complete tree of max nodes for conversion.
22  */
23 class MaxNodeTree {
24 public:
25  MaxNodeTree();
26  MaxNodeDesc *build_node(INode *max_node);
27  MaxNodeDesc *build_joint(INode *max_node, MaxNodeDesc *node_joint);
28  bool build_complete_hierarchy(INode *root, ULONG *selection_list, int len);
29  MaxNodeDesc *find_node(INode *max_node);
30  MaxNodeDesc *find_joint(INode *max_node);
31 
32  int get_num_nodes() const;
33  MaxNodeDesc *get_node(int n) const;
34 
35  void clear_egg(EggData *egg_data, EggGroupNode *egg_root,
36  EggGroupNode *skeleton_node);
37  EggGroup *get_egg_group(MaxNodeDesc *node_desc);
38  EggTable *get_egg_table(MaxNodeDesc *node_desc);
40 
41  MaxNodeDesc* _root;
42  PN_stdfloat _fps;
43  // the flag for the setting up collision bool _has_collision;
44  // EggGroup::CollideFlags _cf_type; EggGroup::CollisionSolidType _cs_type;
45  bool _export_mesh;
46 
47 private:
48  EggData *_egg_data;
49  EggGroupNode *_egg_root;
50  EggGroupNode *_skeleton_node;
51 
52  MaxNodeDesc *r_build_node(INode *max_node);
53  MaxNodeDesc *r_build_joint(MaxNodeDesc *node_desc, INode *max_node);
54  bool node_in_list(ULONG handle, ULONG *list, int len);
55  bool r_build_hierarchy(INode *root, ULONG *selection_list, int len);
56  bool is_joint(INode *node);
57  void set_collision_tags(MaxNodeDesc *node_desc, EggGroup *egg_group);
58 
60  NodesByPath _nodes_by_path;
61 
63  Nodes _nodes;
64 };
65 
66 #endif
EggGroup * get_egg_group(MaxNodeDesc *node_desc)
Returns the EggGroupNode corresponding to the group or joint for the indicated node.
A base class for nodes in the hierarchy that are not leaf nodes.
Definition: eggGroupNode.h:46
int get_num_nodes() const
Returns the total number of nodes in the hierarchy, not counting the root node.
EggXfmSAnim * get_egg_anim(MaxNodeDesc *node_desc)
Returns the anim table corresponding to the joint for the indicated node.
MaxNodeDesc * build_node(INode *max_node)
Returns a pointer to the node corresponding to the indicated INode object, creating it first if neces...
Definition: maxNodeTree.cxx:34
bool build_complete_hierarchy(INode *root, ULONG *selection_list, int len)
Walks through the complete Max hierarchy and builds up the corresponding tree.
Definition: maxNodeTree.cxx:88
MaxNodeDesc * find_joint(INode *max_node)
The recursive implementation of build_node().
This is the primary interface into all the egg data, and the root of the egg file structure.
Definition: eggData.h:37
MaxNodeDesc * build_joint(INode *max_node, MaxNodeDesc *node_joint)
Returns a pointer to the node corresponding to the indicated INode object, creating it first if neces...
Definition: maxNodeTree.cxx:49
MaxNodeDesc * get_node(int n) const
Returns the nth node in the hierarchy, in an arbitrary ordering.
The main glue of the egg hierarchy, this corresponds to the <Group>, <Instance>, and <Joint> type nod...
Definition: eggGroup.h:34
void clear_egg(EggData *egg_data, EggGroupNode *egg_root, EggGroupNode *skeleton_node)
Removes all of the references to generated egg structures from the tree, and prepares the tree for ge...
This corresponds to an <Xfm$Anim_S$> entry, which is a collection of up to nine <S$Anim> entries that...
Definition: eggXfmSAnim.h:28
Describes a single instance of a node in the Max scene graph, relating it to the corresponding egg st...
Definition: maxNodeDesc.h:22
MaxNodeDesc * find_node(INode *max_node)
The recursive implementation of build_node().
This corresponds to a.
Definition: eggTable.h:27
EggTable * get_egg_table(MaxNodeDesc *node_desc)
Returns the EggTable corresponding to the joint for the indicated node.
Describes a complete tree of max nodes for conversion.
Definition: maxNodeTree.h:23