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 __FOG_H__
00030 #define __FOG_H__
00031
00032 #include "X3DBindableNode.h"
00033 #include "X3DFogObject.h"
00034
00035 namespace H3D {
00057 class H3DAPI_API Fog :
00058 public X3DBindableNode,
00059 public X3DFogObject {
00060 public:
00062 Fog( Inst< SFSetBind > _set_bind = 0,
00063 Inst< SFNode > _metadata = 0,
00064 Inst< SFTime > _bindTime = 0,
00065 Inst< SFBool > _isBound = 0,
00066 Inst< SFColor > _color = 0,
00067 Inst< SFString > _fogType = 0,
00068 Inst< SFFloat > _visibilityRange = 0 );
00069
00071 static inline Fog *getActive() {
00072 return static_cast< Fog * >( X3DBindableNode::getActive( "Fog" ) );
00073 }
00074
00076 virtual void renderFog();
00077
00078 #ifdef USE_HAPTICS
00082 virtual void traverseSG( TraverseInfo &ti ) {
00083 Matrix3f m = ti.getAccForwardMatrix().getScaleRotationPart();
00084 Vec3f scaled_v = m * Vec3f( 0, 0, 1 );
00085 scale_local_to_global = scaled_v.length();
00086 }
00087 #endif
00088
00090 static H3DNodeDatabase database;
00091 protected:
00093 H3DFloat scale_local_to_global;
00094
00095 };
00096 }
00097
00098 #endif