VR-Forces 4.0.4 Class Documentation
include/vrvOsg/DtOsgFluidFrictionOperator.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)