00001 #ifndef COIN_SOTEXTURE3_H
00002 #define COIN_SOTEXTURE3_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/nodes/SoSubNode.h>
00028 #include <Inventor/fields/SoSFEnum.h>
00029 #include <Inventor/fields/SoSFImage3.h>
00030 #include <Inventor/fields/SoMFString.h>
00031 #include <Inventor/fields/SoSFColor.h>
00032 #include <Inventor/elements/SoTextureImageElement.h>
00033
00034 class SoFieldSensor;
00035 class SoSensor;
00036
00037 class COIN_DLL_API SoTexture3 : public SoNode {
00038 typedef SoNode inherited;
00039
00040 SO_NODE_HEADER(SoTexture3);
00041
00042 public:
00043 static void initClass(void);
00044 SoTexture3(void);
00045
00046 enum Model {
00047 MODULATE = SoTextureImageElement::MODULATE,
00048 DECAL = SoTextureImageElement::DECAL,
00049 BLEND = SoTextureImageElement::BLEND
00050 };
00051
00052 enum Wrap {
00053 REPEAT = SoTextureImageElement::REPEAT,
00054 CLAMP = SoTextureImageElement::CLAMP
00055 };
00056
00057 SoMFString filenames;
00058 SoSFImage3 images;
00059 SoSFEnum wrapR;
00060 SoSFEnum wrapS;
00061 SoSFEnum wrapT;
00062 SoSFEnum model;
00063 SoSFColor blendColor;
00064
00065 virtual void doAction(SoAction *action);
00066 virtual void GLRender(SoGLRenderAction *action);
00067 virtual void callback(SoCallbackAction *action);
00068
00069 protected:
00070 virtual ~SoTexture3();
00071
00072 virtual SbBool readInstance(SoInput *in, unsigned short flags);
00073 virtual void notify(SoNotList *list);
00074 int getReadStatus(void);
00075 void setReadStatus(int s);
00076
00077 private:
00078 SbBool loadFilenames(SoInput * in = NULL);
00079 int readstatus;
00080 class SoGLImage *glimage;
00081 SbBool glimagevalid;
00082
00083 class SoFieldSensor *filenamesensor;
00084 static void filenameSensorCB(void *, SoSensor *);
00085 };
00086
00087 #endif // !COIN_SOTEXTURE3_H