softNodeTree.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // Filename: softNodeTree.h
  2. // Created by: masad (03Oct03)
  3. //
  4. ////////////////////////////////////////////////////////////////////
  5. //
  6. // PANDA 3D SOFTWARE
  7. // Copyright (c) 2003, Disney Enterprises, Inc. All rights reserved
  8. //
  9. // All use of this software is subject to the terms of the Panda 3d
  10. // Software license. You should have received a copy of this license
  11. // along with this source code; you will also find a current copy of
  12. // the license at http://www.panda3d.org/license.txt .
  13. //
  14. // To contact the maintainers of this program write to
  15. // [email protected] .
  16. //
  17. ////////////////////////////////////////////////////////////////////
  18. #ifndef SOFTNODETREE_H
  19. #define SOFTNODETREE_H
  20. #include "pandatoolbase.h"
  21. #include "softNodeDesc.h"
  22. #include <SAA.h>
  23. class EggGroup;
  24. class EggTable;
  25. class EggXfmSAnim;
  26. class EggData;
  27. class EggGroupNode;
  28. ////////////////////////////////////////////////////////////////////
  29. // Class : SoftNodeTree
  30. // Description : Describes a complete tree of soft nodes for
  31. // conversion.
  32. ////////////////////////////////////////////////////////////////////
  33. class SoftNodeTree {
  34. public:
  35. SoftNodeTree();
  36. SoftNodeDesc *build_node(SAA_Scene *scene, SAA_Elem *model);
  37. bool build_complete_hierarchy(SAA_Scene &scene, SAA_Database &database);
  38. void handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, const char *node_name);
  39. // bool build_selected_hierarchy(SAA_Scene *s, SAA_Database *d, char *scene_name);
  40. int get_num_nodes() const;
  41. SoftNodeDesc *get_node(int n) const;
  42. SoftNodeDesc *get_node(string name) const;
  43. char *GetRootName(const char *);
  44. char *GetModelNoteInfo(SAA_Scene *, SAA_Elem *);
  45. char *GetName(SAA_Scene *scene, SAA_Elem *element);
  46. char *GetFullName(SAA_Scene *scene, SAA_Elem *element);
  47. EggGroupNode *get_egg_root() {return _egg_root;}
  48. EggGroup *get_egg_group(SoftNodeDesc *node_desc);
  49. EggTable *get_egg_table(SoftNodeDesc *node_desc);
  50. EggXfmSAnim *get_egg_anim(SoftNodeDesc *node_desc);
  51. void clear_egg(EggData *egg_data, EggGroupNode *egg_root, EggGroupNode *skeleton_node);
  52. PT(SoftNodeDesc) _root;
  53. float _fps;
  54. int _use_prefix;
  55. char *_search_prefix;
  56. private:
  57. EggData *_egg_data;
  58. EggGroupNode *_egg_root;
  59. EggGroupNode *_skeleton_node;
  60. SoftNodeDesc *r_build_node(SoftNodeDesc *parent_node, const string &path);
  61. void reparent_flatten(SoftNodeDesc *node);
  62. typedef pmap<string, SoftNodeDesc *> NodesByName;
  63. NodesByName _nodes_by_name;
  64. typedef pvector<SoftNodeDesc *> Nodes;
  65. Nodes _nodes;
  66. };
  67. #endif