Panda3D

softNodeTree.h

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
 All Classes Functions Variables Enumerations