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