00001 #ifndef X3DTK_X3D_SHAREDCOORDCOMPUTERSTATEVARIABLES_H 00002 #define X3DTK_X3D_SHAREDCOORDCOMPUTERSTATEVARIABLES_H 00003 00004 #include "StateVariables.h" 00005 00006 #include <list> 00007 #include <map> 00008 #include <utility> 00009 00010 namespace X3DTK { 00011 namespace X3D { 00012 00013 class IndexedFaceSet; 00014 class Transform; 00015 class Coordinate; 00016 00023 class SharedCoordComputerStateVariables : public StateVariables 00024 { 00025 public: 00027 SharedCoordComputerStateVariables(); 00029 virtual ~SharedCoordComputerStateVariables(); 00030 00032 virtual void finish(); 00034 std::map<IndexedFaceSet *, std::pair<bool, std::list<SFNode> > > &find(const std::list<IndexedFaceSet *> &ifslist); 00035 00037 void addNode(Coordinate *C); 00039 bool getNode(Coordinate *C) const; 00040 00041 private: 00042 std::list<SFNode> _coordinateList; 00043 std::map<IndexedFaceSet *, std::pair<bool, std::list<SFNode> > > _ifsmap; 00044 00045 void pfind(IndexedFaceSet *I, SFNode N); 00046 }; 00047 00048 } 00049 } 00050 00051 #endif