00001 #ifndef COIN_SOTEXTURECOORDINATEPLANE_H
00002 #define COIN_SOTEXTURECOORDINATEPLANE_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/nodes/SoTextureCoordinateFunction.h>
00029 #include <Inventor/fields/SoSFVec3f.h>
00030 #include <Inventor/SbVec4f.h>
00031 #include <Inventor/SbVec3f.h>
00032
00033 class COIN_DLL_API SoTextureCoordinatePlane : public SoTextureCoordinateFunction {
00034 typedef SoTextureCoordinateFunction inherited;
00035
00036 SO_NODE_HEADER(SoTextureCoordinatePlane);
00037
00038 public:
00039 static void initClass(void);
00040 SoTextureCoordinatePlane(void);
00041
00042 SoSFVec3f directionS;
00043 SoSFVec3f directionT;
00044
00045 virtual void doAction(SoAction * action);
00046 virtual void GLRender(SoGLRenderAction * action);
00047 virtual void pick(SoPickAction * action);
00048 virtual void callback(SoCallbackAction * action);
00049
00050 protected:
00051 virtual ~SoTextureCoordinatePlane();
00052
00053 private:
00054 static const SbVec4f &generate(void *userdata,
00055 const SbVec3f &p,
00056 const SbVec3f &n);
00057 static void handleTexgen(void *data);
00058
00059
00060
00061
00062 typedef struct {
00063 SbVec3f s, t;
00064 float mul_s, mul_t;
00065 SbVec4f ret;
00066 } gencache_t;
00067
00068 gencache_t gencache;
00069 };
00070
00071 #endif // !COIN_SOTEXTURECOORDINATEPLANE_H