Panda3D
|
00001 // Filename: softNodeTree.h 00002 // Created by: masad (03Oct03) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) Carnegie Mellon University. All rights reserved. 00008 // 00009 // All use of this software is subject to the terms of the revised BSD 00010 // license. You should have received a copy of this license along 00011 // with this source code in a file named "LICENSE." 00012 // 00013 //////////////////////////////////////////////////////////////////// 00014 00015 #ifndef SOFTNODETREE_H 00016 #define SOFTNODETREE_H 00017 00018 #include "pandatoolbase.h" 00019 #include "softNodeDesc.h" 00020 00021 #include <SAA.h> 00022 00023 class EggGroup; 00024 class EggTable; 00025 class EggXfmSAnim; 00026 class EggData; 00027 class EggGroupNode; 00028 00029 00030 //////////////////////////////////////////////////////////////////// 00031 // Class : SoftNodeTree 00032 // Description : Describes a complete tree of soft nodes for 00033 // conversion. 00034 //////////////////////////////////////////////////////////////////// 00035 class SoftNodeTree { 00036 public: 00037 SoftNodeTree(); 00038 SoftNodeDesc *build_node(SAA_Scene *scene, SAA_Elem *model); 00039 bool build_complete_hierarchy(SAA_Scene &scene, SAA_Database &database); 00040 void handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, const char *node_name); 00041 // bool build_selected_hierarchy(SAA_Scene *s, SAA_Database *d, char *scene_name); 00042 00043 int get_num_nodes() const; 00044 SoftNodeDesc *get_node(int n) const; 00045 SoftNodeDesc *get_node(string name) const; 00046 00047 char *GetRootName(const char *); 00048 char *GetModelNoteInfo(SAA_Scene *, SAA_Elem *); 00049 char *GetName(SAA_Scene *scene, SAA_Elem *element); 00050 char *GetFullName(SAA_Scene *scene, SAA_Elem *element); 00051 00052 EggGroupNode *get_egg_root() {return _egg_root;} 00053 EggGroup *get_egg_group(SoftNodeDesc *node_desc); 00054 EggTable *get_egg_table(SoftNodeDesc *node_desc); 00055 EggXfmSAnim *get_egg_anim(SoftNodeDesc *node_desc); 00056 00057 void clear_egg(EggData *egg_data, EggGroupNode *egg_root, EggGroupNode *skeleton_node); 00058 00059 PT(SoftNodeDesc) _root; 00060 PN_stdfloat _fps; 00061 int _use_prefix; 00062 char *_search_prefix; 00063 00064 00065 private: 00066 00067 EggData *_egg_data; 00068 EggGroupNode *_egg_root; 00069 EggGroupNode *_skeleton_node; 00070 00071 SoftNodeDesc *r_build_node(SoftNodeDesc *parent_node, const string &path); 00072 00073 typedef pmap<string, SoftNodeDesc *> NodesByName; 00074 NodesByName _nodes_by_name; 00075 00076 typedef pvector<SoftNodeDesc *> Nodes; 00077 Nodes _nodes; 00078 }; 00079 00080 #endif