00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __TWOSIDEDMATERIAL_H__
00030 #define __TWOSIDEDMATERIAL_H__
00031
00032 #include "X3DMaterialNode.h"
00033 #include "SFFloat.h"
00034 #include "SFColor.h"
00035
00036 namespace H3D {
00037
00059 class H3DAPI_API TwoSidedMaterial : public X3DMaterialNode {
00060 public:
00061
00063 TwoSidedMaterial( Inst< DisplayList > _displayList = 0,
00064 Inst< SFFloat > _ambientIntensity = 0,
00065 Inst< SFColor > _diffuseColor = 0,
00066 Inst< SFColor > _emissiveColor = 0,
00067 Inst< SFNode > _metadata = 0,
00068 Inst< SFFloat > _shininess = 0,
00069 Inst< SFColor > _specularColor = 0,
00070 Inst< SFFloat > _transparency = 0,
00071 Inst< SFFloat > _backAmbientIntensity = 0,
00072 Inst< SFColor > _backDiffuseColor = 0,
00073 Inst< SFColor > _backEmissiveColor = 0,
00074 Inst< SFFloat > _backShininess = 0,
00075 Inst< SFColor > _backSpecularColor = 0,
00076 Inst< SFFloat > _backTransparency = 0,
00077 Inst< SFBool > _separateBackColor = 0);
00078
00080 virtual void render();
00081
00086 virtual void preRender() {
00087 glPushAttrib( GL_COLOR_BUFFER_BIT | GL_LIGHTING_BIT );
00088 }
00089
00093 virtual void postRender() {
00094 glPopAttrib();
00095 }
00096
00099 virtual bool isTransparent() {
00100 return transparency->getValue() > 0 ||
00101 (separateBackColor->getValue() && backTransparency->getValue() > 0);
00102 }
00103
00115 auto_ptr< SFFloat > ambientIntensity;
00116
00126 auto_ptr< SFColor > diffuseColor;
00127
00137 auto_ptr< SFColor > emissiveColor;
00138
00148 auto_ptr< SFFloat > shininess;
00149
00157 auto_ptr< SFColor > specularColor;
00158
00167 auto_ptr< SFFloat > transparency;
00168
00178 auto_ptr< SFFloat > backAmbientIntensity;
00179
00189 auto_ptr< SFColor > backDiffuseColor;
00190
00191
00201 auto_ptr< SFColor > backEmissiveColor;
00202
00212 auto_ptr< SFFloat > backShininess;
00213
00214
00224 auto_ptr< SFColor > backSpecularColor;
00225
00235 auto_ptr< SFFloat > backTransparency;
00236
00247 auto_ptr< SFBool > separateBackColor;
00248
00250 static H3DNodeDatabase database;
00251 };
00252 }
00253
00254 #endif