![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtOsgFluidFrictionOperator.h,v $ $Revision: 1.7 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtOsgFluidFrictionOperator_H_ 00014 #define DtOsgFluidFrictionOperator_H_ 00015 00016 #include <vrvOsg/vrvOsg.h> 00017 00018 #include <osgParticle/Operator> 00019 #include <osgParticle/FluidFrictionOperator> 00020 #include <osgParticle/Particle> 00021 #include <osgParticle/Program> 00022 00023 namespace makVrv 00024 { 00029 class DT_DLL_VRVOSG DtOsgFluidFrictionOperator : public osgParticle::Operator 00030 { 00031 public: 00032 00034 DtOsgFluidFrictionOperator(); 00035 00037 DtOsgFluidFrictionOperator(const DtOsgFluidFrictionOperator& copy, 00038 const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); 00039 00041 static DtOsgFluidFrictionOperator* fromOsgFluidFrictionOperator( 00042 osgParticle::FluidFrictionOperator* osgOp); 00043 00044 META_Object(makVrv, DtOsgFluidFrictionOperator); 00045 00047 void setFluidDensity(float d); 00048 00050 float getFluidDensity() const; 00051 00053 void setFluidViscosity(float v); 00054 00056 float getFluidViscosity() const; 00057 00059 void setWind(const osg::Vec3& wind) { _wind = wind; } 00060 00062 const osg::Vec3& getWind() const { return _wind; } 00063 00065 void setOverrideRadius(float r); 00066 00068 float getOverrideRadius() const; 00069 00071 void setFluidToAir(); 00072 00074 void setFluidToWater(); 00075 00077 void operate(osgParticle::Particle* P, double dt); 00078 00080 void beginOperate(osgParticle::Program* prg); 00081 00082 protected: 00083 virtual ~DtOsgFluidFrictionOperator() {} 00084 DtOsgFluidFrictionOperator &operator=(const DtOsgFluidFrictionOperator &) { return *this; } 00085 00086 private: 00087 float viscosityCoefficient; 00088 float densityCoefficient; 00089 float _density; 00090 float _viscosity; 00091 float _ovr_rad; 00092 osg::Vec3 _wind; 00093 osgParticle::Program* _current_program; 00094 }; 00095 } 00096 00097 #endif 00098