maxNodeTree.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Filename: maxNodeTree.h
  2. // Created by: crevilla
  3. // from mayaNodeTree.h created by: drose (06Jun03)
  4. //
  5. ////////////////////////////////////////////////////////////////////
  6. //
  7. // PANDA 3D SOFTWARE
  8. // Copyright (c) Carnegie Mellon University. All rights reserved.
  9. //
  10. // All use of this software is subject to the terms of the revised BSD
  11. // license. You should have received a copy of this license along
  12. // with this source code in a file named "LICENSE."
  13. //
  14. ////////////////////////////////////////////////////////////////////
  15. #ifndef MAXNODETREE_H
  16. #define MAXNODETREE_H
  17. class EggData;
  18. class EggGroupNode;
  19. ////////////////////////////////////////////////////////////////////
  20. // Class : MaxNodeTree
  21. // Description : Describes a complete tree of max nodes for
  22. // conversion.
  23. ////////////////////////////////////////////////////////////////////
  24. class MaxNodeTree {
  25. public:
  26. MaxNodeTree();
  27. MaxNodeDesc *build_node(INode *max_node);
  28. MaxNodeDesc *build_joint(INode *max_node, MaxNodeDesc *node_joint);
  29. bool build_complete_hierarchy(INode *root, ULONG *selection_list, int len);
  30. MaxNodeDesc *find_node(INode *max_node);
  31. MaxNodeDesc *find_joint(INode *max_node);
  32. int get_num_nodes() const;
  33. MaxNodeDesc *get_node(int n) const;
  34. void clear_egg(EggData *egg_data, EggGroupNode *egg_root,
  35. EggGroupNode *skeleton_node);
  36. EggGroup *get_egg_group(MaxNodeDesc *node_desc);
  37. EggTable *get_egg_table(MaxNodeDesc *node_desc);
  38. EggXfmSAnim *get_egg_anim(MaxNodeDesc *node_desc);
  39. MaxNodeDesc* _root;
  40. float _fps;
  41. // the flag for the setting up collision
  42. bool _has_collision;
  43. EggGroup::CollideFlags _cf_type;
  44. EggGroup::CollisionSolidType _cs_type;
  45. bool _export_mesh;
  46. private:
  47. EggData *_egg_data;
  48. EggGroupNode *_egg_root;
  49. EggGroupNode *_skeleton_node;
  50. MaxNodeDesc *r_build_node(INode *max_node);
  51. MaxNodeDesc *r_build_joint(MaxNodeDesc *node_desc, INode *max_node);
  52. bool node_in_list(ULONG handle, ULONG *list, int len);
  53. bool r_build_hierarchy(INode *root, ULONG *selection_list, int len);
  54. bool is_joint(INode *node);
  55. typedef pmap<ULONG, MaxNodeDesc *> NodesByPath;
  56. NodesByPath _nodes_by_path;
  57. typedef pvector<MaxNodeDesc *> Nodes;
  58. Nodes _nodes;
  59. };
  60. #endif