Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef TURBULENCE_FSACTOR_H
00012 #define TURBULENCE_FSACTOR_H
00013
00014 #include "Apex.h"
00015 #include "Shape.h"
00016
00017 namespace nvidia
00018 {
00019 namespace apex
00020 {
00021
00022 class TurbulenceFSAsset;
00023 class TurbulenceRenderable;
00024
00028 class TurbulenceFSActor : public Actor, public Renderable
00029 {
00030 protected:
00031 virtual ~TurbulenceFSActor() {}
00032
00033 public:
00034
00036 virtual TurbulenceFSAsset* getTurbulenceFSAsset() const = 0;
00037
00039 virtual void setEnabled(bool enable) = 0;
00040
00048 virtual void setPose(PxMat44 pose) = 0;
00049
00057 virtual PxMat44 getPose() const = 0;
00058
00060 virtual PxVec3 getGridBoundingBoxMin() = 0;
00062 virtual PxVec3 getGridBoundingBoxMax() = 0;
00063
00065 virtual PxVec3 getGridSize() = 0;
00066
00068 virtual void getGridDimensions(uint32_t &gridX,uint32_t &gridY,uint32_t &gridZ) = 0;
00069
00071 virtual void setGridDimensions(const uint32_t &gridX, const uint32_t &gridY, const uint32_t &gridZ) = 0;
00072
00080 virtual void setUpdatesPerFrame(float upd) = 0;
00082 virtual float getUpdatesPerFrame() const = 0;
00083
00089 virtual void getVelocityField(void** x, void** y, void** z, uint32_t& sizeX, uint32_t& sizeY, uint32_t& sizeZ) = 0;
00090
00092 virtual void setSampleVelocityFieldEnabled(bool enabled) = 0;
00093
00095 virtual void setAngularVelocityMultiplierAndClamp(float angularVelocityMultiplier, float angularVelocityClamp) = 0;
00096
00098 virtual void setLinearVelocityMultiplierAndClamp(float linearVelocityMultiplier, float linearVelocityClamp) = 0;
00099
00101 virtual void setVelocityFieldFade(float fade) = 0;
00102
00104 virtual void setFluidViscosity(float viscosity) = 0;
00105
00107 virtual void setVelocityFieldCleaningTime(float time) = 0;
00108
00110 virtual void setVelocityFieldCleaningDelay(float time) = 0;
00111
00116 virtual void setVelocityFieldCleaningIntensity(float a) = 0;
00117
00122 virtual void setUseHeat(bool enable) = 0;
00123
00125 virtual void setHeatBasedParameters(float forceMultiplier, float ambientTemperature, PxVec3 heatForceDirection, float thermalConductivity) = 0;
00126
00131 virtual void setUseDensity(bool enable) = 0;
00132
00134 virtual bool getUseDensity(void) const = 0;
00135
00137 virtual void setDensityBasedParameters(float diffusionCoef, float densityFieldFade) = 0;
00138
00140 virtual void getDensityGridDimensions(uint32_t &gridX,uint32_t &gridY,uint32_t &gridZ) = 0;
00141
00146 virtual void setExternalVelocity(PxVec3 vel) = 0;
00147
00149 virtual void setFieldVelocityMultiplier(float value) = 0;
00150
00152 virtual void setFieldVelocityWeight(float value) = 0;
00153
00155 virtual void setNoiseParameters(float noiseStrength, PxVec3 noiseSpacePeriod, float noiseTimePeriod, uint32_t noiseOctaves) = 0;
00156
00158 virtual void setDensityTextureRange(float minValue, float maxValue) = 0;
00159
00161 virtual const char *getVolumeRenderMaterialName(void) const = 0;
00162
00164 virtual void setCurrentScale(float scale) = 0;
00165
00167 virtual float getCurrentScale(void) const = 0;
00168
00170 virtual bool getUseFlame(void) const = 0;
00171
00173 virtual void getFlameGridDimensions(uint32_t &gridX, uint32_t &gridY, uint32_t &gridZ) const = 0;
00174
00181 virtual TurbulenceRenderable* acquireRenderableReference() = 0;
00182
00183 };
00184
00185 }
00186 }
00187
00188 #endif // TURBULENCE_FSACTOR_H