00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
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
00032
00033
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
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