00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _SO_REPLACED_TEXTURE_ELEMENT_
00025 #define _SO_REPLACED_TEXTURE_ELEMENT_
00026
00053 #include <Inventor/elements/SoSubElement.h>
00054 #include <Inventor/STL/vector>
00055
00056 #ifdef _MSC_VER
00057 #pragma warning( push )
00058 #pragma warning(disable:4251)
00059 #endif
00060
00061 SoEXTENDER_Documented class SoReplacedTextureElement : public SoElement {
00062
00063 SO_ELEMENT_ABSTRACT_HEADER(SoReplacedTextureElement);
00064
00065 public:
00066
00070 virtual void print(FILE *fp) const;
00071
00076 virtual void push(SoState *state) ;
00077
00078 private:
00079
00081 virtual void commonInit();
00082
00086 virtual SbBool matches(const SoElement* elt) const;
00087
00092 virtual SoElement* copyMatchInfo() const;
00093
00094 private:
00095
00096 static void initClass();
00097 static void exitClass();
00098
00099 private:
00100
00101
00102
00103 static SoElement *getElement(SoState *state, SoType type, int stackIndex, SoNode *node) ;
00104
00108 template<typename T>
00109 static T *getElement(SoState *state, int stackIndex, SoNode *node)
00110 {
00111 return static_cast<T*>(getElement(state, T::getClassTypeId(), stackIndex, node));
00112 }
00113
00114
00115 virtual ~SoReplacedTextureElement();
00116
00117
00118 void setNodeId(SoState *state, const SoNode *node);
00119
00120
00121 uint64_t& getNodeId(const int unit) const;
00122
00123 private:
00124
00125
00126 typedef std::vector<uint64_t> SoNodeIdList;
00127 mutable SoNodeIdList m_nodeIdList;
00128 };
00129
00130 #ifdef _MSC_VER
00131 #pragma warning( pop )
00132 #endif
00133
00134 #endif
00135
00136
00137